Introduction
Motivation
Usability
summarize data at high zoom levels by clustering allow exploration of individual points at lower zoom levels
Speed
Browser javascript/memory limitations Even more for mobile
http://blog.davebouwman.com/2012/03/24/server-side-clustering-why-you-need-it/ http://www.svennerberg.com/2009/01/handling-large-amounts-of-markers-in-google-maps/
Problem statement
Aim of the work
Use cases
Examples
http://www.crunchpanorama.com/ http://gmaps-utility-library.googlecode.com/svn/trunk/markerclusterer/1.0/examples/speed_test_example.html http://www.panoramio.com/map/ http://www.usda.gov/recovery/map/
Methodological approach Structure of the work
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
Foundations
Theory
Names, Keywords
Geospatial clustering Analytical regionalization Spatially constrained clustering
Approaches
Where to cluster
Clustering Client-side Clustering by Logic Clustering by Database
When to cluster
realtime / on-request Pre-cluster / store clusters in db
How to cluster
Basic Distance Advanced Feature-based clusters? article link http://web.archive.org/web/20071121140547/http://trib.tv/tech/clustering-points-on-a-google-map/ http://trib.tv/ Basic Types 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. Implementation types Variable gridding Interleaved digits K-Means http://macwright.org/2012/09/16/k-means.html QT-Clust DBSCAN Agglomerative Hierarchical Clustering Grid based viral growth argorithm article2 http://www.biomedware.com/files/documentation/boundaryseer/Cluster/About_spatially_constrained_clustering.htm
Questions
what about performance? how do filters work? how well does it integrate with current drupal mapping technologies? how does caching work? how does client interaction work? how does it work with and without spatial database capabilities?
Algorithms
OPTICS
http://en.wikipedia.org/wiki/OPTICS_algorithm
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
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
SnapToGrid
http://postgis.refractions.net/docs/ST_SnapToGrid.html
More
http://en.wikipedia.org/wiki/Carrot2 http://136.159.122.181:8080/geoclustering/help.php http://136.159.122.181:8080/geoclustering/ http://chemometria.us.edu.pl/index.php?goto=downloads
clusterPy algorithms
AMOEBA A Multidirectional Optimum Ecotope-Based Algorithm AriSeL - Automatic Rationalization with Initial Seed Location Automatic Zoning Procedure (AZP) Reactive tabu variant of Automatic Zoning Procedure (AZP-R-Tabu) Simulated Annealing variant of Automatic Zoning Procedure (AZP-SA) Tabu variant of Automatic Zoning Procedure (AZP-Tabu) Geo Self Organizing Map(geoSOM) Max-p-regions model (Tabu) Generate random regions Self Organizing Map(SOM)
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
Higher Order Voronoi Diagram
http://gis.stackexchange.com/questions/18330/would-it-be-possible-to-use-geohash-for-proximity-searches
Damn Cool Algorithms: Spatial indexing with Quadtrees and Hilbert Curves (Geohash)
http://blog.notdot.net/2009/11/Damn-Cool-Algorithms-Spatial-indexing-with-Quadtrees-and-Hilbert-Curves zitat Quadtrees -> Geohashes
Related
Mapping Tech
Projections
http://www.progonos.com/furuti/MapProj/Dither/CartHow/cartHow.html
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/ 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/
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
Drupal Mapping
General
Drupal Geo Stack http://groups.drupal.org/node/138884 http://groups.drupal.org/node/89769 Mapping Book 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
Storage
Geofield Presentation http://drupal.org/node/1570972 PostGIS http://drupal.org/project/postgis Sync PostGIS http://drupal.org/project/sync_postgis
Query + Display
OpenLayers 3.x http://drupal.org/node/1353122 Polymaps (depends on mapping) http://drupal.org/project/polymaps 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 SOLR Drupal Apachesolr Geo sandbox http://drupal.org/sandbox/pwolanin/1497066 Search API Location http://drupal.org/project/search_api_location Support official Solr 3 spatial search APIs http://drupal.org/node/1328490 Sandbox http://drupal.org/sandbox/madmatter23/1799850 Search API Support location based search http://drupal.org/node/1744250 Geofield Apache Solr 3.5 update http://drupal.org/node/1800570 Blog http://ericlondon.com/posts/250-geospatial-apache-solr-searching-in-drupal-7-using-the-search-api-module-ubuntu-version-part-2
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 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 GeoServer + PostGIS http://www.geops.de/blog/64-spatial-data-and-drupal-7 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 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/ OpenPublic Map Visualization Feature http://www.openpublicapp.com/map-visualization-feature broken? Geofield proximity updates by brandonian http://drupal.org/node/1469956#comment-6025452 http://en.wikipedia.org/wiki/Haversine_formula Article Server-side mapping http://affinitybridge.com/blog/server-side-mapping
leaflet + drupal + client-side clustering
http://drupal.org/project/leaflet_markercluster
Database
MySQL Spatial
http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html
PostGIS PostreSQL
http://postgis.org/
SOLR
MetaCarta - GeoSearch Toolkit for Solr (prorietary) http://www.metacarta.com/products-overview.htm
Logic
GEOS
https://github.com/phayes/geoPHP/wiki/GEOS
Steps
Cluster center
http://www.biomedware.com/files/documentation/boundaryseer/Wombling/Irregular_(point)_wombling.htm http://www.biomedware.com/files/documentation/boundaryseer/Wombling/Raster_wombling.htm#wombling_equations
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
Implementations
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 ohne code
http://blog.sybit.de/2010/11/geografische-suche-mit-solr/
Good discussion
http://www.mail-archive.com/solr-user@lucene.apache.org/msg40651.html http://searchhub.org/dev/2009/09/28/solrs-new-clustering-capabilities/
Spatial4j
https://github.com/spatial4j/spatial4j
SOLR-2155
https://github.com/dsmiley/SOLR-2155
solr geohash notes
http://spatial4j.16575.n6.nabble.com/Dev-My-Spatial-notes-from-Lucene-Revolution-td4980074.html#a4981005 http://codegouge.blogspot.co.at/2012/05/using-geohashing-in-solr.html
implemented, missing code
http://lucene.472066.n3.nabble.com/Geographic-clustering-td502559.html
clusterPy
http://code.google.com/p/clusterpy/ http://www.rise-group.org/risem/clusterpy/index.html
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)
Vizmo
Hierarchical Clustering by Meaningful Units PHP, Symphony2, closed source? www.globalimpactstudy.org/wp-content/uploads/.../vizmo-poster.pdf http://www.globalimpactstudy.org/2011/12/open-source-presentation/
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
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
PHP hilbert curve
http://sourceforge.net/projects/hilbert-curve/
More
PostGIS
http://postgis.refractions.net/pipermail/postgis-users/2006-March/011431.html
R-Project
SGCS Spatial Graph based Clustering Summaries for spatial point patterns http://www.inside-r.org/packages/sgcs http://cran.r-project.org/web/packages/SGCS/
Flex
http://thunderheadxpler.blogspot.co.at/2008/12/clustering-20k-map-points.html
Openlayers (client side)
http://dev.openlayers.org/releases/OpenLayers-2.11/lib/OpenLayers/Strategy/Cluster.js
Drupal 6 github
https://github.com/ahtih/Geoclustering
beschreibung
* source data (points) is in the form of Drupal nodes * a new Drupal module maintains a DB table of multi-level geographic clusters, using hook_nodeapi() to track changes to source nodes and update the clusters table accordingly. Clusters table is accessible via a Views plugin * WFS module accesses clusters view and serves out both clusters and source nodes, with clustering level and bbox as request parameters * a new OpenLayers Strategy or layer type displays the map, selecting a suitable clustering level based on zoom and/or number of points in map view area http://drupal.org/node/622720#comment-3239286 http://www.letsdoitworld.org/wastemap
Drupal TagMap Clusterer JS
http://drupal.org/project/tagmap
Geohash
http://en.wikipedia.org/wiki/Geohash
good presenation
http://www.lucidimagination.com/sites/default/files/Lucene%20Rev%20Preso%20Smiley%20Spatial%20Search.pdf http://www.basistech.com/pdf/events/open-source-search-conference/oss-2011-smiley-geospatial-search.pdf
geohash explanation demo
http://openlocation.org/geohash/geohash-js/
SOLR-2155
edge n-gram'ed geohashes with a PrefixTree/Trie search algorithm https://github.com/dsmiley/SOLR-2155 http://wiki.apache.org/solr/SpatialSearch#SOLR-2155
SOLR
http://lucene.apache.org/core/3_6_0/api/contrib-spatial/index.html?org/apache/lucene/spatial/geohash/GeoHashDistanceFilter.html https://issues.apache.org/jira/browse/SOLR-2155 A new geospatial framework for Lucene and Solr https://github.com/spatial4j/spatial4j
MongoDB
http://www.mongodb.org/display/DOCS/Geospatial+Indexing
PHP additional hilbert-curve
http://www.phpclasses.org/package/6202-PHP-Generate-points-of-an-Hilbert-curve.html http://stackoverflow.com/a/9645315
geoPHP integration
https://github.com/phayes/geoPHP/issues/32
geohash efficiency
http://karussell.wordpress.com/2012/05/23/spatial-keys-memory-efficient-geohashes/
geohash neighbors java
https://github.com/kungfoo/geohash-java/blob/master/src/main/java/ch/hsr/geohash/GeoHash.java
Geohash with Drupal
Geospatial searching with solr 3.x
http://drupal.org/node/1187888
Apachesolr geo sandbox
http://drupal.org/sandbox/pwolanin/1497066
WFS (D6 wenig user)
http://drupal.org/project/wfs
Clustering Visualisation
http://vis4.net/blog/posts/clean-your-symbol-maps/
MapBox Clustr Library
https://github.com/mapbox/clustr
Libraries / Vendors
http://www.maptimize.com/
Maptimize can deal with up to 50,000 markers - but the underlying algorithm can handle over one million! http://v2.maptimize.com/faq# http://seb.box.re/2009/5/1/maps-geolocalization-and-optimization-with-maptimize
Comparison, state of the art
Use cases
GeoRecruiter
Conception
Geocluster
geocluster_views_post_execute
not very flexible, prefer to do plugins
views_plugin_style_geocluster extends views_plugin_style_geojson
views_geojson has complicated _views_geojson_render_fields
geocluster_plugin_style_geofield_map extends geofield_map_plugin_style_map
fields already rendered by field handler post execute
geocluster_handler_field_geofield extends geofield_handler_field ähnlich wie groupby, get_aggregation_info ?
display that uses another display
datenquelle = andere view Subtopic 2
queryhandler clustering
alter views result research
Search API research 2008
Building a view from a different source (not Database) http://groups.drupal.org/node/12838
Describing tables to Views
http://views-help.doc.logrus.com/help/views/api-tables
fake entities geo data is stored in a field api field think about the pager
group entity altering of views
http://drupalcode.org/project/views.git/blob/refs/heads/7.x-3.x:/modules/field/views_handler_field_field.inc#l727
views_plugin_query_default
$result = $query->execute(); post_process afterwards
register a custom handler to be exectued before the field handlers
problem: no way to modify views_object_types()
Functions needed
https://github.com/mapbox/clustr/blob/gh-pages/API.md#clustr
distance between two points
https://github.com/mapbox/clustr/blob/gh-pages/src/clustr.js#L34
centroid of multiple points
https://github.com/mapbox/clustr/blob/gh-pages/src/clustr.js#L55
meters to pixels
http://msdn.microsoft.com/en-us/library/aa940990.aspx http://wiki.openstreetmap.org/wiki/Zoom_levels https://github.com/mapbox/clustr/blob/gh-pages/src/clustr.js#L4 problem: kalibriert für äquator, wird weniger nach oben
bounding box strategy
http://www.geojson.org/geojson-spec.html#bounding-boxes
openlayers ok
http://openlayers.org/dev/examples/strategy-bbox.html http://dev.openlayers.org/docs/files/OpenLayers/Strategy/BBOX-js.html#OpenLayers.Strategy.BBOX
leaflet custom?
https://github.com/CloudMade/Leaflet/issues/962 http://switch2osm.org/using-tiles/getting-started-with-leaflet/ http://boomphisto.blogspot.co.at/2011/07/nodejs-express-leaflet-postgis-awesome.html movend https://github.com/CloudMade/Leaflet/issues/327#issuecomment-2460917
Implementation
GeoRecruiter
Daten
GeoTaxonomie verwenden / geofield
jobs bezirke
Suche
Search API integration
http://drupal.org/project/search_api_location
Job
Job location auf karte anzeigen
Mapping & Recruiter
http://drupal.org/node/1254716 by Adam S, based on OpenPublic
People
Underdark GIS
mollux, Matthias Michaux
http://drupal.org/user/785804 Search API Location
Nick_vh
http://cartodb.com/