Neo4j Spatial - FooCafe September 2015
-
Upload
craig-taverner -
Category
Data & Analytics
-
view
530 -
download
3
Transcript of Neo4j Spatial - FooCafe September 2015
Neo Technology
Neo4j
Spatial
Craig Taverner
Neo Technology
#neo4j@[email protected]
Web Map Data with Neo4j-Spatial
and OpenStreetMap
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
Where are the Mushrooms?
Where are the Mushrooms?
Social Network
(Network) Impact Analysis
Logistics & Routing
Route Finding
Recommendations
Access Control
Fraud Analysis
What is a graph, anyway?
A Graph
VertexEdge
A Graph
NodeRelationship
Property Graph Data Model
Nodes
Relationships
Relationships
Labels
Graph Building Blocks
Nodesentities
Relationshipsconnect entities and structure domain
Propertiesattributes and metadata
Labelsentities roles and grouping
What is Neo4j Spatial?
Neo4j Spatial 2010
GSoC 2010CoreStorage, GeometryEncoder
Search/RTree, Operations
I/O (Shapefile)
ExtensionsGeotools Datastore
GeoServer & uDig
Ruby APIneo4j-spatial.rb (Rubygem)
OpenStreetMapImport OSM, Dynamic Layers (JSON & CQL)
Export Shapefiles, and SLD styled PNG
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
Neo4j OSM in uDig
OpenStreetMap
OpenStreetMap
OpenStreetMap
OpenStreetMap
OSMRTree DynamicLayersDynamicLayers
Routing on OSM
Neo4j-Spatial 2011
OSMPerformance
Changesets and Users
GeoprocessingLBS and SimplePointLayer
Routing OSM
GSoC 2011 Geoprocessing functions
Data Mining OSM
What's nextGeoprocessing 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
IDSiteLatitudeLongitude
1ABC55.67812.567
2XYZ55.89012.123
3PRQ55.54312.890
IDSectorSiteIDAzimuthBeamwidth
1110100
221120100
331240100
412090
522120110
63224090
7130180
823180180
O(N)
O(ln(N))
O(1)
What's next?
Spatial Cypher!
Spatial Cypher GSoC Demo
What is Cypher?
select skills.name from users join user_skills on (...) join skills on (...)where users.name = Michael
Consider SQL:
Cypher is for graph querying!
MATCH (me:User {name:'Michael'})-[:HAS_SKILL]->(skill)RETURN skill.name
Cypher is for graph querying!
MATCH (me:Person {name:'Andreas'})-[:FRIEND]->(friend) -[:FRIEND]->(friend2) RETURN friend2
Point Index
Search within polygon
Search within polygon
Index polygons?
Questions?
Click to edit the title text format
Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline LevelSeventh Outline LevelEighth Outline LevelNinth Outline Level
Click to edit the title text format
Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline LevelSeventh Outline LevelEighth Outline LevelNinth Outline Level
Click to edit the title text format
Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline LevelSeventh Outline LevelEighth Outline LevelNinth Outline Level