SlideShare a Scribd company logo
1 of 91
Download to read offline
Neo4j Spatial -
                          GIS for the rest
                               of us.
                            OSCON Data 2011


                                              #neo4j
       Peter Neubauer                         @peterneubauer
       Neo Technology                         peter@neotechnology.com

Saturday, July 30, 2011
We are hiring.
                              Now.
                          Contact me.

                                      #neo4j
                                      @peterneubauer
                                      peter@neotechnology.com

Saturday, July 30, 2011
Neo4j - ?




Saturday, July 30, 2011
The Neo4j model: Property Graph




Saturday, July 30, 2011
The Neo4j model: Property Graph



                          1       2




                              3




Saturday, July 30, 2011
The Neo4j model: Property Graph



                          1       2




                              3




Saturday, July 30, 2011
The Neo4j model: Property Graph
                                               name = “Emil”
                                               age = 29
                                               sex = “yes”




                                           1                         2



                          type = KNOWS
                          time = 4 years                       3

                                                                   type = car
                                                                   vendor = “SAAB”
                                                                   model = “95 Aero”




Saturday, July 30, 2011
Saturday, July 30, 2011
Impact Analytics, CMDB, Network
     Management, Provisioning




Saturday, July 30, 2011
Show me!




Saturday, July 30, 2011
Neo4j Spatial




Saturday, July 30, 2011
Components




                          9
Saturday, July 30, 2011
Components
     Core




                          9
Saturday, July 30, 2011
Components
     Core
            Storage




                          9
Saturday, July 30, 2011
Components
     Core
            Storage
            Search




                          9
Saturday, July 30, 2011
Components
     Core
            Storage
            Search
            GeoProcessing




                            9
Saturday, July 30, 2011
Components
     Core
            Storage
            Search
            GeoProcessing
            Import/export




                            9
Saturday, July 30, 2011
Components
     Core
            Storage
            Search
            GeoProcessing
            Import/export
     Extensions




                            9
Saturday, July 30, 2011
Components
     Core
            Storage
            Search
            GeoProcessing
            Import/export
     Extensions
            Geotools & GeoServer



                                   9
Saturday, July 30, 2011
Components
     Core
            Storage
            Search
            GeoProcessing
            Import/export
     Extensions
            Geotools & GeoServer
            uDig


                                   9
Saturday, July 30, 2011
Components
     Core
            Storage
            Search
            GeoProcessing
            Import/export
     Extensions
            Geotools & GeoServer
            uDig
            OpenStreetMap
                                   9
Saturday, July 30, 2011
Neo4j dynamic layers
                                       Geometry                    Layer1
                                       Encoder
                                       Dynamic
                                        Query                      Layer2
                                       Dynamic
                                        Styles                     Layer3
                          Multidim     Dynamic
                          Indexes      Meta-Inf


        Connected domain data        Neo4j Spatial   GIS and Spatial stacks




Saturday, July 30, 2011
Topics
     Open Street Map
     Layers
     Indexes
     Styling
     Geoprocessing
     Routing
     Examples



                          11
Saturday, July 30, 2011
Open StreetMap




Saturday, July 30, 2011
OpenStreetMap - Topology




                                13
Saturday, July 30, 2011
OSM Files
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="CGImap 0.0.2">
 <bounds minlat="56.0437000" minlon="12.9388000" maxlat="56.0761000"
maxlon="13.0109000"/>
 <node id="371662020" lat="56.0709040" lon="12.9639158" user="Grillo"
uid="13957" visible="true" version="2" changeset="5465617"
timestamp="2010-08-11T19:50:23Z"/>
....
 <way id="72090582" user="Craig Taverner" uid="48197" visible="true"
version="1" changeset="5474347" timestamp="2010-08-12T16:15:06Z">
  <nd ref="371662020"/>
  <nd ref="857081476"/>
  <nd ref="857081950"/>
  <nd ref="857081819"/>
  <nd ref="857081796"/>
  <nd ref="857081692"/>
  <nd ref="857081617"/>
  <nd ref="857081523"/>
  <tag k="highway" v="residential"/>
  <tag k="name" v="Nybrodalsvägen"/>
 </way>
</osm>




Saturday, July 30, 2011
OpenStreetMap




Saturday, July 30, 2011
OpenStreetMap




Saturday, July 30, 2011
OpenStreetMap




Saturday, July 30, 2011
OpenStreetMap




                          OSM




Saturday, July 30, 2011
OpenStreetMap




     Dynamic              OSM
      Layers




Saturday, July 30, 2011
OpenStreetMap




     Dynamic                              OSM
      Layers




                          Index (RTree)




Saturday, July 30, 2011
Layers




Saturday, July 30, 2011
From Graph to Layer




Saturday, July 30, 2011
From Graph to Layer
              GeometryEncoder - encode, decode




Saturday, July 30, 2011
From Graph to Layer
              GeometryEncoder - encode, decode
                          Property (wkt)




Saturday, July 30, 2011
From Graph to Layer
              GeometryEncoder - encode, decode
                          Property (wkt)
                          Properties (lon, lat)




Saturday, July 30, 2011
From Graph to Layer
              GeometryEncoder - encode, decode
                          Property (wkt)
                          Properties (lon, lat)
                          Subgraph (ways, polygons)




Saturday, July 30, 2011
From Graph to Layer
              GeometryEncoder - encode, decode
                          Property (wkt)
                          Properties (lon, lat)
                          Subgraph (ways, polygons)
                          Domain specific (e.g. OSM)




Saturday, July 30, 2011
From Graph to Layer
              GeometryEncoder - encode, decode
                          Property (wkt)
                          Properties (lon, lat)
                          Subgraph (ways, polygons)
                          Domain specific (e.g. OSM)
                               OSM Way encoding/decoding




Saturday, July 30, 2011
From Graph to Layer
              GeometryEncoder - encode, decode
                          Property (wkt)
                          Properties (lon, lat)
                          Subgraph (ways, polygons)
                          Domain specific (e.g. OSM)
                               OSM Way encoding/decoding
              CRS, Geometry type




