Giter Club home page Giter Club logo

geoforce's Introduction

Mapfolio

A Node.js-Angular.js project that makes Salesforce.com mappable.

##Overview The Red Cross is using an instance of Salesforce.com (called ECOS) to store Project and Disaster Response information throughout the organization. Projects and Disasters in ECOS are assigned a unique identifier that ties each project or disaster to an administrative boundary (from GADM). A nightly Extract, Transform and Load operation (ETL) connects to the Salesforce.com API and pulls down the latest information in the ECOS System. The data is routed to a PostgreSQL/PostGIS instance that has corresponding GADM geometry. Through some preprocessing and other trickery, the data is massaged into a format that is well suited for map display.

##Main Components

There are 4 main components that make up the Mapfolio project:

###Spatial Server (Node.js API and app host)

Spatial Server is the NodeJS Server that acts as the API from which the web application consumes data. This consumes data from the PostGIS database. This is currently a read-only tool.

Server UI SpatialServer UI.

Specific SQL queries to perform the logic we need is done by creating an SQL view. This view in turn automatically becomes an endpoint in Spatial Server. Spatial Server also hosts the GeoAngular web app as static files.

More About the Red Cross Spatial Server Instance

###GeoAngular (Angular.js Web App)

This is the front-end JavaScript application that utilizes AngularJS, Leaflet, and Bootstrap.

GeoAngular UI GeoAngular UI.

The core feature of the architecture in GeoAngular is the use of AngularJS' ngRouter to reflect all states of the application--both the map as well as the stories and other applicable views.

More About the Red Cross GeoAngular/Mapfolio App

###ETL (Node.js SalesForce ETL)

This is our custum ETL (Extract, Transform, Load) tool that consumes data from Salesforce and inserts it into our PostGIS database.

ETL ETL console output.

The basic idea behind this tool is that we have a set of queries that gets us all of what we need from Salesforce. These queries in turn have their own table in PostGIS. These are referred to as "Query Tables." All of the tables created and updated by Succubus have the prefix sf_ in the PostGIS database.

More About the Red Cross ETL

###Vector Tiles Version 2.0 of Mapfolio uses Mapbox Vector Tiles on top of Leaflet for global boundary rendering. To find out more about making and hosting these vector tiles, read this. More about styling vector tiles in the Leaflet.MapboxVectorTile plugin here.

geoforce's People

Contributors

apollolm avatar hallahan avatar danbjoseph avatar

Stargazers

⚠️ DO NOT USE! ⛔️ avatar  avatar Erdong avatar Jubal Harpster avatar Ian Munoz avatar  avatar  avatar Brian Jacobs avatar Malcom Gilbert avatar Tod Robbins avatar Lauren Ancona avatar @tomgertin avatar Mike King avatar

Watchers

Seth Fitzsimmons avatar  avatar Jubal Harpster avatar  avatar James Cloos avatar Robert Banick avatar  avatar Dale Kunce avatar  avatar Kim Kearns avatar  avatar

Forkers

janetepe

geoforce's Issues

Print

Implement Print functionality

Parse CSV in VectorProvider

The Vector Provider should directly parse CSV so that any csv resource available via HTTP can be shown on the map.

This follows the same approach as KML with uploads. The Github Gist uploader uploads the data in original form, and VectorProvider does the transformation.

Upload Data

GeoJSON
CSV

Look into doing this as an anonymous Gist.

Basemaps

Wire up a basic list of basemaps. Get a comp from Naomi to further style.

Remove RouteParams Global Object

$stateParams in ui-router has come to the rescue and removed our need for this global object. Find references to RouteParams and replace with $stateParams accordingly.

Fix Stories jQuery UI Bug

Now that the stories panel is no longer an explicit view, the jQuery auto-resize funcationality is broken.

Breadcrumbs over Philippines

When in between islands, breadcrumbs don't update since the center of your screen doesn't intersect any land.

Should fall back to using BBOxes if our original query returns null.

Manifest Endpoint should take into account theme

Currently, we always ask the DB if a country has any projects/disasters for any boundary in the view. But the manifest should tell us whether or not a boundary has projects/disasters (based on the selected theme) so we don't send so many subsequent requests.

ui-sref trolls function calls

When there is a function in ui-sref directives, the function gets called dozens of times. Check ui-srefs in the app and replace with ng-click if necessary.

Layers List

Implement Layers List UI from comp. Later, wire up functionality.

Map Jitter

May include ripping out angular-leaflet.
Investigate if this works before we do it.

BaseLayer Load Order

  1. Pinterest (RedCross)
  2. HOT
  3. Default OSM
  4. MapBox Satellite
  5. Ortho
  6. Stamen Toner
  7. Dark Theme
  8. MapBox Streets
  9. MapBox Terrain
  10. GitHub
  11. Mozilla
  12. Green Theme
  13. Cycle Map
  14. Transport Map
  15. MapQuest
  16. National Geographic
  17. USGS Topo
  18. ESRI Topo
  19. Ocean
  20. Light Gray (No Labels)
  21. Stamen Watercolor

Details Panel

Hook up arrows.
Have the actual details be a view.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.