Neo4jSpatial
Craig Taverner
Neo Technology / AmanziTel
#neo4j
@craigtaverner
craig@amanzi.com
Web Map Data with Neo4j-Spatial
and OpenStreetMap
Where are the Mushrooms?
Where are the Mushrooms?
NoSQL
Not Only SQLNot Only SQL
NOSQL data models
Bigtable clones
Key-value stores
Document
databases
Graph databases
Data complexity
Datasize
Points
Points
Points Point, LineString,
Polygon, MultiPolygon,
Geoprocessing,
OpenStreetMap
Neo4j – Nodes, Relationships, Properties
Nodes have different properties
Matrix characters: People vs. Programs
Build structure as you go
Who loves Neo?
Neo4j Spatial 2010
GSoC 2010
Core
Storage, GeometryEncoder
Search/RTree, Operations
I/O (Shapefile)
Extensions
Geotools Datastore
GeoServer & uDig
Ruby API
neo4j-spatial.rb (Rubygem)
OpenStreetMap
Import OSM, Dynamic Layers (JSON & CQL)
Export Shapefiles, and SLD styled PNG
Neo4j OSM in uDig
OpenStreetMap
OpenStreetMap
OpenStreetMap
OpenStreetMap
OSM
RTree
namic
ayers
Dynamic
Layers
Routing on OSM
Neo4j-Spatial 2011
OSM
Performance
Changesets and Users
Geoprocessing
LBS and SimplePointLayer
Routing OSM
GSoC 2011 – Geoprocessing functions
Data Mining OSM
What's next
Geoprocessing pipeline
Cool domains: artistic maps
Finding things close to other things
http://blog.neo4j.org/2011/03/neo4j-spatial-part1-finding-things.html
Finding things close to other things
http://blog.neo4j.org/2011/03/neo4j-spatial-part1-finding-things.html
Routing with OSM
Data Mining OSM
timestamp > 1207014810000 and timestamp < 1208310810000 and
(
user = 'Zenon' or user = 'tomasCY' or user = 'muffu' or
user = 'dcp' or user = 'cartOMike' or user = 'djanda' or
user = 'Peter14' or user = 'toaster' or user = 'user_7363' or
user = 'lyx'
)
Artistic Maps
Artistic Maps
Artistic Maps
Cellular Network Topology
Cellular Network Topology
ID Site Latitude Longitude
1 ABC 55.678 12.567
2 XYZ 55.890 12.123
3 PRQ 55.543 12.890
ID Sector SiteID Azimuth Beamwidth
1 1 1 0 100
2 2 1 120 100
3 3 1 240 100
4 1 2 0 90
5 2 2 120 110
6 3 2 240 90
7 1 3 0 180
8 2 3 180 180
O(N)
O(ln(N))
O(1)
Neo4j Spatial at LocationDay 2013 in Malmö

Neo4j Spatial at LocationDay 2013 in Malmö

Editor's Notes

  • #2 The purpose of this presentation is to introduce Neo4j Spatial, and two specific projects, the GSoC and OSM Mention Neo Technologies and AmanziTel, but no more We have a product in the market that uses uDig and Neo4j, but felt that our integration was too specific to our needs, and so decided to collaborate with Neo Technologies to produce a more generalized library available as an extension to the database
  • #7 KV: Dynomite, Voldemort, Tokyo* BigTable: HBase, Hypertable, Cassandra Document: CouchDB, MongoDB Graph: AllegroGraph, Sones, Neo4j
  • #8 The current success and popularity of NoSQL data models has been driven by the internet, and the associated explosion in the volume and interconnectedness of data.
  • #9 This example does highlight a few things about semi-structured data, schema-less databases and even opens the conversation for some discussions on performance (implicit indexes through local search, etc.)
  • #10 Storage: plugable – dataset, layer, encoder Search: Indexing is currently an R-Tree, but it is possible to plug in any custom mechanism conforming to the interface. Multi-dimensional index Spatial indices (quad-tree, R-tree, kn-tree, SFCs) Composite indices and dynamic indices Lucene