Saturday, July 30, 2011
From Graph to Layer
              GeometryEncoder - encode, decode
                          Property (wkt)
                          Properties (lon, lat)
                          Subgraph (ways, polygons)
                          Domain specific (e.g. OSM)
                               OSM Way encoding/decoding
              CRS, Geometry type
              Styling




Saturday, July 30, 2011
From Graph to Layer
              GeometryEncoder - encode, decode
                          Property (wkt)
                          Properties (lon, lat)
                          Subgraph (ways, polygons)
                          Domain specific (e.g. OSM)
                               OSM Way encoding/decoding
              CRS, Geometry type
              Styling
              Dynamic Layers


Saturday, July 30, 2011
From Graph to Layer
              GeometryEncoder - encode, decode
                          Property (wkt)
                          Properties (lon, lat)
                          Subgraph (ways, polygons)
                          Domain specific (e.g. OSM)
                               OSM Way encoding/decoding
              CRS, Geometry type
              Styling
              Dynamic Layers
              Search
Saturday, July 30, 2011
Dynamic Layers, uDig




Saturday, July 30, 2011
Dynamic Layers, GeoServer




Saturday, July 30, 2011
Indexes




Saturday, July 30, 2011
Multiple indexes - GIS




           Illustrations: Wikipedia
Saturday, July 30, 2011
OpenStreetMap




Saturday, July 30, 2011
OpenStreetMap




     Dynamic                              OSM
      Layers




                          Index (RTree)




Saturday, July 30, 2011
In - graph indexing
      Index<Node> index = db.index().forNodes( "layer1");
      Node n1 = db.createNode();
      n1.setProperty( "lat", (double)56.2 );
      n1.setProperty( "lon", (double)15.3 );
      index.add( n1 );

      Java:
      index.query( LayerNodeIndex.BBOX_QUERY, "[15.0, 16.0, 56.0, 57.0]" );

      Cypher:
      START poi=(layer1,'bbox:[15.0, 16.0, 56.0, 57.0]')
      MATCH (poi) -[r] - (x)
      RETURN poi, r~TYPE, x.layer?

      Gremlin:
      g.idx('node')[[layer1: 'bbox:[15.0, 16.0, 56.0, 57.0]']]

Saturday, July 30, 2011
Styling




Saturday, July 30, 2011
Styling SLD
       <FeatureTypeStyle>
               <Rule>
                 <ogc:Filter>
                   <ogc:And>
                      <ogc:PropertyIsEqualTo>
                        <ogc:Function name="geometryType">
                          <ogc:PropertyName>the_geom</ogc:PropertyName>
                        </ogc:Function>
                        <ogc:Literal>LineString</ogc:Literal>
                      </ogc:PropertyIsEqualTo>
                      <ogc:Not>
                        <ogc:PropertyIsNull>
                          <ogc:PropertyName>highway</ogc:PropertyName>
                        </ogc:PropertyIsNull>
                      </ogc:Not>
                      <ogc:PropertyIsEqualTo>
                        <ogc:PropertyName>highway</ogc:PropertyName>
                        <ogc:Literal>residential</ogc:Literal>
                      </ogc:PropertyIsEqualTo>
                   </ogc:And>
                 </ogc:Filter>
                 <Symbolizers>.......</>
               </Rule>
       </FeatureTypeStyle>


Saturday, July 30, 2011
Styling SLD
       <FeatureTypeStyle>
               <Rule>
                 <Filter>.....</Filter>
                 <LineSymbolizer>
                   <Stroke>
                      <CssParameter name="stroke">#909090</CssParameter>
                      <CssParameter name="stroke-width">3</CssParameter>
                   </Stroke>
                 </LineSymbolizer>
                 <LineSymbolizer>
                   <Stroke>
                      <CssParameter name="stroke">#ffff80</CssParameter>
                      <CssParameter name="stroke-width">1</CssParameter>
                   </Stroke>
                 </LineSymbolizer>
               </Rule>
       </FeatureTypeStyle>




Saturday, July 30, 2011
Styling Ruby DSL
       require 'amanzi/sld'

       Amanzi::SLD::Config.config[:geometry_property] = 'the_geom'
       #Amanzi::SLD::Config.config[:verbose] = true

       sld = Amanzi::SLD::Document.new "Example Neo4j Spatial OSM
       Style"

       sld.comment "A style for residential streets"
       sld.
         add_line_symbolizer(:stroke => '#909090', :stroke_width => 3).
         add_line_symbolizer(:stroke => '#ffff80', :stroke_width => 1)
       do |f|
         f.op(:and) do |f|
            f.geometry = 'LineString'
            f.property.exists? 'highway'
            f.property['highway'] = 'residential'
         end
       end
       sld




Saturday, July 30, 2011
Dynamic Layers, styling




Saturday, July 30, 2011
Dynamic Layers, styling




Saturday, July 30, 2011
Dynamic Layers, styling




Saturday, July 30, 2011
Dynamic Layers, styling




Saturday, July 30, 2011
Geoprocessing




Saturday, July 30, 2011
GSoC: PostGIS -> OSM Graph




                                  33
Saturday, July 30, 2011
GSoC: PostGIS -> OSM Graph
     Outputs: GeoJSON, KML




                                  33
Saturday, July 30, 2011
GSoC: PostGIS -> OSM Graph
     Outputs: GeoJSON, KML




                                  33
Saturday, July 30, 2011
GSoC: PostGIS -> OSM Graph
     Outputs: GeoJSON, KML


     Accessors: ST_EndPoint




                                  33
Saturday, July 30, 2011
GSoC: PostGIS -> OSM Graph
     Outputs: GeoJSON, KML


     Accessors: ST_EndPoint




                                  33
Saturday, July 30, 2011
GSoC: PostGIS -> OSM Graph
     Outputs: GeoJSON, KML


     Accessors: ST_EndPoint


     Processing: ST_CLosest, ST_Disjoint




                                           33
