The Challenge | Looking GLOBE-ally

Analyze and/or display data to communicate interesting findings or improve public understanding of our home planet.

Cli-Mates

Cli-Mates, a crowdsourcing weather app powered by NASA Open Data.

cli-mates

cli-mates

Background

Weather forecasters do a good job. We all use them in a daily basis. However, can be sometimes inaccurate but we believe that people could help to enhance the short sight forecast better.

Humans would work as ground sensors to provide info about climate facts that we might be interested in. Also, in order to support human awareness on the weather (historically speaking) we are providing them the ability to query climate features using GLOBE’s data.

Our app would give to live info about the current weather conditions and collect data from the users that can be used to collaboratively adapt the short term live info. Additionally, it would enable users to know stats about climate measurements from GLOBE like average temperature from the Miami surrounds in past years, the average temperature of a given date or even if it rained in the current date one year ago. Ultimately, this app gives to the users insights about weather condition variation overtime informing for instance that this year is 50% warmer than the last. If the user desires to jump in the query mode, we are ready to provide answers based on GLOBE’s data.

Challenges

  • sparse and irregular datasets sometimes
  • lack of a filesystem to extract data

On Data

The scope of the data design was made under the following premisses:

  1. (live) show the current weather conditions and temperature
  2. (historical) provide insights around metrics from the GLOBE database such as temperature, precipitation, clouds, humidity and so on. The way we generate the insights would be based on “variation” which we assume that would capture more interest from our audience.
  3. (historical) to give to the user the ability to query via UI (screen) or VOI (voice) GLOBE database

For this hackathon, we are using synchronic and historical data. Since we found just a few punctual datasets which cover non standard timespans, for the sake of the presentation and development, we have created our own datasets and datapoints.

Synchronic data (live data) is coming from Yahoo api.

Historical temperature and precipitation data we are using came from Nasa’s GLOBE project.

GLOBE Visualization System

https://vis.globe.gov/GLOBE/#

Advanced Data Access Tool

https://datasearch.globe.gov/

ClimateApp

The source code from the repository can be found in https://github.com/Ali-Rahimian/nasa-hackathon/. Please view the README file for further instructions.

About the App

ClimateApp is a simple weather app, that provides current weather information for nearby cities, as well for bookmarked locations. ClimateApp uses the OpenWeatherMap api to download weather data. Additionally the OpenWeatherMaps location database is directly bootstrapped into the app for quick access.

With ClimateApp you can:

  • See current weather information for bookmarked and nearby places via a list and a map view
  • Detailed weather information is offered in addition to the overviews
  • Add places as bookmarks via OpenWeatherMaps weather-station data base
  • Choose your preferred units (celsius/fahrenheit/kelvin & kilometres/miles)
  • Access previously loaded data offline
  • Please note that you need to supply your own OpenWeatherMap api key, in order to use the app. A free tier api key only allows for 60 requests per minute, which may only be sufficient for a single user. As the app is available at no charge and is open source, a paid tier api key can not be included.
  • Downloading data for a bookmarked location counts as one request. Downloading bulk data for nearby places also counts as a single request, regardless of the amount of results you choose. You can add bookmarks indefinitely, but for example exceeding the 60 requests limit with a free tier api key may result in a failure to download data (this scenario has not been tested and depends of the tier of your api key).

Goals of this Project

ClimateApp should help you as a reference for your iOS development. Whether you just started iOS development or want to learn more about Swift by seeing in action, this project is here for your guidance. Idealy you already have gained some experience or got your feet wet with mobile development. ClimateApp is created to teach basic principles of iOS development, including but not limited to:

  • Accessing and using the user's location
  • Persisiting data
  • Network requests
  • Using 3rd party libraries via CocoaPods
  • Using support scripts for creating bootstrapped resources
  • Programming concepts such as delegation, closures, generics & extensions
  • Swift language features such as codables
  • Avoidance of retain cycles
  • 3D touch (coming soon)
  • Peek & pop (coming soon)
  • Using various UIKit classes
  • Using MapKit and customising maps
  • Language localization

It therefore otherwise refrains from advanced concepts. The architecture is kept simple by using Apple's recommended MVC pattern. This architecture is fine for a small projects like this one. For complex apps there are better options, such as MVVM, VIP (Clean Swift) or even VIPER. The chosen architecture may for example limit the testability of the project, but then again for simplicty sake there are no unit tests present at all. Additionally the app uses singeltons for all services and managers. This further hinders testing. A better approach to enable this would be dependency injection. Furthermore delegation is used only losely.

Support and Open Source

Support is provided at the given support link, including instructions to get started with the app. The app's source code is open source. You can download and contribute via GitHub. To learn more about the project, visit the support website.

Climates Alexa

The source code from the repository can be found in https://github.com/Ali-Rahimian/nasa-hackathon/tree/master/Alexa/. Please view the README file for further instructions.

Using NASA's data to provide historical weather information.

Alexa Skill

The skill currently has two intents:

GetTemperature

This helps users find historical weather information. Example requests:

  • How hot was Pompano Beach during summer 2017 from climates
  • Average temperature in Castroville during 2018 from climates
  • What is the average temperature in green cove springs during April 2018 from climates

And the Utterances used:

  • How cold was {City} during {Date}
  • How hot was {City} during {Date}
  • Average temperature in {City} in {Date}
  • What is the average temperature in {City} in {Date}

GetAvailableCities

This helps users find information about a few of the supported cities. Utterances:

  • places for the demo
  • regions for the demo
  • cities for the demo
  • supported cities
  • what cities are available

Data source

The data here was sourced from NASA Globe Visualization System.

NASA Logo

SpaceApps is a NASA incubator innovation program.