We were inspired by the talk from the urthecast team at Hack the North. They gave a glimpse of what the API could do and it seemed really cool.
What it does
This app loads a map using the urthecast API and a list of cities. We can then click on the city to get a charity/disaster that we can donate to, using the PayPal API. We used synthetic data for testing purposes.
Our idea was to design a broader view of charities/disasters in the world. Using the urthecast API, we give the user an option to see any place with different scopes, the regular RGB one, as well as the amount of water present and the amount of vegetation present in that region. This gives a better idea of that region to the person who donates to charities in that region. Using real-time/ relatively new map data than existing programs such as Google Earth, we also give a better view of the current world events, focusing on disasters. This will enable people to understand the magnitude of the disaster and bring awareness to people.
How I built it
Dan used Bottle.py to design the backend of the system. Using that, we designed routes to the index page, the map page, and mechanism for the PayPal API. Gowtham used Twitter Bootstrap to design the pages and then used leaflet.js to get the map data from urthecast API. He then integrated various layers of the data provided by the urthecast API in leaflet. He also used OpenStreetMap API to provide a search bar for places and then integrated it with urthecast API. So, if you now click on a random place, it will give a red box around it. Brent added synthetic data of disasters to give an idea of how the hack works. He used Angular.js for populating the data. Dan added a link to donate. He then deployed on a Linode box, and then pointed a .co domain to it.
Challenges I ran into
We had some trouble using the urthecast API at the beginning. It did not have complete data for the Theia satellite. We also had some trouble figuring out how to put in the key and secret. We got it fixed by the team's answer in slack.
This is the first time we used leaflet.js and so it was challenging to use it, especially with something that did not seem to have explicit support for it. We also had trouble integrating openstreetmaps API with the urthecast API as it was not documented. We experimented with time data, but found that the urthecast API was not very well-suited to use it. There is an option to get images taken between dates but there is no command to get an image on a specified time. Even if we hacked the between dates option to have an interval of a day, image data was found missing for certain parts of the world.
We had problems with integrating with the Payment APIs. We tried Coinbase API but it used two-factor authentication. Since we are from the United States, our phones couldn't get it and so we got locked out. Braintree was also difficult to use as it was not intuitive. They had unusual types in Python. Then we had some problems to get .co domain set up, to point at our linode server.
Accomplishments that I'm proud of
Not falling asleep, successfully completed what we wanted to implement, used urthecast API, made it look nice, integrated payment method.
What I learned
We learned about the urthecast API, leaflet.js, how to use linode, how to integrate .co domain, how to use CSS to make it look nice, how to integrate openstreetmaps, how to integrate payment methods, and that Canadians are extremely friendly.
What's next for CharMap
We are planning to expand it. We have planned a flight-like game to make it more interesting to use. We also want to integrate more charities and real disasters. After implementing the game, we want to see how we can use the satellite position data to make it some sort of character. We also plan to use our reverse geocoding method to get the place where the satellites are currently above. If possible, we also plan to get the estimated time of sighting for the satellite.
The thing which concerned us was that urthecast API is in beta stage, and there were plans to make it payable. We can't afford to pay something like 1000$ to use it. We found it to be extremely interesting though.