Saturday, July 30, 2011
GSoC: PostGIS -> OSM Graph
     Outputs: GeoJSON, KML


     Accessors: ST_EndPoint


     Processing: ST_CLosest, ST_Disjoint




                                           33
Saturday, July 30, 2011
GSoC: PostGIS -> OSM Graph
     Outputs: GeoJSON, KML


     Accessors: ST_EndPoint


     Processing: ST_CLosest, ST_Disjoint


     Search: SearchWithin, SearchClosest, Route, etc



                                                       33
Saturday, July 30, 2011
GSoC: PostGIS -> OSM Graph
     Outputs: GeoJSON, KML


     Accessors: ST_EndPoint


     Processing: ST_CLosest, ST_Disjoint


     Search: SearchWithin, SearchClosest, Route, etc



                                                       33
Saturday, July 30, 2011
GSoC: PostGIS -> OSM Graph
     Outputs: GeoJSON, KML


     Accessors: ST_EndPoint


     Processing: ST_CLosest, ST_Disjoint


     Search: SearchWithin, SearchClosest, Route, etc


     Thanks Andreas Wilhelm!
                                                       33
Saturday, July 30, 2011
Routing




Saturday, July 30, 2011
Routing




Saturday, July 30, 2011
Graph - Algos, A*




Saturday, July 30, 2011
h"p://www.transportdublin.ie/	
  -­‐	
  Patrick	
  Fitzgerald	
  on	
  Neo4j
Saturday, July 30, 2011
Neo4j Spatial examples




Saturday, July 30, 2011
Polymap3




Saturday, July 30, 2011
AWE




Saturday, July 30, 2011
Cell network analysis




Saturday, July 30, 2011
Next steps




Saturday, July 30, 2011
Next steps
            Neo4j Spatial




Saturday, July 30, 2011
Next steps
            Neo4j Spatial
                      Cypher, Gremlin, CQL dynamic querying




Saturday, July 30, 2011
Next steps
            Neo4j Spatial
                      Cypher, Gremlin, CQL dynamic querying
                      Graph Geoprocessing domain level - GSoC 2011




Saturday, July 30, 2011
Next steps
            Neo4j Spatial
                      Cypher, Gremlin, CQL dynamic querying
                      Graph Geoprocessing domain level - GSoC 2011
                      Index Performance optimizations




Saturday, July 30, 2011
Next steps
            Neo4j Spatial
                      Cypher, Gremlin, CQL dynamic querying
                      Graph Geoprocessing domain level - GSoC 2011
                      Index Performance optimizations
                      Pluggable indexing, Composite Index




Saturday, July 30, 2011
Next steps
            Neo4j Spatial
                      Cypher, Gremlin, CQL dynamic querying
                      Graph Geoprocessing domain level - GSoC 2011
                      Index Performance optimizations
                      Pluggable indexing, Composite Index
                      Routing API support




Saturday, July 30, 2011
Next steps
            Neo4j Spatial
                      Cypher, Gremlin, CQL dynamic querying
                      Graph Geoprocessing domain level - GSoC 2011
                      Index Performance optimizations
                      Pluggable indexing, Composite Index
                      Routing API support
            OSM




Saturday, July 30, 2011
Next steps
            Neo4j Spatial
                      Cypher, Gremlin, CQL dynamic querying
                      Graph Geoprocessing domain level - GSoC 2011
                      Index Performance optimizations
                      Pluggable indexing, Composite Index
                      Routing API support
            OSM
                      uDig OSM Topology editor - GSoC 2011




Saturday, July 30, 2011
Next steps
            Neo4j Spatial
                      Cypher, Gremlin, CQL dynamic querying
                      Graph Geoprocessing domain level - GSoC 2011
                      Index Performance optimizations
                      Pluggable indexing, Composite Index
                      Routing API support
            OSM
                      uDig OSM Topology editor - GSoC 2011
                      OSM tests Germany, US



Saturday, July 30, 2011
Next steps
            Neo4j Spatial
                      Cypher, Gremlin, CQL dynamic querying
                      Graph Geoprocessing domain level - GSoC 2011
                      Index Performance optimizations
                      Pluggable indexing, Composite Index
                      Routing API support
            OSM
                      uDig OSM Topology editor - GSoC 2011
                      OSM tests Germany, US
                      Stitching for OSM datasets

Saturday, July 30, 2011
Get involved!

         http://github.com/neo4j/neo4j-spatial
         http://neo4j.org




Saturday, July 30, 2011
And - we are hiring!




                              http://neotechnology.com
                                                         44
Saturday, July 30, 2011

More Related Content

What's hot

Processing Landsat 8 Multi-Spectral Images with GRASS Tools & the potential o...
Processing Landsat 8 Multi-Spectral Images with GRASS Tools & the potential o...Processing Landsat 8 Multi-Spectral Images with GRASS Tools & the potential o...
Processing Landsat 8 Multi-Spectral Images with GRASS Tools & the potential o...Shaun Lewis
 
GeoDjango in a nutshell
GeoDjango in a nutshellGeoDjango in a nutshell
GeoDjango in a nutshellDjango Stars
 
Where Do We Put It All? Lessons Learned Housing Large Geospatial Data Collect...
Where Do We Put It All? Lessons Learned Housing Large Geospatial Data Collect...Where Do We Put It All? Lessons Learned Housing Large Geospatial Data Collect...
Where Do We Put It All? Lessons Learned Housing Large Geospatial Data Collect...nacis_slides
 
Serving earth observation data with GeoServer: addressing real world requirem...
Serving earth observation data with GeoServer: addressing real world requirem...Serving earth observation data with GeoServer: addressing real world requirem...
Serving earth observation data with GeoServer: addressing real world requirem...GeoSolutions
 
