ECHO Open Search ECHO Technical Interchange 050113 9

  • Slides: 16
Download presentation
ECHO Open Search ECHO Technical Interchange 05/01/13 9: 00 am EST Doug Newman

ECHO Open Search ECHO Technical Interchange 05/01/13 9: 00 am EST Doug Newman

Another API? • • Standard Lightweight / Simple RESTful Low entry cost

Another API? • • Standard Lightweight / Simple RESTful Low entry cost

Tools to follow along • Firefox Rest Client add-on http: //restclient. net/ • Chrome

Tools to follow along • Firefox Rest Client add-on http: //restclient. net/ • Chrome Advanced Rest Client add-on https: //chrome. google. com/webstore/detail/advanced-rest-client • IE – on your own • Command line curl

Things you need to know • • HTTP REST (GET) XML Atom

Things you need to know • • HTTP REST (GET) XML Atom

Open Search Descriptor Documents (1 of 2) http: //api. echo. nasa. gov/opensearch-beta/ https: //api.

Open Search Descriptor Documents (1 of 2) http: //api. echo. nasa. gov/opensearch-beta/ https: //api. echo. nasa. gov/opensearch-beta/datasets/descriptor_document. xml? client. Id=dug <? xml version="1. 0" encoding="UTF-8"? > <os: Open. Search. Description xmlns: os="http: //a 9. com/-/spec/opensearch/1. 1/" xmlns: echo="http: //www. echo. nasa. gov/esip" xmlns: georss="http: //a 9. com/-/opensearch/extensions/geo/1. 0/" xmlns: time="http: //a 9. com/-/opensearch/extensions/time/1. 0/" xmlns: esipdiscovery="http: //commons. esipfed. org/ns/discovery/1. 2/" esipdiscovery: version="1. 2" > <os: Short. Name>NASA ECHO Dataset Open Search</os: Short. Name> <os: Description>Open Search compliant NASA ECHO Dataset search that responds in the ATOM format with Open Search, Geo. RSS, Open Search Time and ECHO extensions. </os: Description> <os: Tags>ESIP ECHO NASA</os: Tags> <os: Contact>echodev@echo. nasa. gov</os: Contact> <os: Url type="application/atom+xml" index. Offset="0" template="https: //api. echo. nasa. gov/opensearchbeta/datasets. atom? keyword={os: search. Terms? }& instrument={echo: instrument? }& satellite={echo: satellite? }&amp ; bounding. Box={georss: box? }& geometry={geo: geometry? }& place. Name={geo: name? }& start. Time={time: start? }& end. Time={time: end? }& cursor={os: start. Index? }& number. Of. Results={os: count? }& uid={echo: uid? }&am p; client. Id=dug"> </os: Url> <os: Url type="text/html" index. Offset="0" template="https: //api. echo. nasa. gov/opensearchbeta/datasets. html? keyword={os: search. Terms? }& instrument={echo: instrument? }& satellite={echo: satellite? }& bounding. B ox={georss: box? }& geometry={geo: geometry? }& place. Name={geo: name? }& start. Time={time: start? }& end. Time={time : end? }& cursor={os: start. Index? }& number. Of. Results={os: count? }& client. Id=dug"> </os: Url> <os: Query role="example" echo: instrument="AMSR-E" echo: satellite="Aqua" title="Sample search" georss: box="-180. 0, -90. 0, 180. 0, 90. 0" time: start="2002 -0504 T 00: 00 -0400" time: stop="2009 -05 -04 T 00: 00 -0400"/> </os: Open. Search. Description>

Open Search Descriptor Documents (2 of 2) http: //api. echo. nasa. gov/opensearch-beta/ https: //api.

