Environmental data retrieval API query parser
Project description
OGC Environmental Data Retrieval Query Parser
The OGC API Environmental Data Retrieval query parser makes it easy to parse and use the EDR queries.
Install
pip install edr-query-parser
Usage
Collection Name Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/position?parameter-name=param1,param2'
'&coords=POINT(57.819 -3.966)&datetime=2019-09-07T15:50-04:00/2019-09-07T15:50-05:00'
'&f=geoJSON&crs=84&z=500/400')
print(edr_query.collection_name) #my_collection
Query Type Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/position?parameter-name=param1,param2'
'&coords=POINT(57.819 -3.966)&datetime=2019-09-07T15:50-04:00/2019-09-07T15:50-05:00'
'&f=geoJSON&crs=84&z=500/400')
if edr_query.is_instances:
print(edr_query.instances_id)
else:
print(edr_query.query_type.is_position) # True
print(edr_query.query_type.is_radius) # False
print(edr_query.query_type.is_locations) # False
print(edr_query.query_type.is_corridor) # False
print(edr_query.query_type.is_area) # False
print(edr_query.query_type.is_trajectory) # False
print(edr_query.query_type.is_cube) # False
print(edr_query.query_type.is_items) # False
print(edr_query.query_type.value) # position
location ID Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/locations/aberdeen?'
'parameter-name=param1,param2&datetime=2019-09-07T15:50-04:00/2019-09-07T15:50-05:00&'
'f=geoJSON&crs=84&z=500/400')
if edr_query.query_type.is_locations:
print(edr_query.locations_id) #aberdeen
coords Example
The EDR query parser returns a WKT object
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/position?'
'coords=POINT(57.819 -3.966)&datetime=2019-09-07T15:50-04:00/2019-09-07T15:50-05:00'
'¶meter-name=parameter1,parameter2&f=geoJSON&crs=84&z=all')
if edr_query.coords.is_set:
print(edr_query.coords.coords_type) # Point
if edr_query.coords.coords_type == 'Point':
print(edr_query.coords.coordinates[0]) # 57.819
print(edr_query.coords.coordinates[1]) # -3.966
parameter-name Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/'
'position?coords=POINT(57.819 -3.966)'
'&datetime=2019-09-07T15:50-04:00/2019-09-07T15:50-05:00'
'¶meter-name=parameter1,parameter2&f=geoJSON&crs=84&z=all')
if edr_query.parameter_name.is_set:
print(edr_query.parameter_name.list) # [parameter1, parameter2]
datetime Example
The EDR query parser returns a dateutil object
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/'
'position?coords=POINT(57.819 -3.966)'
'&datetime=2019-09-07T15:50-04:00/2019-09-07T15:50-05:00'
'¶meter-name=parameter1,parameter2&f=geoJSON&crs=84&z=all')
if edr_query.datetime.is_set:
if edr_query.datetime.is_interval:
print(edr_query.datetime.interval_from.timestamp(), edr_query.datetime.interval_to.timestamp())
elif edr_query.datetime.is_interval_open_end:
print(edr_query.datetime.interval_open_end.timestamp())
elif edr_query.datetime.is_interval_open_start:
print(edr_query.datetime.interval_open_start.timestamp())
else:
print(edr_query.datetime.exact.timestamp())
f Parameter Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/position?parameter-name=param1,param2'
'&coords=POINT(57.819 -3.966)&datetime=2019-09-07T15:50-04:00/2019-09-07T15:50-05:00'
'&f=geoJSON&crs=84&z=500/400')
print(edr_query.format.value) # geoJSON
z Parameter Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/'
'position?coords=POINT(57.819 -3.966)'
'&datetime=2019-09-07T15:50-04:00/2019-09-07T15:50-05:00'
'¶meter-name=parameter1,parameter2&f=geoJSON&crs=84&z=12/240')
if edr_query.z.is_set:
if edr_query.z.is_interval:
print(edr_query.z.interval_from, edr_query.z.interval_to)
if edr_query.z.is_list:
print(edr_query.z.interval_from, edr_query.z.list)
crs Parameter Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/'
'position?coords=POINT(57.819 -3.966)'
'&datetime=2019-09-07T15:50-04:00/2019-09-07T15:50-05:00'
'¶meter-name=parameter1,parameter2&f=geoJSON&crs=84&z=12/240')
print(edr_query.crs.value) # 84
bbox Parameter Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/items/some_item/?bbox=12,13,20,21')
print(edr_query.bbox.list) # [12.0, 13.0, 20.0, 21.0]
Pagination limit Parameter Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/items?limit=100')
print(edr_query.limit.value) # 100
Pagination next Parameter Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/items?next=token123')
print(edr_query.next.value) # "token123"
corridor-height Parameter Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/corridor?corridor-height=12'
'&corridor-width=5')
print(edr_query.corridor_height.value) # "12"
corridor-width Parameter Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/corridor?corridor-height=12'
'&corridor-width=5')
print(edr_query.corridor_width.value) # "5"
width-units Parameter Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/corridor?width-units=km')
print(edr_query.width_units.value) # "km"
height-units Parameter Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/corridor?height-units=km')
print(edr_query.height_units.value) # "km"
within Parameter Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/radius?within=10&within-units=km')
print(edr_query.within.value) # "10"
within-units Parameter Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/radius?within=10&within-units=km')
print(edr_query.within_units.value) # "km"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Close
Hashes for edr_query_parser-4.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6ac8d7955654ee7160bae5d8f4c06814c8140acb9c5f5023af498479edca495 |
|
MD5 | 9d07794c317fa99fe8fd916bcb360470 |
|
BLAKE2b-256 | af2616d295e51179eaafda394c812c45696300f95d0d76cb7610a0a2ea2a01ef |