Raster Data In GeoServer And GeoTools: Achievements, Issues And Future Develo...
Raster Data In GeoServer And GeoTools: Achievements, Issues And Future Develo...Raster Data In GeoServer And GeoTools: Achievements, Issues And Future Develo...
Raster Data In GeoServer And GeoTools: Achievements, Issues And Future Develo...GeoSolutions
 
Map box styles in GeoServer and OpenLayers
Map box styles in GeoServer and OpenLayersMap box styles in GeoServer and OpenLayers
Map box styles in GeoServer and OpenLayersJody Garnett
 
Raster Data In GeoServer and GeoTools: Achievements, Issues And Future Develo...
Raster Data In GeoServer and GeoTools: Achievements, Issues And Future Develo...Raster Data In GeoServer and GeoTools: Achievements, Issues And Future Develo...
Raster Data In GeoServer and GeoTools: Achievements, Issues And Future Develo...GeoSolutions
 
Serving earth observation data with GeoServer: addressing real world requirem...
Serving earth observation data with GeoServer: addressing real world requirem...Serving earth observation data with GeoServer: addressing real world requirem...
Serving earth observation data with GeoServer: addressing real world requirem...GeoSolutions
 

What's hot (8)

Processing Landsat 8 Multi-Spectral Images with GRASS Tools & the potential o...
Processing Landsat 8 Multi-Spectral Images with GRASS Tools & the potential o...Processing Landsat 8 Multi-Spectral Images with GRASS Tools & the potential o...
Processing Landsat 8 Multi-Spectral Images with GRASS Tools & the potential o...
 
GeoDjango in a nutshell
GeoDjango in a nutshellGeoDjango in a nutshell
GeoDjango in a nutshell
 
Where Do We Put It All? Lessons Learned Housing Large Geospatial Data Collect...
Where Do We Put It All? Lessons Learned Housing Large Geospatial Data Collect...Where Do We Put It All? Lessons Learned Housing Large Geospatial Data Collect...
Where Do We Put It All? Lessons Learned Housing Large Geospatial Data Collect...
 
Serving earth observation data with GeoServer: addressing real world requirem...
Serving earth observation data with GeoServer: addressing real world requirem...Serving earth observation data with GeoServer: addressing real world requirem...
Serving earth observation data with GeoServer: addressing real world requirem...
 
Raster Data In GeoServer And GeoTools: Achievements, Issues And Future Develo...
Raster Data In GeoServer And GeoTools: Achievements, Issues And Future Develo...Raster Data In GeoServer And GeoTools: Achievements, Issues And Future Develo...
Raster Data In GeoServer And GeoTools: Achievements, Issues And Future Develo...
 
Map box styles in GeoServer and OpenLayers
Map box styles in GeoServer and OpenLayersMap box styles in GeoServer and OpenLayers
Map box styles in GeoServer and OpenLayers
 
Raster Data In GeoServer and GeoTools: Achievements, Issues And Future Develo...
Raster Data In GeoServer and GeoTools: Achievements, Issues And Future Develo...Raster Data In GeoServer and GeoTools: Achievements, Issues And Future Develo...
Raster Data In GeoServer and GeoTools: Achievements, Issues And Future Develo...
 
Serving earth observation data with GeoServer: addressing real world requirem...
Serving earth observation data with GeoServer: addressing real world requirem...Serving earth observation data with GeoServer: addressing real world requirem...
Serving earth observation data with GeoServer: addressing real world requirem...
 

Viewers also liked

OrientDB vs Neo4j - Comparison of query/speed/functionality
OrientDB vs Neo4j - Comparison of query/speed/functionalityOrientDB vs Neo4j - Comparison of query/speed/functionality
OrientDB vs Neo4j - Comparison of query/speed/functionalityCurtis Mosters
 
2010 09-neo4j-deutsche-telekom
2010 09-neo4j-deutsche-telekom2010 09-neo4j-deutsche-telekom
2010 09-neo4j-deutsche-telekomPeter Neubauer
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4jNeo4j
 
OrientDB vs Neo4j - and an introduction to NoSQL databases
OrientDB vs Neo4j - and an introduction to NoSQL databasesOrientDB vs Neo4j - and an introduction to NoSQL databases
OrientDB vs Neo4j - and an introduction to NoSQL databasesCurtis Mosters
 
​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.io
​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.io​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.io
​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.ioLuigi Dell'Aquila
 
OrientDB & Node.js Overview - JS.Everywhere() KW
OrientDB & Node.js Overview - JS.Everywhere() KWOrientDB & Node.js Overview - JS.Everywhere() KW
OrientDB & Node.js Overview - JS.Everywhere() KWgmccarvell
 
Performance of graph query languages
Performance of graph query languagesPerformance of graph query languages
Performance of graph query languagesAthiq Ahamed
 
Sistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingSistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingPriscila Mayumi
 
Persistent graphs in Python with Neo4j
Persistent graphs in Python with Neo4jPersistent graphs in Python with Neo4j
Persistent graphs in Python with Neo4jTobias Lindaaker
 
Neo4j - Rede de relacionamentos baseada em grafos
Neo4j - Rede de relacionamentos baseada em grafosNeo4j - Rede de relacionamentos baseada em grafos
Neo4j - Rede de relacionamentos baseada em grafosEvandro Venancio
 
Combine Spring Data Neo4j and Spring Boot to quickl
Combine Spring Data Neo4j and Spring Boot to quicklCombine Spring Data Neo4j and Spring Boot to quickl
Combine Spring Data Neo4j and Spring Boot to quicklNeo4j
 
Pattern Recognition in Multiple Bike sharing Systems for comparability
Pattern Recognition in Multiple Bike sharing Systems for comparabilityPattern Recognition in Multiple Bike sharing Systems for comparability
Pattern Recognition in Multiple Bike sharing Systems for comparability Athiq Ahamed
 
Django and Neo4j - Domain modeling that kicks ass
Django and Neo4j - Domain modeling that kicks assDjango and Neo4j - Domain modeling that kicks ass
Django and Neo4j - Domain modeling that kicks assTobias Lindaaker
 