Open Search Descriptor Documents (2 of 2) http: //api. echo. nasa. gov/opensearch-beta/ https: //api. echo. nasa. gov/opensearch-beta/granules/descriptor_document. xml? client. Id=dug <? xml version="1. 0" encoding="UTF-8"? > <os: Open. Search. Description xmlns: os="http: //a 9. com/-/spec/opensearch/1. 1/" xmlns: echo="http: //www. echo. nasa. gov/esip" xmlns: georss="http: //a 9. com/-/opensearch/extensions/geo/1. 0/" xmlns: time="http: //a 9. com/-/opensearch/extensions/time/1. 0/" xmlns: esipdiscovery="http: //commons. esipfed. org/ns/discovery/1. 2/" esipdiscovery: version="1. 2" > <os: Short. Name>NASA ECHO Granule Search</os: Short. Name> <os: Description>Open Search compliant NASA ECHO Granule search that responds in the ATOM format with Open Search, Geo. RSS, Open Search Time and ECHO extensions. </os: Description> <os: Tags>ESIP ECHO NASA granule</os: Tags> <os: Contact>echodev@echo. nasa. gov</os: Contact> <os: Url type="application/atom+xml" index. Offset="0" template="https: //api. echo. nasa. gov/opensearchbeta/granules. atom? short. Name={echo: short. Name? }& version. Id={echo: version. Id? }& data. Center={echo: data. Center? }& bounding. Box={georss: box? }& geometry={geo: geometry? }& place. Name={geo: name ? }& start. Time={time: start? }& end. Time={time: end? }& cursor={os: start. Index? }& number. Of. Result s={os: count? }& uid={echo: uid? }& client. Id=dug"> </os: Url> <os: Url type="text/html" index. Offset="0" template="https: //api. echo. nasa. gov/opensearchbeta/granules. html? short. Name={echo: short. Name? }& version. Id={echo: version. Id? }& data. Center={echo: data. Cente r? }& bounding. Box={georss: box? }& geometry={geo: geometry? }& place. Name={geo: name? }& start. Time={ time: start? }& end. Time={time: end? }& cursor={os: start. Index? }& number. Of. Results={os: count? }& client. Id= dug"> </os: Url> <os: Query role="example" echo: short. Name="MOD 02 QKM" echo: version. Id="005" echo: data. Center="LAADS" georss: box="-180. 0, -90. 0, 180. 0, 90. 0" time: start="2002 -05 -04 T 00: 00 -0400" time: stop="2009 -05 -04 T 00: 00 -0400" title="Sample search" /> </os: Open. Search. Description>

Datasets https: //api. echo. nasa. gov: 443/opensearch-beta/datasets. atom <? xml version="1. 0" encoding="UTF-8"? >

Datasets https: //api. echo. nasa. gov: 443/opensearch-beta/datasets. atom <? xml version="1. 0" encoding="UTF-8"? > <feed esipdiscovery: version="1. 2" xmlns="http: //www. w 3. org/2005/Atom" xmlns: esipdiscovery="http: //commons. esipfed. org/ns/discovery/1. 2/" xmlns: os="http: //a 9. com/-/spec/opensearch/1. 1/"> <os: total. Results>916</os: total. Results> <os: items. Per. Page>10</os: items. Per. Page> <os: start. Index>1</os: start. Index> <entry xmlns: echo="http: //www. echo. nasa. gov/esip" xmlns: georss="http: //www. georss. org/georss/10" xmlns: gml="http: //www. opengis. net/gml" xmlns: time="http: //a 9. com/-/opensearch/extensions/time/1. 0/"> <id>C 1135 -SEDAC</id>. . . </entry>

Granules https: //api. echo. nasa. gov: 443/opensearch-beta/granules. atom <? xml version="1. 0" encoding="UTF-8"? >

Granules https: //api. echo. nasa. gov: 443/opensearch-beta/granules. atom <? xml version="1. 0" encoding="UTF-8"? > <feed esipdiscovery: version="1. 2" xmlns="http: //www. w 3. org/2005/Atom" xmlns: esipdiscovery="http: //commons. esipfed. org/ns/discovery/1. 2/" xmlns: os="http: //a 9. com/-/spec/opensearch/1. 1/"> <os: total. Results>50321</os: total. Results> <os: items. Per. Page>10</os: items. Per. Page> <os: start. Index>1</os: start. Index> <entry xmlns: echo="http: //www. echo. nasa. gov/esip" xmlns: georss="http: //www. georss. org/georss/10" xmlns: gml="http: //www. opengis. net/gml" xmlns: time="http: //a 9. com/-/opensearch/extensions/time/1. 0/"> <id>G 19324 -ASF</id> … </entry>

