MindMap Gallery Server side geo clustering for Drupal 7 Mind Map
This is a mind map that contains information about the server side Geo clustering for Drupal 7.
Edited at 2020-10-08 06:28:42Server side geo clustering for Drupal 7
GeoClustering
Clustering motivation
summarize data at high zoom levels by clustering
allow exploration of individual points at lower zoom levels
http://blog.davebouwman.com/2012/03/24/server-side-clustering-why-you-need-it/
Clustering
http://en.wikipedia.org/wiki/Carrot2
http://136.159.122.181:8080/geoclustering/help.php
http://136.159.122.181:8080/geoclustering/
Solr
Solr SpatialSearch
http://wiki.apache.org/solr/SpatialSearch
Google MarkerClustering
http://code.google.com/p/google-maps-utility-library-v3/wiki/Libraries#MarkerClusterer
http://googlegeodevelopers.blogspot.com/2009/04/markerclusterer-solution-to-too-many.html
http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/docs/reference.html
K-Means
http://en.wikipedia.org/wiki/K-means_clustering
Polymaps k-means
http://polymaps.org/ex/cluster.html
no interactivity, static
PostGIS
http://pgxn.org/dist/kmeans/doc/kmeans.html
how to use
http://gis.stackexchange.com/questions/11567/spatial-clustering-with-postgis
MySQL
SQLDM – implementing k-means clustering using SQL
http://www.abibasystems.com/white_paper/sqldm.pdf
Java impl
http://www.javaworld.com/javaworld/jw-11-2006/jw-1121-thread.html?page=1
Drupal ideas
http://groups.drupal.org/node/104014
paper
http://ilpubs.stanford.edu:8090/778/
k-means++: The Advantages of Careful Seeding
Google maps Perl impl + discussion
http://flylib.com/books/en/2.367.1.102/1/
siehe auch downloaded chm ebook
K-mean
Method
1. Select a center point for each of k clusters, where k is a small integer.
2. Assign each data point to the cluster whose center point is closest.
3. After all the data points are assigned, move each cluster's center point to the arithmetic mean of the coordinates of all the points in that cluster, treating each dimension separately.
4. Repeat from Step 2, until the center points stop moving.
Hierachical clustering
Method
1. Assign each point to its own cluster.
2. Calculate the distance from each cluster to every other cluster, either from their respective mean centers, or from the two nearest points from each cluster.
3. Take the two closest clusters and combine them into one cluster.
4. Repeat from Step 2, until you have the right number of clusters, or the clusters are some minimum distance apart from each other, or until you have one big cluster.
Naïve grid-based clustering
grid by display pixels / marker size
assign points to clusters within grid
order clusters by points
make superclusters (heavy clusters claim their neighbors)
Types
article
http://web.archive.org/web/20071121140547/http://trib.tv/tech/clustering-points-on-a-google-map/
Well-separated: Points belong to a cluster when they are closer to every point in the cluster than they are to any point not in the cluster. This requires each cluster of points to be separated by a distance at least equal to the diameter of the largest cluster at its longest point.
Prototype-based: Points belong to a cluster when they are closer or more similar to the cluster’s prototype, ie. a point representing the cluster as a whole, than they are to any other cluster’s prototype. This tends to result in circular clusters since the prototype (in a geospatial dataset anyway) is usually the centrepoint of the cluster.
Graph-based: A cluster is defined as a set of points that are all connected, directly or via a chain of other points, to each other, and which are not connected to any point not in the cluster.
Density-based: A cluster exists where there is a region of high density surrounded by a region of low density. These clusters can end up being any shape, and vary widely in size.
Conceptual: A cluster exists where all points in the cluster share a common attribute which is not present in any point outside the cluster.
Google maps php example
Google maps haversine php example
https://github.com/tuupola/php_google_maps/tree
http://www.appelsiini.net/projects/php_google_maps/cluster.html?center=17.41075008,85.46194978&infowindow=&zoom=1
http://www.appelsiini.net/2008/11/introduction-to-marker-clustering-with-google-maps
PHp example
http://web.archive.org/web/20071011143643/http://forum.sydphp.org/?a=topic&t=1074
request
http://uwmike.com/maps/dams/index.php.source
http://uwmike.com/maps/dams/map_functions.js.source
http://uwmike.com/maps/dams/map_data.php.source
http://uwmike.com/maps/dams/style.css.source
prep
http://uwmike.com/maps/dams/data/dams_au.txt.source
http://uwmike.com/maps/dams/data/create_inserts.php.source
http://uwmike.com/maps/dams/data/create_clusters.php.source
Quadtrees + hilbert courve blog post
http://blog.notdot.net/2009/11/Damn-Cool-Algorithms-Spatial-indexing-with-Quadtrees-and-Hilbert-Curves
Region quadtree
http://en.wikipedia.org/wiki/Quadtree#The_region_quadtree
http://gis.stackexchange.com/questions/5394/incremental-spatial-clustering-algorithm
Vizmo
Hierarchical Clustering by Meaningful Units
www.globalimpactstudy.org/wp-content/uploads/.../vizmo-poster.pdf
http://www.globalimpactstudy.org/2011/12/open-source-presentation/
SnapToGrid
http://postgis.refractions.net/docs/ST_SnapToGrid.html
Solr clustering
http://stackoverflow.com/questions/8399152/how-to-best-do-server-side-geo-clustering
Outdated localsolr
https://issues.apache.org/jira/browse/SOLR-773
Implementierung
http://blog.sybit.de/2010/11/geografische-suche-mit-solr/
Good discussion
http://www.mail-archive.com/solr-user@lucene.apache.org/msg40651.html
More
http://postgis.refractions.net/pipermail/postgis-users/2006-March/011431.html
Pre-cluster / store clusters in db
Examples
http://www.crunchpanorama.com/
http://gmaps-utility-library.googlecode.com/svn/trunk/markerclusterer/1.0/examples/speed_test_example.html
Libraries / Vendors
http://www.maptimize.com/
Articles
Google maps with lots of data, comparison of libs
http://www.svennerberg.com/2009/01/handling-large-amounts-of-markers-in-google-maps/
Thesis
Spatial clustering of structured objects Antonio Varlaro
www.di.uniba.it/~varlaro/Varlaro_PhDThesis.pdf
CORSO
Mapping Tech
Projections
Mapping JS
Compare them
http://www.spatialanalysis.ca/2012/alternatives-to-google-maps/
http://geotux.tuxfamily.org/index.php/en/geo-blogs/item/291-comparacion-clientes-web-v6
http://www.smartmapbrowsing.org/html/index_en.html
OpenLayers
The Wary Guide to OpenLayers
http://macwright.org/2012/01/12/openlayers.html
OpenLayers with Canvas
http://trac.osgeo.org/openlayers/wiki/Future/OpenLayersWithCanvas
Leaflet
geojson
http://leaflet.cloudmade.com/examples/geojson.html
https://github.com/CloudMade/Leaflet/issues/13
https://github.com/CloudMade/Leaflet/issues/420
multitouch
https://github.com/CloudMade/Leaflet/issues/150
Modest Maps
polymaps
http://polymaps.org/
SVG-based large-scale data overlays on interactive maps
d3 / Protovis
http://mbostock.github.com/d3/
http://mbostock.github.com/d3/tutorial/protovis.html
D3 + maps
https://groups.google.com/forum/?fromgroups#!topic/d3-js/4CQ7tmpDi-E
basic d3maps integration
https://github.com/bloomtime/d3map
Tile5
http://www.tile5.org/
Overlays
SVG vs Canvas
https://groups.google.com/d/msg/d3-js/4CQ7tmpDi-E/0auSzBMu10gJ
Paging Strategy
http://drupal.org/node/1516610#comment-5967508
OpenLayers locator drupal feature
http://drupal.org/project/ol_locator
Basemap Tiles
Ready to go
MapQuest
MapBox
OpenStreetMap
CloudMade
Google, ...
Customize Services
Tile Tools
TileMill
mapquest background tiles
einfach beim embed generieren 'World baselayer' anhaken
http://map.peoplesdistrict.com/fullmap.html
Maperitive
http://maperitive.net/
MapBox
Fast
http://mapbox.com/wax/getting-fast.html
http://www.slideshare.net/devseed/fast-map-interaction-without-flash
Denver Slides
Automatic Updates
More
daten regelmaessig von drupal in sqlite pushen
http://developmentseed.org/blog/2011/sep/28/gains-dynamic-maps-bridging-couchdb-sqlite/
MapProxy
reproject existing tiles
http://mapproxy.org/
Interaction
None
Per-point
Hybrid
UTFGrid
http://mapbox.com/mbtiles-spec/utfgrid/
More
Ushahidi
http://www.ushahidi.com/products/crowdmap
More
Open
Interactive Map Visualization Techniques for Open Data in Austria with Drupal
Open Data
Open Data Handbook
http://blog.okfn.org/2012/02/22/announcing-the-open-data-handbook-version-1-0/
Berlin Open Data Strategy
http://www.scribd.com/doc/83193044/Berlin-Open-Data-Strategy-English-Abstract
Open Data in Austria
Open3 - Netzwerk zur Förderung von OpenSociety, OpenGov und OpenData in Österreich
http://www.open3.at
Datenplattformen Österreichs
http://data.linz.gv.at/
http://data.wien.gv.at/
Open Data Visualization
visualization of time-oriented data (buch)
http://visweek.org/visweek/2011/paper-session/all/infovis
Open Data Visualization in Austria
Open Data & Data Driven Journalism - Tools & Best Practices (Robert Harm)
http://www.slideshare.net/robertharm/open-data-data-driven-journalism-tools-best-practices
Open Data Mapping
geocommons
http://geocommons.com/
degree confluence
http://www.confluence.org/
Open Data Mapping in Austria
Geo-Datenplattformen Österreichs
http://data.linz.gv.at/daten/Geodaten
http://data.wien.gv.at/katalog/basiskarten
http://www.kartenwerkstatt.at
AustroFeedr - Drupal + OpenLayers Use Case
http://www.austrofeedr.at
http://demo.austrofeedr.at
Linked Open Data Austria - Drupal + OpenLayers
http://austria.drupaldata.com
Linked Open Geodata Meetup
http://www.meetup.com/Vienna-Semantic-Web-Meetup/events/23088111/
geoland.at
http://www.slideshare.net/langegger/linked-open-geodata
Web Mapping
http://en.wikipedia.org/wiki/Web_mapping
Classification
static vs dynamic
http://kartoweb.itc.nl/webcartography/webmaps/classification.htm
http://en.wikipedia.org/wiki/Geosocial_networking
Collaborative mapping
http://en.wikipedia.org/wiki/Collaborative_mapping
OpenStreetMap
Google Map Maker
Licensing
http://mashable.com/2012/01/19/google-maps-world-bank/
Wikimapia
http://wikimapia.org/
Österreich
Gomogi
http://www.gomogi.com/
micheal diener
FOSSGIS UG AT
fossgis@spektral.at
http://wiki.alpine-geckos.at/wiki/FOSSGIS_UserGroup_Austria
http://www.alpine-geckos.at/category/geowissenschaften/
Animation
Examples
Windhistory
http://windhistory.com/map.html#9.00/40.1737/-113.1458
Drupal
General
Drupal Geo Stack
http://groups.drupal.org/node/138884
http://groups.drupal.org/node/89769
Mapping Book
Subtopic 3
Mapping
http://drupal.org/project/mapping
http://groups.drupal.org/node/91114
Podcast
http://drupaleasy.com/podcast/2012/01/drupaleasy-podcast-73-lots-options
05:35; Drupal was one of the first CMS to integrate with Maps
13:30; TileMill
19:00; Client-side performance issues & clustering
24:35; Geocode & center map on users location by using HTML5 Geolocation
29:53; OpenLayers complexities, CTools, Display using Views, Panels or API
34:05; OpenLayers related modules: Geofield, Geocoder, ...
35:20; Geofield in Drupal 7 instead of Location module before
37:40; Recommended setup - Quickstart for storing locations and displaying them
OpenLayers + Geofield + Addressfield
GMap + Location
42:10; Leaflet (Cloudmade)
44:55; Book wrapup
46:25; Book introduction chapters + Motivation on mapping
49:25; Popular mapping blogs, cartography, best map of the year
1:06; Location CCK migrate sandbox
transforms D6 location_cck fields into D7 geofields
1:07; Geocoder, get geospatial data from address field into geofield
1:09:20; Baraka samsara films - map site use case
http://barakasamsara.com/
http://stanford.edu/group/ruralwest/cgi-bin/drupal/visualizations/us_newspapers
http://brandonmorrison.com/sites/default/files/presentations-deckjs/drupal-geospatial/index.html
OpenLayers
3.x
http://drupal.org/node/1353122
Polymaps (depends on mapping)
http://drupal.org/project/polymaps
Geofield
Presentation
http://drupal.org/node/1570972
Views GeoJSON
http://drupal.org/project/views_geojson
OL intergration
http://drupal.org/node/1370448
Documentaion, use cases
http://drupal.org/node/1471026
Bounding box filter
http://drupal.org/node/1333324
Search API
Search API Location
http://drupal.org/project/search_api_location
More
http://denver2012.drupal.org/program/sessions/nodejs-javascript-and-future
Drupal Mapping presentation by levelos (overview + openlayers & leaflet focus)
http://www.slideshare.net/loubabe/drupal-mapping-9713919
Drupal Mapping presentation by zzolo 2012
https://github.com/zzolo/spatially-drupal
Use Case
Online-Biodiversitätsportale mit Indicia, Drupal und OpenLayers
http://www.fossgis.de/konferenz/2011/programm/events/239.en.html
CivicApps
http://civicapps.org/
PostGIS
http://drupal.org/project/postgis
Sync PostGIS
http://drupal.org/project/sync_postgis
vector tiles
[2:01pm] friedjoff: dasjo: maybe vector tiles might be worth looking into
[2:01pm] tnightingale: some data doens't make sense to be pushed into drupal
[2:01pm] tnightingale: vector tiles++
[2:02pm] tnightingale: though last i looked, polymaps was the only lib that supported them
tilestash + drupal + leaflet
https://github.com/affinitybridge/drupal-tilestache
https://img.skitch.com/20120426-jfu9fj5c17y5rfa9392y48xmb7.jpg
Mapping Office hours log
Notes + log
https://docs.google.com/document/d/19F8XCwyxQc4JwouNxDDspiDCjPAWFsVb--xxOyedpmw/edit?pli=1
server-side-clustering
[1:52pm] zzolo: there is still a pretty big hole when trying to map (and handle) lots of geospatial features in Drupal
[1:53pm] phayes: zzolo - I think the answer there is a combination of ViewsGeoJSON / server-side clustering
[1:58pm] dasjo: final question before i have to leave: do we need a server-side clustering like nod_ and me discussed? http://drupal.org/node/1547610
[1:59pm] nod_: dasjo: phayes seems to agree, see backscroll
[1:59pm] Brandonian: dasjo: Definitlely think it'd be a cool feature, not sure what other work is being done with that in php/drupal land though
[2:00pm] zzolo: dasjo: my initial thought is no, if we can focus on toolking up thinks like postgis and tilestache. but since that is not really going to happen overnight, a good stop gap solon could be server side clustering
[2:00pm] phayes: dasjo: Yes we need it! That's going to be critical as we scale to support larger data sets
[2:00pm] dasjo: yep Brandonian zzolo. basically some parts of the database implementation and client-side handling should be pluggable
[2:01pm] dasjo: but maybe we can come with some basic out-of-the-box implementations and leave it open to a database to optimize the clustering
tilestash + drupal + leaflet
log
[1:59pm] tnightingale: yeah - tilestache is (using mapnik) is able to generate tiles on demand from a postgis backend
[1:59pm] mackh: of data from the oil and gas commksion - like pipeline right-of-ways, access roads, wellsites, watercrossings
[2:00pm] tnightingale: zzolo: so we can sync drupal data into postgis and render that data into tiles using mapnik+tilestache
[2:00pm] zzolo: tnightingale: and mackh just to confirm, the postgi data is drupal data? (from sync_postgis, i assume)
[2:00pm] zzolo: sweet
[2:00pm] mackh: yes and no?
[2:00pm] tnightingale: yep
[2:01pm] mackh: stored in drupal, synced to postgis
[2:01pm] tnightingale: but doesn't have to be
[2:01pm] zzolo: awesome. thats what i was hoping. this is the stack i have been envisioning, but i don't get paid to do any of this stuff so i don't have time.
[2:02pm] Brandonian: for the more python/mapnik literate in the room: How feasible is it to do mapnik renders based directly off drupal field data if the database is Postgres/postgis and stored properly?
[2:02pm] tnightingale: Brandonian: that's essentially what we're doing with sync_postgis & tilestache
[2:03pm] zzolo: Brandonian: what i image is getting your design in tile mill, export out the mapnik xml file, then it should be pretty easy
[2:03pm] tnightingale: using a mapnik xml file produced in tilemill as our style guide
[2:06pm] tnightingale: zzolo: we also have a rough cut at a tilestache config management module on g.h
[2:06pm] phayes: ooo! link tnightingale?
[2:07pm] phayes: Oh tnightingale, what's the status of D7 Spatial-tools?
[2:07pm] zzolo: tnightingale: you have a link. i am actually gonna try to get this stack running locally this week as part of my presentation at the TC Drupal camp
[2:07pm] mackh: https://github.com/affinitybridge/drupal-tilestache]
[2:07pm] zzolo: i think this is definitely the future of geo
[2:07pm] tnightingale: re: tilestache module - still pretty rough, be warned
[2:08pm] zzolo: and i think postgis sync is the way to go to handle goespatial data and spatial querying.
https://github.com/affinitybridge/drupal-tilestache
https://img.skitch.com/20120426-jfu9fj5c17y5rfa9392y48xmb7.jpg
search api
[2:08pm] mackh: i also want to extend search api to return WKT onto maps
[2:08pm] mackh: from faceted results, hoping to get that client funded in the next 3 months
Office hours finishing
log
[2:07pm] tom_o_t: Brandonian: perhaps schedule dedicated Q&A time for stuff general questions that aren't related to module development?
[2:08pm] Brandonian: tom_o_t: Not a bad idea.
[2:09pm] jeffschuler: tom_o_t++ … this has been super useful, but It's been more of a facilitated discussion on high-level geo in drupal topics rather than a time for folks to come get help or figure out how they can pitch in… different from core office hours http://drupal.org/node/1242856
Clustering
Blog: exploring large sets of geodata
http://groups.drupal.org/node/104014
Benchmarking OpenLayers with Drupal
http://rjsteinert.com/content/benchmarking-openlayers-module-views-and-openlayersjs
WFS (D6 wenig user)
http://drupal.org/project/wfs
OpenPublic Map Visualization Feature
http://www.openpublicapp.com/map-visualization-feature
broken?
Mapping & Recruiter
http://drupal.org/node/1254716
by Adam S, based on OpenPublic
GeoRecruiter
Daten
GeoTaxonomie verwenden / geofield
jobs
bezirke
Suche
Search API integration
http://drupal.org/project/search_api_location
Job
Job location auf karte anzeigen
Clustering
Basic
Distance
Advanced
Feature-based clusters?
existing cluster technologies?
People
Underdark GIS
Canvas
Openlayers heatmap canvas
http://www.websitedev.de/temp/openlayers-heatmap-layer.html
SVG vs Canvas in Openlayers
http://unterbahn.com/2010/07/comparison-of-svg-and-canvas-in-openlayers/
Geofield proximity updates by brandonian
http://drupal.org/node/1469956#comment-6025452
http://en.wikipedia.org/wiki/Haversine_formula
Geocluster
geocluster_views_post_execute
views_plugin_style_geocluster extends views_plugin_style_geojson
ähnlich wie groupby
display that uses another display
queryhandler clustering
Drupal Apachesolr Geo sandbox
http://drupal.org/sandbox/pwolanin/1497066
Main Topic