Source code for eemont.geometry

import ee
import geopy
from geopy.geocoders import get_geocoder_for_service
from .extending import extend
from .common import _retrieve_location
from .common import _lnglat_from_location


[docs]@extend(ee.geometry.Geometry, static=True) def BBoxFromQuery(query, geocoder="nominatim", **kwargs): """Constructs an ee.Geometry describing a bounding box from a query submitted to a geodocer using the geopy package. Tip ---------- Check more info about constructors in the :ref:`User Guide<Constructors>`. Parameters ---------- query : str Address, query or structured query to geocode. geocoder : str, default = 'nominatim' Geocoder to use. One of 'nominatim' or 'arcgis'. Please visit https://geopy.readthedocs.io/ for more info. **kwargs : Keywords arguments for geolocator.geocode(). The user_agent argument is mandatory (this argument can be set as user_agent = 'my-gee-username' or user_agent = 'my-gee-app-name'). Please visit https://geopy.readthedocs.io/ for more info. Returns ------- ee.Geometry.Polygon Geometry describing a bounding box from the specified query. See Also -------- PointFromQuery : Constructs an ee.Geometry describing a point from a query submitted to a geodocer using the geopy package. MultiPointFromQuery : Constructs an ee.Geometry describing a multi-point from a query submitted to a geodocer using the geopy package. Examples -------- >>> import ee, eemont >>> ee.Authenticate() >>> ee.Initialize() >>> ee.Geometry.BBoxFromQuery('Seattle',user_agent = 'my-gee-eemont-query') ee.Geometry({ "functionInvocationValue": { "functionName": "GeometryConstructors.Polygon", "arguments": { "coordinates": { "constantValue": [ [ [ -122.45969600000001, 47.7341357 ], [ -122.45969600000001, 47.4810022 ], [ -122.224433, 47.4810022 ], [ -122.224433, 47.7341357 ] ] ] }, "geodesic": { "constantValue": false } } } }) """ if geocoder not in ["nominatim", "arcgis"]: raise Exception('Invalid geocoder! Use one of "nominatim" or "arcgis".') location = _retrieve_location(query, geocoder, True, **kwargs) if geocoder == "nominatim": BBox = location.raw["boundingbox"] return ee.Geometry.BBox( float(BBox[2]), float(BBox[0]), float(BBox[3]), float(BBox[1]) ) elif geocoder == "arcgis": BBox = location.raw["extent"] return ee.Geometry.BBox(BBox["xmin"], BBox["ymin"], BBox["xmax"], BBox["ymax"]) else: raise Exception('Invalid geocoder! Use one of "nominatim" or "arcgis".')
[docs]@extend(ee.geometry.Geometry, static=True) def PointFromQuery(query, geocoder="nominatim", **kwargs): """Constructs an ee.Geometry describing a point from a query submitted to a geodocer using the geopy package. This returns exactly one pair of coordinates. Tip ---------- Check more info about constructors in the :ref:`User Guide<Constructors>`. Parameters ---------- query : str Address, query or structured query to geocode. geocoder : str, default = 'nominatim' Geocoder to use. Please visit https://geopy.readthedocs.io/ for more info. **kwargs : Keywords arguments for geolocator.geocode(). The user_agent argument is mandatory (this argument can be set as user_agent = 'my-gee-username' or user_agent = 'my-gee-app-name'). Please visit https://geopy.readthedocs.io/ for more info. Returns ------- ee.Geometry.Point Geometry describing a point from the specified query. See Also -------- BBoxFromQuery : Constructs an ee.Geometry describing a bounding box from a query submitted to a geodocer using the geopy package. MultiPointFromQuery : Constructs an ee.Geometry describing a multi-point from a query submitted to a geodocer using the geopy package. Examples -------- >>> import ee, eemont >>> ee.Authenticate() >>> ee.Initialize() >>> ee.Geometry.PointFromQuery('Mt. Rainier, USA',user_agent = 'my-gee-eemont-query') ee.Geometry({ "functionInvocationValue": { "functionName": "GeometryConstructors.Point", "arguments": { "coordinates": { "constantValue": [ -121.757682, 46.8521484 ] } } } }) """ location = _retrieve_location(query, geocoder, True, **kwargs) return ee.Geometry.Point(_lnglat_from_location(location))
[docs]@extend(ee.geometry.Geometry, static=True) def MultiPointFromQuery(query, geocoder="nominatim", **kwargs): """Constructs an ee.Geometry describing a multi-point from a query submitted to a geodocer using the geopy package. This returns all pairs of coordinates retrieved by the query. Tip ---------- Check more info about constructors in the :ref:`User Guide<Constructors>`. Parameters ---------- query : str Address, query or structured query to geocode. geocoder : str, default = 'nominatim' Geocoder to use. Please visit https://geopy.readthedocs.io/ for more info. **kwargs : Keywords arguments for geolocator.geocode(). The user_agent argument is mandatory (this argument can be set as user_agent = 'my-gee-username' or user_agent = 'my-gee-app-name'). Please visit https://geopy.readthedocs.io/ for more info. Returns ------- ee.Geometry.MultiPoint Geometry describing a multi-point from the specified query. See Also -------- BBoxFromQuery : Constructs an ee.Geometry describing a bounding box from a query submitted to a geodocer using the geopy package. PointFromQuery : Constructs an ee.Geometry describing a point from a query submitted to a geodocer using the geopy package. Examples -------- >>> import ee, eemont >>> ee.Authenticate() >>> ee.Initialize() >>> ee.Geometry.MultiPointFromQuery('Mt. Rainier, USA',user_agent = 'my-gee-eemont-query') ee.Geometry({ "functionInvocationValue": { "functionName": "GeometryConstructors.MultiPoint", "arguments": { "coordinates": { "constantValue": [ [ -121.757682, 46.8521484 ], [ -76.9649751, 38.9415 ], [ -97.78689, 30.154197 ], [ -84.130098, 39.863452 ] ] } } } }) """ locations = _retrieve_location(query, geocoder, False, **kwargs) coords = [] for location in locations: coords.append([location.longitude, location.latitude]) return ee.Geometry.MultiPoint(coords)