Neo4j - graph database for recommendations
Neo4j - graph database for recommendationsNeo4j - graph database for recommendations
Neo4j - graph database for recommendationsproksik
 

Viewers also liked (20)

OrientDB vs Neo4j - Comparison of query/speed/functionality
OrientDB vs Neo4j - Comparison of query/speed/functionalityOrientDB vs Neo4j - Comparison of query/speed/functionality
OrientDB vs Neo4j - Comparison of query/speed/functionality
 
2010 09-neo4j-deutsche-telekom
2010 09-neo4j-deutsche-telekom2010 09-neo4j-deutsche-telekom
2010 09-neo4j-deutsche-telekom
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4j
 
OrientDB vs Neo4j - and an introduction to NoSQL databases
OrientDB vs Neo4j - and an introduction to NoSQL databasesOrientDB vs Neo4j - and an introduction to NoSQL databases
OrientDB vs Neo4j - and an introduction to NoSQL databases
 
​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.io
​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.io​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.io
​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.io
 
OrientDB & Node.js Overview - JS.Everywhere() KW
OrientDB & Node.js Overview - JS.Everywhere() KWOrientDB & Node.js Overview - JS.Everywhere() KW
OrientDB & Node.js Overview - JS.Everywhere() KW
 
Nosqlba
NosqlbaNosqlba
Nosqlba
 
Neo4 j
Neo4 jNeo4 j
Neo4 j
 
Performance of graph query languages
Performance of graph query languagesPerformance of graph query languages
Performance of graph query languages
 
Open Shading Language (OSL)
Open Shading Language (OSL)Open Shading Language (OSL)
Open Shading Language (OSL)
 
Sistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingSistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computing
 
No sql std
No sql stdNo sql std
No sql std
 
Persistent graphs in Python with Neo4j
Persistent graphs in Python with Neo4jPersistent graphs in Python with Neo4j
Persistent graphs in Python with Neo4j
 
Neo4j - Rede de relacionamentos baseada em grafos
Neo4j - Rede de relacionamentos baseada em grafosNeo4j - Rede de relacionamentos baseada em grafos
Neo4j - Rede de relacionamentos baseada em grafos
 
Combine Spring Data Neo4j and Spring Boot to quickl
Combine Spring Data Neo4j and Spring Boot to quicklCombine Spring Data Neo4j and Spring Boot to quickl
Combine Spring Data Neo4j and Spring Boot to quickl
 
Pattern Recognition in Multiple Bike sharing Systems for comparability
Pattern Recognition in Multiple Bike sharing Systems for comparabilityPattern Recognition in Multiple Bike sharing Systems for comparability
Pattern Recognition in Multiple Bike sharing Systems for comparability
 
Introdução ao neo4j
Introdução ao neo4jIntrodução ao neo4j
Introdução ao neo4j
 
Django and Neo4j - Domain modeling that kicks ass
Django and Neo4j - Domain modeling that kicks assDjango and Neo4j - Domain modeling that kicks ass
Django and Neo4j - Domain modeling that kicks ass
 
OSM- An Introduction
OSM- An IntroductionOSM- An Introduction
OSM- An Introduction
 
Neo4j - graph database for recommendations
Neo4j - graph database for recommendationsNeo4j - graph database for recommendations
Neo4j - graph database for recommendations
 

Similar to Neo4j Spatial - GIS for the rest of us.

Ruby goes to hollywood
Ruby goes to hollywoodRuby goes to hollywood
Ruby goes to hollywoodehuard
 
Modular gps platform 2010
Modular gps platform   2010Modular gps platform   2010
Modular gps platform 2010Osama Attia
 
BDD For Zend Framework With PHPSpec
BDD For Zend Framework With PHPSpecBDD For Zend Framework With PHPSpec
BDD For Zend Framework With PHPSpecMarcello Duarte
 
12 hours to rate a rails application
12 hours to rate a rails application12 hours to rate a rails application
12 hours to rate a rails applicationehuard
 
Brisk: more powerful Hadoop powered by Cassandra
Brisk: more powerful Hadoop powered by CassandraBrisk: more powerful Hadoop powered by Cassandra
Brisk: more powerful Hadoop powered by Cassandrajbellis
 

Similar to Neo4j Spatial - GIS for the rest of us. (10)

Geolinkeddata 07042011 1
Geolinkeddata 07042011 1Geolinkeddata 07042011 1
Geolinkeddata 07042011 1
 
GeoLinkedData
GeoLinkedDataGeoLinkedData
GeoLinkedData
 
Ruby goes to hollywood
Ruby goes to hollywoodRuby goes to hollywood
Ruby goes to hollywood
 
GWT Plus HTML 5
GWT Plus HTML 5GWT Plus HTML 5
GWT Plus HTML 5
 
Clustered Serialization with Fuel
Clustered Serialization with FuelClustered Serialization with Fuel
Clustered Serialization with Fuel
 
Modular gps platform 2010
Modular gps platform   2010Modular gps platform   2010
Modular gps platform 2010
 
Osaka.R #6 LT
Osaka.R #6 LTOsaka.R #6 LT
Osaka.R #6 LT
 
BDD For Zend Framework With PHPSpec
BDD For Zend Framework With PHPSpecBDD For Zend Framework With PHPSpec
BDD For Zend Framework With PHPSpec
 
12 hours to rate a rails application
12 hours to rate a rails application12 hours to rate a rails application
12 hours to rate a rails application
 
Brisk: more powerful Hadoop powered by Cassandra
Brisk: more powerful Hadoop powered by CassandraBrisk: more powerful Hadoop powered by Cassandra
Brisk: more powerful Hadoop powered by Cassandra
 

More from Peter Neubauer

2012 09 GDG San Francisco Hackday at Parisoma
2012 09 GDG San Francisco Hackday at Parisoma2012 09 GDG San Francisco Hackday at Parisoma
2012 09 GDG San Francisco Hackday at ParisomaPeter Neubauer
 
