ECHO Open Search ECHO Technical Interchange 050113 9
- Slides: 16
ECHO Open Search ECHO Technical Interchange 05/01/13 9: 00 am EST Doug Newman
Another API? • • Standard Lightweight / Simple RESTful Low entry cost
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
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? }& ; 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. 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"? > <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"? > <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? 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: 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 for temporal
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. 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 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* • No ordering**
Questions?
- Technical interchange meeting template
- [-n $home] 2 echo $? 3 [-z shome] 4 echo $?
- 영국 beis
- Rule interchange format
- Addition and subtraction of hexadecimal numbers
- E adesso
- Future of electronic data interchange
- Electronic data interchange
- Verbal interchange
- Interchange kets
- Extended binary coded decimal interchange code
- Extended binary coded decimal interchange code
- Interchange 2 unit 1
- American standard code for information interchange
- Eb xml
- Interchange factor