Skip to content

Android client for NASA GIBS - a mobile version of Worldview

Notifications You must be signed in to change notification settings

IamTechknow/Terraview

Repository files navigation

Terraview

Get it on Google Play
Terraview is a REST client for NASA's Global Imagery Browse Services (GIBS). GIBS is a public API providing access to satellite data and imagery from the EOS (Earth Observing System) and A-Train satellites. While this application is not directly related to NASA's Worldview, I worked on improvements on the project in an internship in NASA's Goddard Space Flight Center and created this based on the idea a better interface could be made for mobile devices.

Highlights

  • Implemented with MVP (model view presenter) architecture, with ViewModel to persist current data. MVVM implementation in separate branch
  • Google Maps API used to present web tile imagery from GIBS
  • Room library used for database and to create many-to-many relationships among the data
  • Retrofit 2 used for networking to convert JSON and XML endpoints to ordinary interfaces
  • RxJava used to implement an event bus and to coordinate asynchronous queries with Room and Retrofit APIs
  • TapTargetView used to create a simple app tour
  • RecyclerView list with support for dragging and swiping items
  • Visualization of Colormaps for supported overlay layers
  • Autocomplete search feature for layer picker UI with custom ContentProvider
  • Metadata is obtained and parsed from Worldview, licensed under NASA's open source license

Testing Highlights

  • Unit tests for the Presenters and instrumentation tests for Room data access objects (DAOs)
  • Espresso tests for the map and animation dialog UI (more in MVVM branch)
  • Mockito framework used to mock the Views
  • Mockito doAnswer-when idiom used for mock implementation of Retrofit APIs
  • Dependency injection throughout the app to make testing viable

Screenshots

Libraries

Requirements

To build, replace the API key value with your own API key. You can run the included tests without a key.

Helpful Tutorials and samples I used:

Acknowledgements

We acknowledge the use of imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS, https://earthdata.nasa.gov) with funding provided by NASA/HQ.