2012 09 SF Data Mining zero to hero
2012 09 SF Data Mining zero to hero2012 09 SF Data Mining zero to hero
2012 09 SF Data Mining zero to heroPeter Neubauer
 
Test driven documentation
Test driven documentationTest driven documentation
Test driven documentationPeter Neubauer
 
Neo4j at @PolyglotVancouver
Neo4j at @PolyglotVancouverNeo4j at @PolyglotVancouver
Neo4j at @PolyglotVancouverPeter Neubauer
 
From Zero to Hero - Neo4j and Cypher.
From Zero to Hero - Neo4j and Cypher.From Zero to Hero - Neo4j and Cypher.
From Zero to Hero - Neo4j and Cypher.Peter Neubauer
 
Tips for building communitites with limited resources
Tips for building communitites with limited resourcesTips for building communitites with limited resources
Tips for building communitites with limited resourcesPeter Neubauer
 
Intro to Neo4j or why insurances should love graphs
Intro to Neo4j or why insurances should love graphsIntro to Neo4j or why insurances should love graphs
Intro to Neo4j or why insurances should love graphsPeter Neubauer
 
Geekout Tallinn - Neo4j for the rescue!
Geekout Tallinn - Neo4j for the rescue!Geekout Tallinn - Neo4j for the rescue!
Geekout Tallinn - Neo4j for the rescue!Peter Neubauer
 
GDM 2011 - Neo4j and real world apps.
GDM 2011 - Neo4j and real world apps.GDM 2011 - Neo4j and real world apps.
GDM 2011 - Neo4j and real world apps.Peter Neubauer
 
Neo4j - 5 cool graph examples
Neo4j - 5 cool graph examplesNeo4j - 5 cool graph examples
Neo4j - 5 cool graph examplesPeter Neubauer
 

More from Peter Neubauer (13)

Intro to Neo4j 2.0
Intro to Neo4j 2.0Intro to Neo4j 2.0
Intro to Neo4j 2.0
 
2012 09 GDG San Francisco Hackday at Parisoma
2012 09 GDG San Francisco Hackday at Parisoma2012 09 GDG San Francisco Hackday at Parisoma
2012 09 GDG San Francisco Hackday at Parisoma
 
2012 09 SF Data Mining zero to hero
2012 09 SF Data Mining zero to hero2012 09 SF Data Mining zero to hero
2012 09 SF Data Mining zero to hero
 
Test driven documentation
Test driven documentationTest driven documentation
Test driven documentation
 
Neo4j at @PolyglotVancouver
Neo4j at @PolyglotVancouverNeo4j at @PolyglotVancouver
Neo4j at @PolyglotVancouver
 
From Zero to Hero - Neo4j and Cypher.
From Zero to Hero - Neo4j and Cypher.From Zero to Hero - Neo4j and Cypher.
From Zero to Hero - Neo4j and Cypher.
 
Tips for building communitites with limited resources
Tips for building communitites with limited resourcesTips for building communitites with limited resources
Tips for building communitites with limited resources
 
Intro to Neo4j or why insurances should love graphs
Intro to Neo4j or why insurances should love graphsIntro to Neo4j or why insurances should love graphs
Intro to Neo4j or why insurances should love graphs
 
2011 11-öredev
2011 11-öredev2011 11-öredev
2011 11-öredev
 
Geekout Tallinn - Neo4j for the rescue!
Geekout Tallinn - Neo4j for the rescue!Geekout Tallinn - Neo4j for the rescue!
Geekout Tallinn - Neo4j for the rescue!
 
GDM 2011 - Neo4j and real world apps.
GDM 2011 - Neo4j and real world apps.GDM 2011 - Neo4j and real world apps.
GDM 2011 - Neo4j and real world apps.
 
Neo4j - 5 cool graph examples
Neo4j - 5 cool graph examplesNeo4j - 5 cool graph examples
Neo4j - 5 cool graph examples
 
Neo4j Nosqllive
Neo4j NosqlliveNeo4j Nosqllive
Neo4j Nosqllive
 

Recently uploaded

Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 

Recently uploaded (20)

Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 

