Пример #1
0
    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
Пример #3
0
    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')
Пример #4
0
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)
Пример #5
0
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
Пример #6
0
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