Basic UsageΒΆ
There are several main classes used in PDSC: clients, metadata, and localizers. To begin, construct a client:
>>> import pdsc
>>> client = pdsc.PdsClient()
After constructing a PdsClient
, call one of its methods
to query observations:
>>> metadata = client.query_by_observation_id(
... 'hirise_rdr', 'PSP_005423_1780'
... )
>>> red_metadata = [m for m in metadata if 'RED' in m.product_id]
>>> len(red_metadata)
1
>>> red_metadata[0]
PdsMetadata(instrument='hirise_rdr', ...)
To map between pixel and latitude/longitude coordinates, construct a localizer
using the get_localizer()
method:
>>> rdr_localizer = pdsc.get_localizer(red_metadata[0])
>>> rdr_localizer.pixel_to_latlon(100, 200)
(-1.9184998785575753, 354.44753717949027)
You can also query for observations from another instrument overlapping a given observation:
>>> client.find_overlapping_observations(
... 'hirise_rdr', 'PSP_005423_1780', 'ctx'
... )
[u'B02_010341_1778_XI_02S005W', ..., u'T01_000873_1780_XI_02S005W']
Or, you can query for observations of a given location:
>>> client.find_observations_of_latlon('hirise_rdr', -4.5, 137.4)
[u'ESP_018854_1755', u'ESP_018920_1755', ..., u'PSP_010639_1755']
Finally, you can form more complex queries using conditions on metadata fields:
>>> client.query('hirise_rdr', [
... ('corner1_latitude', '>', -0.5),
... ('corner1_latitude', '<', 0.5)
... ])
[PdsMetadata(...), ..., PdsMetadata(...)]