Neo4j Spatial - GIS for the rest of us.

  • 1. Neo4j Spatial - GIS for the rest of us. OSCON Data 2011 #neo4j Peter Neubauer @peterneubauer Neo Technology peter@neotechnology.com Saturday, July 30, 2011
  • 2. We are hiring. Now. Contact me. #neo4j @peterneubauer peter@neotechnology.com Saturday, July 30, 2011
  • 3. Neo4j - ? Saturday, July 30, 2011
  • 4. The Neo4j model: Property Graph Saturday, July 30, 2011
  • 5. The Neo4j model: Property Graph 1 2 3 Saturday, July 30, 2011
  • 6. The Neo4j model: Property Graph 1 2 3 Saturday, July 30, 2011
  • 7. The Neo4j model: Property Graph name = “Emil” age = 29 sex = “yes” 1 2 type = KNOWS time = 4 years 3 type = car vendor = “SAAB” model = “95 Aero” Saturday, July 30, 2011
  • 9. Impact Analytics, CMDB, Network Management, Provisioning Saturday, July 30, 2011
  • 12. Components 9 Saturday, July 30, 2011
  • 13. Components Core 9 Saturday, July 30, 2011
  • 14. Components Core Storage 9 Saturday, July 30, 2011
  • 15. Components Core Storage Search 9 Saturday, July 30, 2011
  • 16. Components Core Storage Search GeoProcessing 9 Saturday, July 30, 2011
  • 17. Components Core Storage Search GeoProcessing Import/export 9 Saturday, July 30, 2011
  • 18. Components Core Storage Search GeoProcessing Import/export Extensions 9 Saturday, July 30, 2011
  • 19. Components Core Storage Search GeoProcessing Import/export Extensions Geotools & GeoServer 9 Saturday, July 30, 2011
  • 20. Components Core Storage Search GeoProcessing Import/export Extensions Geotools & GeoServer uDig 9 Saturday, July 30, 2011
  • 21. Components Core Storage Search GeoProcessing Import/export Extensions Geotools & GeoServer uDig OpenStreetMap 9 Saturday, July 30, 2011
  • 22. Neo4j dynamic layers Geometry Layer1 Encoder Dynamic Query Layer2 Dynamic Styles Layer3 Multidim Dynamic Indexes Meta-Inf Connected domain data Neo4j Spatial GIS and Spatial stacks Saturday, July 30, 2011
  • 23. Topics Open Street Map Layers Indexes Styling Geoprocessing Routing Examples 11 Saturday, July 30, 2011
  • 25. OpenStreetMap - Topology 13 Saturday, July 30, 2011
  • 26. OSM Files <?xml version="1.0" encoding="UTF-8"?> <osm version="0.6" generator="CGImap 0.0.2"> <bounds minlat="56.0437000" minlon="12.9388000" maxlat="56.0761000" maxlon="13.0109000"/> <node id="371662020" lat="56.0709040" lon="12.9639158" user="Grillo" uid="13957" visible="true" version="2" changeset="5465617" timestamp="2010-08-11T19:50:23Z"/> .... <way id="72090582" user="Craig Taverner" uid="48197" visible="true" version="1" changeset="5474347" timestamp="2010-08-12T16:15:06Z"> <nd ref="371662020"/> <nd ref="857081476"/> <nd ref="857081950"/> <nd ref="857081819"/> <nd ref="857081796"/> <nd ref="857081692"/> <nd ref="857081617"/> <nd ref="857081523"/> <tag k="highway" v="residential"/> <tag k="name" v="Nybrodalsvägen"/> </way> </osm> Saturday, July 30, 2011
  • 30. OpenStreetMap OSM Saturday, July 30, 2011
  • 31. OpenStreetMap Dynamic OSM Layers Saturday, July 30, 2011
  • 32. OpenStreetMap Dynamic OSM Layers Index (RTree) Saturday, July 30, 2011
  • 34. From Graph to Layer Saturday, July 30, 2011
  • 35. From Graph to Layer GeometryEncoder - encode, decode Saturday, July 30, 2011
  • 36. From Graph to Layer GeometryEncoder - encode, decode Property (wkt) Saturday, July 30, 2011
  • 37. From Graph to Layer GeometryEncoder - encode, decode Property (wkt) Properties (lon, lat) Saturday, July 30, 2011
  • 38. From Graph to Layer GeometryEncoder - encode, decode Property (wkt) Properties (lon, lat) Subgraph (ways, polygons) Saturday, July 30, 2011
  • 39. From Graph to Layer GeometryEncoder - encode, decode Property (wkt) Properties (lon, lat) Subgraph (ways, polygons) Domain specific (e.g. OSM) Saturday, July 30, 2011
  • 40. From Graph to Layer GeometryEncoder - encode, decode Property (wkt) Properties (lon, lat) Subgraph (ways, polygons) Domain specific (e.g. OSM) OSM Way encoding/decoding Saturday, July 30, 2011
  • 41. From Graph to Layer GeometryEncoder - encode, decode Property (wkt) Properties (lon, lat) Subgraph (ways, polygons) Domain specific (e.g. OSM) OSM Way encoding/decoding CRS, Geometry type Saturday, July 30, 2011
  • 42. From Graph to Layer GeometryEncoder - encode, decode Property (wkt) Properties (lon, lat) Subgraph (ways, polygons) Domain specific (e.g. OSM) OSM Way encoding/decoding CRS, Geometry type Styling Saturday, July 30, 2011
  • 43. From Graph to Layer GeometryEncoder - encode, decode Property (wkt) Properties (lon, lat) Subgraph (ways, polygons) Domain specific (e.g. OSM) OSM Way encoding/decoding CRS, Geometry type Styling Dynamic Layers Saturday, July 30, 2011
  • 44. From Graph to Layer GeometryEncoder - encode, decode Property (wkt) Properties (lon, lat) Subgraph (ways, polygons) Domain specific (e.g. OSM) OSM Way encoding/decoding CRS, Geometry type Styling Dynamic Layers Search Saturday, July 30, 2011
  • 48. Multiple indexes - GIS Illustrations: Wikipedia Saturday, July 30, 2011
  • 50. OpenStreetMap Dynamic OSM Layers Index (RTree) Saturday, July 30, 2011
  • 51. In - graph indexing Index<Node> index = db.index().forNodes( "layer1"); Node n1 = db.createNode(); n1.setProperty( "lat", (double)56.2 ); n1.setProperty( "lon", (double)15.3 ); index.add( n1 ); Java: index.query( LayerNodeIndex.BBOX_QUERY, "[15.0, 16.0, 56.0, 57.0]" ); Cypher: START poi=(layer1,'bbox:[15.0, 16.0, 56.0, 57.0]') MATCH (poi) -[r] - (x) RETURN poi, r~TYPE, x.layer? Gremlin: g.idx('node')[[layer1: 'bbox:[15.0, 16.0, 56.0, 57.0]']] Saturday, July 30, 2011
  • 53. Styling SLD <FeatureTypeStyle> <Rule> <ogc:Filter> <ogc:And> <ogc:PropertyIsEqualTo> <ogc:Function name="geometryType"> <ogc:PropertyName>the_geom</ogc:PropertyName> </ogc:Function> <ogc:Literal>LineString</ogc:Literal> </ogc:PropertyIsEqualTo> <ogc:Not> <ogc:PropertyIsNull> <ogc:PropertyName>highway</ogc:PropertyName> </ogc:PropertyIsNull> </ogc:Not> <ogc:PropertyIsEqualTo> <ogc:PropertyName>highway</ogc:PropertyName> <ogc:Literal>residential</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:And> </ogc:Filter> <Symbolizers>.......</> </Rule> </FeatureTypeStyle> Saturday, July 30, 2011
  • 54. Styling SLD <FeatureTypeStyle> <Rule> <Filter>.....</Filter> <LineSymbolizer> <Stroke> <CssParameter name="stroke">#909090</CssParameter> <CssParameter name="stroke-width">3</CssParameter> </Stroke> </LineSymbolizer> <LineSymbolizer> <Stroke> <CssParameter name="stroke">#ffff80</CssParameter> <CssParameter name="stroke-width">1</CssParameter> </Stroke> </LineSymbolizer> </Rule> </FeatureTypeStyle> Saturday, July 30, 2011
  • 55. Styling Ruby DSL require 'amanzi/sld' Amanzi::SLD::Config.config[:geometry_property] = 'the_geom' #Amanzi::SLD::Config.config[:verbose] = true sld = Amanzi::SLD::Document.new "Example Neo4j Spatial OSM Style" sld.comment "A style for residential streets" sld. add_line_symbolizer(:stroke => '#909090', :stroke_width => 3). add_line_symbolizer(:stroke => '#ffff80', :stroke_width => 1) do |f| f.op(:and) do |f| f.geometry = 'LineString' f.property.exists? 'highway' f.property['highway'] = 'residential' end end sld Saturday, July 30, 2011
  • 61. GSoC: PostGIS -> OSM Graph 33 Saturday, July 30, 2011
  • 62. GSoC: PostGIS -> OSM Graph Outputs: GeoJSON, KML 33 Saturday, July 30, 2011
  • 63. GSoC: PostGIS -> OSM Graph Outputs: GeoJSON, KML 33 Saturday, July 30, 2011
  • 64. GSoC: PostGIS -> OSM Graph Outputs: GeoJSON, KML Accessors: ST_EndPoint 33 Saturday, July 30, 2011
  • 65. GSoC: PostGIS -> OSM Graph Outputs: GeoJSON, KML Accessors: ST_EndPoint 33 Saturday, July 30, 2011
  • 66. GSoC: PostGIS -> OSM Graph Outputs: GeoJSON, KML Accessors: ST_EndPoint Processing: ST_CLosest, ST_Disjoint 33 Saturday, July 30, 2011
  • 67. GSoC: PostGIS -> OSM Graph Outputs: GeoJSON, KML Accessors: ST_EndPoint Processing: ST_CLosest, ST_Disjoint 33 Saturday, July 30, 2011
  • 68. GSoC: PostGIS -> OSM Graph Outputs: GeoJSON, KML Accessors: ST_EndPoint Processing: ST_CLosest, ST_Disjoint Search: SearchWithin, SearchClosest, Route, etc 33 Saturday, July 30, 2011
  • 69. GSoC: PostGIS -> OSM Graph Outputs: GeoJSON, KML Accessors: ST_EndPoint Processing: ST_CLosest, ST_Disjoint Search: SearchWithin, SearchClosest, Route, etc 33 Saturday, July 30, 2011
  • 70. GSoC: PostGIS -> OSM Graph Outputs: GeoJSON, KML Accessors: ST_EndPoint Processing: ST_CLosest, ST_Disjoint Search: SearchWithin, SearchClosest, Route, etc Thanks Andreas Wilhelm! 33 Saturday, July 30, 2011
  • 73. Graph - Algos, A* Saturday, July 30, 2011
  • 74. h"p://www.transportdublin.ie/  -­‐  Patrick  Fitzgerald  on  Neo4j Saturday, July 30, 2011
  • 80. Next steps Neo4j Spatial Saturday, July 30, 2011
  • 81. Next steps Neo4j Spatial Cypher, Gremlin, CQL dynamic querying Saturday, July 30, 2011
  • 82. Next steps Neo4j Spatial Cypher, Gremlin, CQL dynamic querying Graph Geoprocessing domain level - GSoC 2011 Saturday, July 30, 2011
  • 83. Next steps Neo4j Spatial Cypher, Gremlin, CQL dynamic querying Graph Geoprocessing domain level - GSoC 2011 Index Performance optimizations Saturday, July 30, 2011
  • 84. Next steps Neo4j Spatial Cypher, Gremlin, CQL dynamic querying Graph Geoprocessing domain level - GSoC 2011 Index Performance optimizations Pluggable indexing, Composite Index Saturday, July 30, 2011
  • 85. Next steps Neo4j Spatial Cypher, Gremlin, CQL dynamic querying Graph Geoprocessing domain level - GSoC 2011 Index Performance optimizations Pluggable indexing, Composite Index Routing API support Saturday, July 30, 2011
  • 86. Next steps Neo4j Spatial Cypher, Gremlin, CQL dynamic querying Graph Geoprocessing domain level - GSoC 2011 Index Performance optimizations Pluggable indexing, Composite Index Routing API support OSM Saturday, July 30, 2011
  • 87. Next steps Neo4j Spatial Cypher, Gremlin, CQL dynamic querying Graph Geoprocessing domain level - GSoC 2011 Index Performance optimizations Pluggable indexing, Composite Index Routing API support OSM uDig OSM Topology editor - GSoC 2011 Saturday, July 30, 2011
  • 88. Next steps Neo4j Spatial Cypher, Gremlin, CQL dynamic querying Graph Geoprocessing domain level - GSoC 2011 Index Performance optimizations Pluggable indexing, Composite Index Routing API support OSM uDig OSM Topology editor - GSoC 2011 OSM tests Germany, US Saturday, July 30, 2011
  • 89. Next steps Neo4j Spatial Cypher, Gremlin, CQL dynamic querying Graph Geoprocessing domain level - GSoC 2011 Index Performance optimizations Pluggable indexing, Composite Index Routing API support OSM uDig OSM Topology editor - GSoC 2011 OSM tests Germany, US Stitching for OSM datasets Saturday, July 30, 2011
  • 90. Get involved! http://github.com/neo4j/neo4j-spatial http://neo4j.org Saturday, July 30, 2011
  • 91. And - we are hiring! http://neotechnology.com 44 Saturday, July 30, 2011