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.
- 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
- 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
- Android Architecture Components
- Google Maps API for Android
- RxJava 2 and RxAndroid 2
- Retrofit 2
- Simple XML
- Gson
- OkHttp3
- Espresso
- Mockito
- TapTargetView
To build, replace the API key value with your own API key. You can run the included tests without a key.
- RecyclerView drag and swipe tutorial
- TODO-MVP samples
- Event Bus with RxJava tutorial
- Android MVP Unit Testing
- Testing RecyclerView with Espresso
- RxJava Android Samples
- GithubBrowserSample
- GIBS API for Developers
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.