Skip to main content

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.

PyPI PyPI - License PyPI - Python Version Sonar Quality Gate Code style: black Codecov

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'
                           '&parameter-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'
                           '&parameter-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'
                           '&parameter-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'
                           '&parameter-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'
                           '&parameter-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)

Table of built distributions (wheels) for edr-query-parser 4.3.4
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

4.3.4 This release

1 release file

4.3.3

1 release file

4.2.1

1 release file

4.2.0

1 release file

4.1.3

1 release file

4.1.2

1 release file

4.1.1

1 release file

4.1.0

1 release file

4.0.4

1 release file

4.0.3

1 release file

4.0.2

1 release file

4.0.1

1 release file

4.0.0

1 release file

3.2.14

1 release file

3.2.13

1 release file

3.2.12

1 release file

3.2.11

1 release file

3.2.10

1 release file

3.2.9

1 release file

3.2.8

1 release file

3.2.7

2 release files

3.2.6

2 release files

3.2.5

2 release files

3.2.4

2 release files

3.2.3

2 release files

3.2.2

2 release files

3.2.1

2 release files

3.2.0

2 release files

3.1.1

2 release files

3.1

2 release files

3.0

2 release files

2.7

2 release files

2.6

2 release files

2.5

2 release files

2.4

2 release files

2.3

2 release files

2.2

2 release files

2.1

2 release files

2.0

2 release files

1.4

2 release files

1.3

2 release files

1.2

2 release files

1.1

2 release files

1.0

2 release files

0.5

2 release files

0.4

2 release files

0.3

2 release files

0.2

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page