Neo4j Spatial - FooCafe September 2015
- 23. 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
- 31. Finding things close to other things
http://blog.neo4j.org/2011/03/neo4j-spatial-part1-finding-things.html
- 32. Finding things close to other things
http://blog.neo4j.org/2011/03/neo4j-spatial-part1-finding-things.html
- 34. 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'
)
- 39. 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)
- 44. What is Cypher?
sel ect skills.name
f rom users j oi n user_skills on (...) j oi n skills on (...)
where users.name = “Michael“
Consider SQL:
- 45. Cypher is for graph querying!
MATCH (me:User {name:'Michael'})-[:HAS_SKILL]->(skill)
RETURN skill.name
- 46. Cypher is for graph querying!
MATCH (me:Person {name:'Andreas'})-[:FRIEND]->(friend)
-[:FRIEND]->(friend2)
RETURN friend2
Editor's Notes
- 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
- 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