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
 
NodeJS, CoffeeScript & Real-time Web
NodeJS, CoffeeScript & Real-time WebNodeJS, CoffeeScript & Real-time Web
NodeJS, CoffeeScript & Real-time WebJakub Nesetril
 
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. (11)

GeoLinkedData
GeoLinkedDataGeoLinkedData
GeoLinkedData
 
Geolinkeddata 07042011 1
Geolinkeddata 07042011 1Geolinkeddata 07042011 1
Geolinkeddata 07042011 1
 
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
 
NodeJS, CoffeeScript & Real-time Web
NodeJS, CoffeeScript & Real-time WebNodeJS, CoffeeScript & Real-time Web
NodeJS, CoffeeScript & Real-time Web
 
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

IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 

Recently uploaded (20)

IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 

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