# Presentation: 677929

## ECHO

**ECHO**

**Backtrack Algorithm and MISR Backtrack Example**
***Lei Fang***
***January 23, 2007***

## Agenda

**What is Backtrack?**
**How do data providers  configure orbit data?**
**Example: MISR Backtrack**
**How does ECHO search for orbit data?**

## What is Backtrack?

**An algorithm for searching orbit swath data (developed by Ross Swick from NSIDC, see **_**[http://geospatialmethods.org/bosa/](http://geospatialmethods.org/bosa/)**_** for more details)**

**A typical orbit path**

**Notes:**
Orbit path is the result of rotation of earth and satellite parameters (swath width, declination/inclination angle, period). An orbit data may have full-orbit spatial coverage, partial-orbit, or multi-orbit.

## What is Backtrack?

**The same orbit path showing on map**

**Tough to represent spatial coverage in polar area with** **conventional search solution --Geodetic/Cartesian polygon**

**Notes:**
Bizarre look in two polar areas, small area but cover all longitude (-180, 180)

## What is Backtrack?

**Backtrack solution: ****“If you are searching  for orbital data, it’s probably a good idea to use orbits.”**** –Ross Swick**

## What is Backtrack?

**Backtrack orbit model**
- Three parameters to define an orbit:
- Instrument swath width (in kilometers)
- Satellite declination or inclination (in degrees)
- Satellite period (in minutes)
**Orbit data representation**
- Three parameters to represent orbit data:
- Equatorial crossing longitude
- Start circular latitude (or start latitude and start direction)
- End circular latitude (or end latitude and end direction)

## How do data providers configure orbit data?

**Add orbit parameters to Collection Metadata (ECHO format)**
**<Spatial> <SpatialCoverageType>Horizontal</SpatialCoverageType> **<OrbitParameters>
-     **<SwathWidth>400</SwathWidth>       **
**    ****<Period>98.88</Period>    **
**    ****<InclinationAngle>98.2</InclinationAngle> **
-     </OrbitParameters>** **
**    ****<GranuleSpatialRepresentation> **
**<Orbit/>**
**    ****</GranuleSpatialRepresentation> **
**</Spatial> **

## How do data providers configure orbit data?

**Add orbit data to Granule Metadata (ECHO format)**
**<Spatial> **
**  **<SpatialDomainContainer>** **
**     **<HorizontalSpatialDomainContainer>
**   ****<Orbit>    **
**     ****<AscendingCrossing>160.14462465545338</AscendingCrossing>                  <StartLat>69.021242</StartLat> **
**     ****<StartDirection>D</StartDirection> **
**     ****<EndLat>-68.995831</EndLat> **
**     ****<EndDirection>A</EndDirection> **
**   ****</Orbit> **
-     </HorizontalSpatialDomainContainer>
-   </SpatialDomainContainer>** **
**</Spatial> **

## Example: MISR Backtrack

**Multi-angle Imaging Spectro-Radiometer (MISR) data helps to understand Earth's climate.**
**See **_**[http://terra.nasa.gov/About/MISR/about_misr.html](http://terra.nasa.gov/About/MISR/about_misr.html)**_** **
**   ****for more information **
**Configuring MISR orbit data requires additional work**
- Missing information in the metadata file such as orbit parameters
- Spatial data elements are at different places in metadata file
- Some information is stored in a separate file
**Solution:**
- Add missing information to metadata file
- Modify BMGT-to-ECHO XSLT ingest script

## Example: MISR Backtrack

**Add missing orbit parameters to collection metadata**
**<Spatial> <SpatialCoverageType>Horizontal</SpatialCoverageType> <OrbitParameters> **
**    ****<SwathWidth>400</SwathWidth>       **
**    ****<Period>98.88</Period>    **
**    ****<InclinationAngle>98.2</InclinationAngle> **
**    ****</OrbitParameters> **
**    ****<GranuleSpatialRepresentation> **
**<Orbit/> **
**    ****</GranuleSpatialRepresentation> **
**</Spatial> **

## Example: MISR Backtrack

**Modify BMGT-to-ECHO XSLT ingest script to weave orbit data for granule metadata**
**AscendingCrossing**
**The data under** **EquatorCrossingLongitude element in BMGT metadata input file is a ****descending**** crossing:**
-   <OrbitCalculatedSpatialDomain>
-       <OrbitCalculatedSpatialDomainContainer>
-         <OrbitNumber>10429</OrbitNumber>
**        ****<EquatorCrossingLongitude>-32.2053753445466</EquatorCrossingLongitude>**       <EquatorCrossingDate>2001-12-03</EquatorCrossingDate> <EquatorCrossingTime>12:42:19.8204850</EquatorCrossingTime>
-      </OrbitCalculatedSpatialDomainContainer>
-    </OrbitCalculatedSpatialDomain>** **
** ****XSLT script:**
**Extracts descending crossing: -32**
**Adds placement -167 to adjust to ascending crossing: -32-168**
**Normalizes to (-180, 180): -32-168+360 = 160**
**Adds to spatial section to ECHO format output : <AscendingCrossing>160</AscendingCrossing>**

## Example: MISR Backtrack

**Latitude**
**The data under PSA element in BMGT metadata input file as a block number, a separate block-latitude lookup table file is provided:**
-      <PSAs>
-           <PSA>
-               <PSAName>SP_AM_MISR_EndBlock</PSAName>
-               <PSAValue>177</PSAValue>
-           </PSA>
-           <PSA>
-               <PSAName>SP_AM_MISR_StartBlock</PSAName>
-               <PSAValue>35</PSAValue>
-           </PSA>
-         </PSAs>
**XSLT script:**
**Extracts value from SP_AM_MISR_StartBlock: 35**
**Looks up latitude from lookup table: 69**
**Determines the direction from path pattern in the lookup table: descending**
**Applies to end latitude: latidue is -68 for block 177, and it is ascending**
**Adds to spatial section to ECHO format output : **
-              **<StartLat>69</StartLat> **
**           ****<StartDirection>D</StartDirection> **
**           ****<EndLat>-68</EndLat> **
**           ****<EndDirection>A</EndDirection> **

## How does ECHO search for orbit data?

**User specifies a regular spatial window**** **
**<granuleCondition> **
**   ****<spatial> **
**       ****<Polygon> **
**          ****<LRing> **
**            ****<CList****>-90,49,-90,39,-70,39,-70,49,-90,49****</CList> **
**          ****</LRing> **
**       ****</Polygon> **
**       ****<SpatialType> **
**         ****<list> <value>****ORBIT****</value> </list> **
**       ****</SpatialType> **
**   ****</spatial> **
**</granuleCondition> **

## How does ECHO search for orbit data?

**Backtrack calculates from both ascending and descending path for equatorial longitude crossings and start/end circular latitudes according to user’s query window**

## How does ECHO search for orbit data?

**Start Circular Lat = 39N**

**End Circular Lat = 49N**

- Search ascending path

## How does ECHO search for orbit data?

- Search descending path

**Start Circular Lat = 131**

**End Circular Lat = 141**

## How does ECHO search for orbit data?

**Sample SQL where condition:**
- ( ( ( (start_clat between 39.0 and 49.0) or
- (end_clat between 39.0 and 49.0) or
- (start_clat < 39.0 and end_clat > 49.0) ) and
- ( ascending_crossing between -80.0 and -64.0)  ) or
- ( (start_clat between 131.0 and 141.0) or
- (end_clat between 131.0 and 141.0) or
- (start_clat < 131.0 and end_clat > 141.0) ) and
- (ascending_crossing between 88.0 and 106.0) ) ) )