def test_raise_for_missing_instance_id(self): config = SHConfig() config.instance_id = 'xxx' config.raise_for_missing_instance_id() config.instance_id = '' with self.assertRaises(ValueError): config.raise_for_missing_instance_id()
def login_config(CLIENT_ID, CLIENT_SECRET, instance_id): config = SHConfig() config.instance_id = instance_id if CLIENT_ID and CLIENT_SECRET: config.sh_client_id = CLIENT_ID config.sh_client_secret = CLIENT_SECRET if config.sh_client_id == '' or config.sh_client_secret == '' or config.instance_id == '': print( "Warning! To use Sentinel Hub services, please provide the credentials (client ID and client secret)." ) # config.save() return config
def test_reset(self): config = SHConfig() old_value = config.instance_id new_value = 'new' config.instance_id = new_value self.assertEqual(config.instance_id, new_value, 'New value was not set') self.assertEqual(config['instance_id'], new_value, 'New value was not set') self.assertEqual(config._instance.instance_id, old_value, 'Private value has changed') config.reset('ogc_base_url') config.reset(['aws_access_key_id', 'aws_secret_access_key']) self.assertEqual(config.instance_id, new_value, 'Instance ID should not reset yet') config.reset() self.assertEqual(config.instance_id, config._instance.CONFIG_PARAMS['instance_id'], 'Instance ID should reset')
def get_images(coords, folder): INSTANCE_ID = 'f4531504-b71f-4dc9-a931-73be0f9b97d0' if INSTANCE_ID: config = SHConfig() config.instance_id = INSTANCE_ID else: config = None '''for i in range(int(len(coords)/2)): # area of interest mine_bbox = BBox(bbox=coords[i], crs=CRS.WGS84) wcs_true_color_request = WcsRequest( data_folder = folder, data_source = DataSource.SENTINEL2_L2A, layer='TRUE-COLOR-S2-L2A', bbox=mine_bbox, resx = 15, resy = 15, maxcc = 0.1, config=config ) wcs_true_color_img = wcs_true_color_request.get_data(save_data=True)''' for i in range(10000): # area of interest mine_bbox = BBox(bbox=coords[i], crs=CRS.WGS84) wms_true_color_request = WmsRequest( data_folder=folder, data_source=DataSource.SENTINEL2_L2A, layer='TRUE-COLOR-S2-L2A', bbox=mine_bbox, width=700, height=700, maxcc=0.1, config=config) wms_true_color_img = wms_true_color_request.get_data(save_data=True)
import matplotlib.pyplot as plt import numpy as np from sentinelhub import SHConfig from sentinelhub import MimeType, CRS, BBox, SentinelHubRequest, SentinelHubDownloadClient, \ DataSource, bbox_to_dimensions, DownloadRequest INSTANCE_ID = 'b47aa1bf-338a-437d-b48c-29d864e8735a' # In case you put instance ID into configuration file you can leave this unchanged if INSTANCE_ID: config = SHConfig() config.instance_id = INSTANCE_ID else: config = None def plot_image(image, factor=1): """ Utility function for plotting RGB images. """ fig = plt.subplots(nrows=1, ncols=1, figsize=(15, 7)) if np.issubdtype(image.dtype, np.floating): plt.imshow(np.minimum(image * factor, 1)) else: plt.imshow(image) plt.show() betsiboka_coords_wgs84 = [46.16, -16.15, 46.51, -15.58] resolution = 60
from shapely.wkt import loads import urllib.request as request import json # from visualisation import plot_water_body from geom_utils import get_bbox, get_optimal_resolution from sh_requests import get_optical_data, get_S2_request, get_S2_wmsrequest from s2_water_extraction import extract_surface_water_area_per_frame, surface_water_area_with_dem_veto from sentinelhub import MimeType, CRS, BBox, SentinelHubRequest, SentinelHubDownloadClient, \ DataCollection, bbox_to_dimensions, DownloadRequest import geopandas as gpd import datetime as dt from sentinelhub import SHConfig from sentinelhub import WmsRequest, WcsRequest, MimeType, CRS, BBox, DataCollection config = SHConfig() config.instance_id = 'ebb43985-6aca-476b-9719-fce4e7a54d60' # get area betsiboka_coords_wgs84 = [28.828, 41.179, 28.913, 41.221] # lon1,lat1,lon2,lat2 resolution = 5 betsiboka_bbox = BBox(bbox=betsiboka_coords_wgs84, crs=CRS.WGS84) betsiboka_size = bbox_to_dimensions(betsiboka_bbox, resolution=resolution) resx, resy = get_optimal_resolution(betsiboka_bbox) # get water polygon file = '/home/cak/Desktop/lake_extraction/water_observe_old/data/data.geojson' # water_polygon = gpd.read_file(file) with open(file) as f: data = json.load(f)
(52.5558, 13.2860), (48.1062, 16.5685), (52.1672369, 20.9678911), (47.451542, 8.564572)] # defines the region around the AOI; grid_size x grid_size grid of blocks, each with size block_width x block_height in degrees; grid_size must be an odd number block_width = 0.15 block_height = 0.10 grid_size = 7 # defines when a block is worth being processed cloud_threshold = 0.9 cloud_max_cover = 0.3 min_valid_area = 0.9 # sentinel-hub credentials config = SHConfig() config.instance_id = '***REMOVED***' config.sh_client_id = '***REMOVED***' config.sh_client_secret = '***REMOVED***' # ---------------------------------------------------------------------------------------------------------- # # Helper functions # # ---------------------------------------------------------------------------------------------------------- # # measures the distance in meters between two geographic coordinates def geo_dist(lat1, lon1, lat2, lon2): R = 6378.137 d_lat = lat2 * np.pi / 180.0 - lat1 * np.pi / 180.0 d_lon = lon2 * np.pi / 180.0 - lon1 * np.pi / 180.0 a = np.sin(d_lat / 2.0) * np.sin(d_lat / 2.0) + np.cos( lat1 * np.pi / 180.0) * np.cos(lat2 * np.pi / 180.0) * np.sin(
import os import fiona import datetime import numpy as np import pandas as pd from shapely.geometry import shape from oauthlib.oauth2 import BackendApplicationClient from requests_oauthlib import OAuth2Session client_id = '' client_secret = '' config = SHConfig() config.instance_id = '' config.aws_access_key_id = '' config.aws_secret_access_key = '' """ config.sh_client_id = client_id config.sh_client_secret = client_secret """ # Create a session client = BackendApplicationClient(client_id=client_id) oauth = OAuth2Session(client=client) # Get token for the session token = oauth.fetch_token(token_url='https://services.sentinel-hub.com/oauth/token', client_id=client_id, client_secret=client_secret) # All requests using this session will have an access token automatically added