Links to interesting stuff • More searching <link href="https: //api. echo. nasa. gov/opensearch/granules/descriptor_document. xml?

Links to interesting stuff • More searching <link href="https: //api. echo. nasa. gov/opensearch/granules/descriptor_document. xml? client. Id=foo& s hort. Name=First. Dataset& version. Id=1& data. Center=OS_PROV_1" hreflang="en-US" rel="search" title="Custom ECHO Granule Open Search Descriptor Document" type="application/opensearchdescription+xml”> • Data <link href="http: //api. echo. nasa. gov/awesome. hdf" hreflang="en-US" rel=”data” type="application/hdfeos"/> • Metadata <link href="http: //api. echo. nasa. gov/catalog-rest/echo_catalog/datasets/C 1000 -OS_PROV_1. xml" hreflang="en-US" rel="described. By" title="Product metadata" type="application/xml"/> • Documentation <link href="http: //example. com/manual. pdf" hreflang="en-US" rel="described. By" title="Product manual" type="application/pdf"/> • Browse <link href="http: //browse. echo. nasa. gov/awesome. jpg" hreflang="en-US" rel="icon"/>

Search Parameters • Free text os: search. Terms datasets. atom? keyword=MODIS • Spatial geo:

Search Parameters • Free text os: search. Terms datasets. atom? keyword=MODIS • Spatial geo: box, geo: geometry granules. atom? bounding. Box=-180. 0, -90. 0, 180. 0, 90. 0 granules. atom? geometry=POINT (-5 -5) granules. atom? geometry=LINESTRING (5 5, 4 4) granules. atom? geometry=POLYGON ((30 10, 10 20, 40 40, 30 10)) • Temporal time: start. Time, time: end. Time datasets. atom? start. Time=2001 -01 -01 T 22: 00 Z datasets. atom? end. Time=2001 -01 -01 T 22: 00 Z • Traversing os: cursor, os: number. Of. Results granules. atom? cursor=1&number. Of. Results=10

ESIP compliance • Open Search Geo extension for spatial • Open Search Time extension

ESIP compliance • Open Search Geo extension for spatial • Open Search Time extension for temporal

OGC compliance • Search by unique id datasets. atom? uid=foo • Search by place

OGC compliance • Search by unique id datasets. atom? uid=foo • Search by place name granules. atom? place. Name=washington, DC

Extras • HTML rendering <os: Url type="text/html" index. Offset="0" template=”https: //api. echo. nasa. gov/opensearchbeta/datasets.

Extras • HTML rendering <os: Url type="text/html" index. Offset="0" template=”https: //api. echo. nasa. gov/opensearchbeta/datasets. html? keyword={os: search. Terms? }& instrument={echo: ins trument? }& satellite={echo: satellite? }& bounding. Box={georss: box? } & polygon={georss: polygon? }& line={echo: line? }& point={echo: point? }& start. Time={time: start? }& end. Time={time: end? }& curso r={os: start. Index? }& number. Of. Results={os: count? }& client. Id={echo: client. Id> </os: Url>

Caveats (1 of 2) ‘Home made explosives can kill! Do not mix weed killer

Caveats (1 of 2) ‘Home made explosives can kill! Do not mix weed killer and sugar!’ granules. atom? geometry=POLYGON ((30 10, 10 20, 40 40, 30 10))&number. Of. Results=1&cursor=GAZILLION ‘Don’t do this!’

Caveats (2 of 2) • No authentication • Subset of ECHO search capability* •

Caveats (2 of 2) • No authentication • Subset of ECHO search capability* • No ordering**

Questions?

Questions?