I'm facing a problem and would like to ask your help finding the best online mapping solution!
- The User can pick 1 from several hundred territory based functions to map its values. A good example: Population.
- Every function represents data on a group of territorial units. These units can be very large (i.e countries or continents) and can be very small (settlements). Every unit is represented as a (multi)polygon.
- The user can filter on what territorial units he wants to display. In other words he can filter the areas to be displayed. Based on the values of the selected function and the selected areas, the map to be created will be a 30% transparent Choropleth map overlay. This adds a dynamic behaviour, so static maps are not an option.
- The User is allowed to select huge numbers of territories. I.e: all settlements of a country. This introduces several thousands of polygons to display.
- I have high resolution ESRI shapefile data on each unit. I can convert them to any GIS format.
The current implementation: uses Google Maps with Fusion Tables layer added. The Fusion Table is generated dynamically with regard to the following procedure:
- A pre uploaded base fusion table is used, which holds all geometry data for all possible areas. An areaId primary key is part of the table
- A dynamically generated fusion table is uploaded runtime which holds the values and area ids for the selected function.
- When this dynamic table is created, we can get the fusion table to display by joining the dynamic table with the base table .
- Colors are calculated runtime and applied as conditional formatting in the view layer
The problem: When you generate a new fusion table google needs some time to cache the generated map tiles on server side. So far i didn't find a solution to get feedback on these map tiles are already generated or not when displaying the map to the User. When displaying the map for the first time(and most probably the last time..since they are generated runtime) the user won't see the Choropleth map("Data may still be loading" message on map tiles), he has to refresh the page several times to get the map displayed correctly. And altogether this solution is very slow. Takes 10-25sec to upload data to Fusion Tables service and another 2-20sec to get the tiles cached on google's servers.
What i have tried:
- KML Layers on Google Maps: wouldn't take KMLs larger than 10M. The caching issue is still present
- Creating polygons on client side: is an overkill for the browser for large shapes like continents and for the cases when 3000-4000 smaller shapes like settlements are displayed.
Looking for: a mapping server solution that i can install and use on the project's server to dynamically generate these map tiles. The solution would qualify if the whole process wouldn't take more than 10sec. The raster layer behind the Choropleth map should be preferably Google Maps but not necessarily.
Any suggestions are most appreciated and thanks for your help in advance!