OGC Environmental Data Retrieval API Query Parser
The OGC Environmental Data Retrieval API query parser makes it easy to use the EDR queries in your python project.
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.instance_id: #is it an instance
print(edr_query.instance_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.location_id) #aberdeen
item ID Example
from edr_query_parser import EDRQueryParser
edr_query = EDRQueryParser('https://somewhere.com/collections/my_collection/items/2019-09-07')
if edr_query.query_type.is_items:
print(edr_query.item_id) #2019-09-07
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 Parameter Example
The EDR query parser converts the datetime parameter into a number of properties with the date properties being expressed as a datetime 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"
Metadata
Release files for edr-query-parser 4.3.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| edr_query_parser-4.3.4-py3-none-any.whl | Python 3 | none | any | Details |
Release files / edr_query_parser-4.3.4-py3-none-any.whl
| Download URL | edr_query_parser-4.3.4-py3-none-any.whl |
|---|---|
| Size | 20.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3b6ca90a6085695f2214d8161297591037fee483befa16bef253e72d11fd7728
|
|
BLAKE2b-256 checksum How to use checksums |
710cfc8a503629f2f46ccec73d98457dabe63ba0be67654dcbb8e1915041ccc5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.1
|