SlideShare uma empresa Scribd logo
1 de 74
Baixar para ler offline
Build A Routing Web App
With Neo4j, OpenStreetMap, & Leaflet.js
William Lyon
Neo4j
@lyonwj
lyonwj.com
dev.neo4j.com/routing-workshop
Building A Routing Web Application With Neo4j, OpenStreetMap, and Leaflet.js
Learn how to work with geospatial data in the Neo4j graph database in this hands-on workshop. We’ll start by
covering the spatial types and functions available in the Cypher query language and Neo4j then move on to spatial
search operations and routing with graph algorithms. We’ll import data from OpenStreetMap and see how to use the
Neo4j JavaScript driver to build a navigation web application to find routes between points of interest and addresses.
3
About Me
William Lyon
Developer Advocate @ Neo4j
@lyonwj
lyonwj.com
dev.neo4j.com/routing-workshop
About Me
William Lyon
Developer Relations Engineer, Neo4j
@lyonwj
lyonwj.com
dev.neo4j.com/graphql-book
https://twitter.com/lyonwj/status/1623731007332716544
Build A Routing Web App W/ OpenStreetMap, Neo4j, & Leaflet.js
● Address / point of interest data
● Auto-complete search
● Plot shortest route between
locations
Build A Routing Web App With Neo4j, OSM, & Leaflet.js
Agenda
Modules:
● Intro to Neo4j & Spatial Cypher
● Working With OpenStreetMap Data
● Building Web Maps With Leaflet.js
Hands-On exercises using:
● Neo4j AuraDB Free Tier
● Python notebook
○ Local Python environment
○ GitHub Codespaces
○ Google Colab
● JavaScript / HTML
○ Local web browser
○ GitHub Codespaces
Hands-On
Exercise
Slides: dev.neo4j.com/routing-workshop
GitHub repo: dev.neo4j.com/routing-workshop-github
Build A Routing Web App With Neo4j, OSM, & Leaflet.js
Pre-requisites
● Either a local Python development environment or a GitHub account to use
GitHub Codespaces (recommended) or Google Colab
● Neo4j AuraDB (Free Tier)
○ Sign in and create free account: dev.neo4j.com/aura
Slides: dev.neo4j.com/routing-workshop
GitHub repo: dev.neo4j.com/routing-workshop-github
Resources
● Slides:
○ dev.neo4j.com/routing-workshop
● Code:
○ dev.neo4j.com/routing-workshop-github
10
Intro To Neo4j & Spatial Cypher
Intro to Neo4j & Spatial Cypher - Routing With Neo4j
● Slides / demo with airports
● set up Aura Free instance
● show we're going to build
● demo bloom (?)
Points, Lines, Polygons, & Graphs
● Spatial Cypher functions
○ Point, distance, index
● Spatial search with Neo4j
● Routing
● QGIS + Neo4j
● Combining datasets
Tobler's First Law Of Geography
http://southwesterngis.blogspot.com/2014/02/toblers-first-law-of-geography.html
Tobler's First Law Of Geography
Minneapolis
San Jose
Santa Cruz
San Mateo
San Francisco
Tobler's First Law Of Geography
What Is A Graph?
What Is A Property Graph?
What Is A Knowledge Graph? Knowledge graphs put things in context
"Things, not strings" https://blog.google/products/search/introducing-knowledge-graph-things-not/
Graph Database
● Database management system (DBMS)
● Property Graph data model
● Cypher query language
● Graph analytics
● Data visualization
● Neo4j Aura database-as-a-service
● Native spatial types / index
What is Neo4j?
neo4j.com
News As A Knowledge Graph
Using The NYTimes API
Requirements:
● View articles
○ Most recent
● Search articles
○ Keyword, date range
● Comments
● Save articles
● Personalized recommendations
○ My interests
○ Location-based
Data from NYTimes API: developer.nytimes.com
Code: github.com/johnymontana/news-graph
Spectrum Of Graph Access Patterns
"Local" Graph Traversals
Transactional use cases
Operational workloads
"Global" Graph Traversals
Analytics use cases
Graph Data Science
Graph Algorithms
Graph Local Graph Global
Overview of Graph Algorithms
● Path finding
○ Routing
○ A*, Breadth/Depth First Search
● Centrality
○ Most important nodes in the graph
○ PageRank, Closeness,
Betweenness, Degree
● Community detection /
clustering
○ Group nodes, strength of clusters
○ Louvain, Label propagation
● Node Similarity
● Machine learning
○ Link prediction
○ Node Embeddings
○ Node Classification
https://neo4j.com/developer/graph-data-science/graph-algorithms/
23
Spatial Cypher Functions
The Point type in Neo4j
● Support for 2D or 3D geographic (WGS84) or cartesian coordinate
reference system (CRS)
https://neo4j.com/docs/cypher-manual/current/syntax/spatial/
RETURN point(
{latitude:49.38713, longitude:12.12711}
)
╒════════════════════════════════════════════════╕
│"point({latitude:49.38713, longitude:12.12711})"│
╞════════════════════════════════════════════════╡
│point({srid:4326, x:12.12711, y:49.38713}) │
└────────────────────────────────────────────────┘
The Point type in Neo4j
● Points can be stored as properties on nodes and relationships
https://neo4j.com/docs/cypher-manual/current/syntax/spatial/
CREATE (p:PointOfInterest)
SET p.name = "West Side Bakery",
p.location = point(
{latitude:49.38713, longitude:12.12711}
)
RETURN p
Spatial Functions In Cypher ● point.distance()
● point.withinBBox()
● point()
https://neo4j.com/docs/cypher-manual/current/functions/spatial/
MATCH (p:PointOfInterest)
WHERE point.distance(
p.location, point({latitude:49.38713, longitude:12.12711})
) < 200
RETURN p
Querying The News Graph Cypher + Neo4j Browser
News As A Knowledge Graph
Using The NYTimes API
Requirements:
● View articles
○ Most recent
● Search articles
○ Keyword, date range
● Comments
● Save articles
● Personalized recommendations
○ My interests
○ Location-based
Data from NYTimes API: developer.nytimes.com
Code: github.com/johnymontana/news-graph
Geocoding With APOC
CALL apoc.spatial.geocode('Union House, London') YIELD location
{
"latitude": 51.503811999999996,
"description": "Union House, 182-194, Union Street, Bankside, Southwark, London
Borough of Southwark, London, Greater London, England, SE1 8LB, United Kingdom",
"longitude": -0.10101799277699847
}
https://neo4j.com/labs/apoc/4.1/overview/apoc.spatial/apoc.spatial.geocode/
Geocoding The News Graph With APOC & flat-graph GitHub Action
https://github.com/johnymontana/news-graph/blob/main/.github/workflows/flat.yml
Querying The News Graph Cypher + Neo4j Browser
Querying The News Graph Cypher + Neo4j Browser
33
Spatial Search With Neo4j
Spatial Search With Neo4j
1. Radius distance search
2. Within Bounding Box
3. Within Polygon
https://github.com/johnymontana/geospatial-graph-demos
OpenStreetMap Points of Interest With Daylight Earth Table
https://daylightmap.org/earth/
OSM Points Of Interest In Neo4j
https://github.com/johnymontana/daylight-earth-graph/blob/main/POI_import.ipynb
Why We Use Indexes In Neo4j
● Find a starting point for a traversal
● index free adjacency
Create Point Index For Fast Search
CREATE POINT INDEX poiIndex
FOR (p:Point) ON (p.location)
https://neo4j.com/docs/cypher-manual/current/indexes-for-search-performance/
:schema
NodeIndexSeek vs NodeByLabelScan
PROFILE MATCH (p:Point)
WHERE
point.distance(p.location, point({latitude: 37.563434, longitude:-122.322255})) < 200
RETURN p
Indexes help us efficiently
find the starting point for a
traversal
49565697 total db hits in 3649 ms
213 total db hits in 1 ms
Radius Distance Search (with index!)
PROFILE MATCH (p:Point)
WHERE
point.distance(p.location, point({latitude: 37.563434, longitude:-122.322255})) < 200
RETURN p{.*} AS point
https://neo4j.com/docs/cypher-manual/current/functions/spatial/#functions-distance
Cypher Bounding Box Search
MATCH (p:Point)
WHERE point.withinBBox(
p.location,
point({longitude:-122.325447, latitude: 37.55948 }), // Lower left point
point({longitude:-122.314675 , latitude: 37.563596})) // Upper right point
RETURN p
https://neo4j.com/docs/cypher-manual/current/functions/spatial/#functions-withinBBox
Cypher Bounding Box Search - Using Index
PROFILE
MATCH (p:Point)
WHERE point.withinBBox(
p.location,
point({longitude:-122.325447, latitude: 37.55948 }),
point({longitude:-122.314675 , latitude: 37.563596}))
RETURN p
https://neo4j.com/docs/cypher-manual/current/functions/spatial/#functions-withinBBox
Point In Polygon Search With Index
1) Convert polygon to bounding box
2) Cypher withinBBox query
3) Filter results to within polygon
https://github.com/johnymontana/geospatial-graph-demos/blob/main/src/index.html#L175-L231
Working With Line Geometries Strava Data
// Create Activity Nodes
LOAD CSV WITH HEADERS FROM "file:///activities.csv" AS row
MERGE (a:Activity {activity_id: row.`Activity ID`})
SET a.filename = row.Filename,
a += row
// Parse geojson geometries and create Geometry:Line nodes
WITH a WHERE a.filename IS NOT NULL
MERGE (n:Geometry {geom_id:a.activity_id })
MERGE (n)<-[:HAS_FEATURE]-(a)
WITH n,a
CALL
apoc.load.json('file:///' + a.filename)
YIELD value
UNWIND value.features[0].geometry.coordinates AS coord
// FIXME: handle multiple features!
WITH n,
collect(point({latitude: coord[1], longitude: coord[0]})) AS coords
SET n.coordinates = coords
SET n:Line
Working With Line Geometries Spatial Search
WITH point({latitude: $latitude, longitude: $longitude}) AS radiusCenter
MATCH (g:Geometry)<-[:HAS_FEATURE]-(a:Activity)
WHERE any(
p IN g.coordinates WHERE point.distance(p, radiusCenter) < $radius
)
RETURN *
47
Routing
Overview of Graph Algorithms
● Path finding
○ Routing
○ A*, Breadth/Depth First Search
● Centrality
○ Most important nodes in the graph
○ PageRank, Closeness,
Betweenness, Degree
● Community detection /
clustering
○ Group nodes, strength of clusters
○ Louvain, Label propagation
● Node Similarity
● Machine learning
○ Link prediction
○ Node Embeddings
○ Node Classification
https://neo4j.com/developer/graph-data-science/graph-algorithms/
Airport Routing With Graph Data Science Plugin
https://dev.neo4j.com/sandbox
Create Projected Graph
CALL gds.graph.project(
'routes-weighted',
'Airport',
'HAS_ROUTE',
{
relationshipProperties: 'distance'
}
) YIELD graphName, nodeProjection, nodeCount,
relationshipProjection, relationshipCount
https://neo4j.com/docs/graph-data-science/current/management-ops/graph-catalog-ops/
gds.shortestPath.dijkstra
MATCH (source:Airport {iata: 'PUQ'}), (target:Airport {iata: 'HNL'})
CALL gds.shortestPath.dijkstra.stream('routes-weighted', {
sourceNode: source,
targetNode: target,
relationshipWeightProperty: 'distance'
})
YIELD index, sourceNode, targetNode,
totalCost, nodeIds, costs, path
RETURN
nodes(path) as path
https://neo4j.com/docs/graph-data-science/current/algorithms/dijkstra-source-target/
Exercise
● set up neo4j aura instance
Neo4j Aura Free Tier Setup
Let's create a Neo4j Aura Free instance that we'll use for the rest of the workshop...
Hands-On
Exercise
Once your Neo4j Aura instance is online you'll see the connection string
(neo4j+s://xxxxx.databases.neo4j.io)
Be sure to take note of the generated
password!
It will then take a few moments for your
Neo4j Aura instance to be provisioned.
Open neo4j.com/aura
and sign in
Select "Create a new
database" button.
Choose the "Free" tier.
Enter a name for your
Neo4j Aura instance
and select "Create
database"
Step 1: Step 2:
Step 3:
54
Working With OpenStreetMap Data
55
OpenStreetMap
openstreetmap.org
● Open map data of the world
● Crowd-sourced by the community -
individuals and corporate contributors
● Map tiles, geocoding, vector data, data
downloads & access via API
56
Working With OpenStreetMap Data In Neo4j
learn.opengeoedu.de
● Nodes - point features
○ POIs or part of more complex geometry
● Ways - line features (connect nodes)
○ roads, buildings, parks, etc
● Tags - attribute data describing a feature
○ used on nodes, ways, & relations
● Relations - organize multiple ways (or nodes)
into a larger entity
○ multiple road segments that make up a
bus route, multipolygon geometries
https://labs.mapbox.com/mapping/osm-data-model/
https://wiki.openstreetmap.org/wiki/Elements
57
The OpenStreetMap Data Model
learn.opengeoedu.de
58
Working With OpenStreetMap Data In Neo4j
dev.neo4j.com/sandbox
● Example OSM dataset of Central
Park in New York City
● Available in Neo4j Sandbox
● Based on neo4j-contrib/osm
● Travel guide example app:
github.com/johnymontana/central-
perk
github.com/neo4j-graph-examples/openstreetmap
Simplified OSM Routing Graph
● What if we only model intersection nodes in the graph?
● Reduces data size and simplifies our queries
OpenStreetMap
● What is OpenStreetMap?
● The OSM data model
● How to get OSM data
○ overpass, QGIS plugin, neo4j osm importer, OSMNx
OSMNx
https://github.com/gboeing/osmnx
OSMnx: Python for street networks. Retrieve, model, analyze, and visualize street networks and other spatial
data from OpenStreetMap.
OpenStreetMap Import Notebook
Let's get our Python environment up and running and start importing OpenStreetMap data!
Hands-On
Exercise
Step 1:
● Open notebooks/00-setup.ipynb
● Replace database credentials with your Neo4j AuraDB credentials
● Run all cells → you should see a DataFrame with node_count of 0
Step 2:
● Open notebooks/01-import.ipynb
● Replace database credentials with your Neo4j AuraDB credentials
● Run all cells up to "Exploring The Road Network In Neo4j" to import
OpenStreetMap data into your Neo4j AuraDB instance
Visualizing Road Networks With Neo4j Bloom
● In Neo4j AuraDB Workspace, switch to the "Explore" tab
● Load the road network into the "scene"
● Switch to coordinate layout
● Style the visualization
Hands-On
Exercise
Let's explore our road network visually!
Exercise
● add aura credentials and run notebook to import data
Adding Points of Interest
● Daylight earth table
● how to import into neo4j
● connect to routing graph
Adding Addresses From OpenAddresses.io
https://openaddresses.io/
Adding Addresses From OpenAddresses.io
Adding Addresses… Hands-On
Exercise
● Return to our notebook and finish running address import
Routing With Graph Algorithms
https://neo4j.com/docs/apoc/current/overview/apoc.algo/
70
Building Web Maps With Leaflet.js
Leaflet.js
https://leafletjs.com/
Leaflet.js + Neo4j
Let's create a Neo4j Aura Free instance that we'll use for the rest of the workshop...
Hands-On
Exercise
● Open web/address_routing.html
● Update with your Neo4j AuraDB credentials
● Open in web browser, you may need to run a web server:
python -m http.server
● Search for routes between two addresses
● What path-finding algorithm are we using? Can we improve using the A* algorithm?
Resources
● Slides:
○ dev.neo4j.com/routing-workshop
● Code:
○ dev.neo4j.com/routing-workshop-github

Mais conteúdo relacionado

Mais procurados

Introducing Neo4j
Introducing Neo4jIntroducing Neo4j
Introducing Neo4jNeo4j
 
Top 10 Cypher Tuning Tips & Tricks
Top 10 Cypher Tuning Tips & TricksTop 10 Cypher Tuning Tips & Tricks
Top 10 Cypher Tuning Tips & TricksNeo4j
 
Graph database Use Cases
Graph database Use CasesGraph database Use Cases
Graph database Use CasesMax De Marzi
 
Neo4j GraphTalk Helsinki - Introduction and Graph Use Cases
Neo4j GraphTalk Helsinki - Introduction and Graph Use CasesNeo4j GraphTalk Helsinki - Introduction and Graph Use Cases
Neo4j GraphTalk Helsinki - Introduction and Graph Use CasesNeo4j
 
Intro to Neo4j
Intro to Neo4jIntro to Neo4j
Intro to Neo4jNeo4j
 
Intro to Neo4j presentation
Intro to Neo4j presentationIntro to Neo4j presentation
Intro to Neo4j presentationjexp
 
Demystifying Graph Neural Networks
Demystifying Graph Neural NetworksDemystifying Graph Neural Networks
Demystifying Graph Neural NetworksNeo4j
 
Introduction to Neo4j for the Emirates & Bahrain
Introduction to Neo4j for the Emirates & BahrainIntroduction to Neo4j for the Emirates & Bahrain
Introduction to Neo4j for the Emirates & BahrainNeo4j
 
Introduction to Neo4j
Introduction to Neo4jIntroduction to Neo4j
Introduction to Neo4jNeo4j
 
How to Build a Fraud Detection Solution with Neo4j
How to Build a Fraud Detection Solution with Neo4jHow to Build a Fraud Detection Solution with Neo4j
How to Build a Fraud Detection Solution with Neo4jNeo4j
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4jNeo4j
 
Smarter Fraud Detection With Graph Data Science
Smarter Fraud Detection With Graph Data ScienceSmarter Fraud Detection With Graph Data Science
Smarter Fraud Detection With Graph Data ScienceNeo4j
 
Building social network with Neo4j and Python
Building social network with Neo4j and PythonBuilding social network with Neo4j and Python
Building social network with Neo4j and PythonAndrii Soldatenko
 
Snowflake: The most cost-effective agile and scalable data warehouse ever!
Snowflake: The most cost-effective agile and scalable data warehouse ever!Snowflake: The most cost-effective agile and scalable data warehouse ever!
Snowflake: The most cost-effective agile and scalable data warehouse ever!Visual_BI
 
Neo4j Webinar: Graphs in banking
Neo4j Webinar:  Graphs in banking Neo4j Webinar:  Graphs in banking
Neo4j Webinar: Graphs in banking Neo4j
 
The Graph Database Universe: Neo4j Overview
The Graph Database Universe: Neo4j OverviewThe Graph Database Universe: Neo4j Overview
The Graph Database Universe: Neo4j OverviewNeo4j
 
Neo4j GraphSummit London March 2023 Emil Eifrem Keynote.pptx
Neo4j GraphSummit London March 2023 Emil Eifrem Keynote.pptxNeo4j GraphSummit London March 2023 Emil Eifrem Keynote.pptx
Neo4j GraphSummit London March 2023 Emil Eifrem Keynote.pptxNeo4j
 
How Kafka Powers the World's Most Popular Vector Database System with Charles...
How Kafka Powers the World's Most Popular Vector Database System with Charles...How Kafka Powers the World's Most Popular Vector Database System with Charles...
How Kafka Powers the World's Most Popular Vector Database System with Charles...HostedbyConfluent
 
Neo4j Graph Use Cases, Bruno Ungermann, Neo4j
Neo4j Graph Use Cases, Bruno Ungermann, Neo4jNeo4j Graph Use Cases, Bruno Ungermann, Neo4j
Neo4j Graph Use Cases, Bruno Ungermann, Neo4jNeo4j
 
The Neo4j Data Platform for Today & Tomorrow.pdf
The Neo4j Data Platform for Today & Tomorrow.pdfThe Neo4j Data Platform for Today & Tomorrow.pdf
The Neo4j Data Platform for Today & Tomorrow.pdfNeo4j
 

Mais procurados (20)

Introducing Neo4j
Introducing Neo4jIntroducing Neo4j
Introducing Neo4j
 
Top 10 Cypher Tuning Tips & Tricks
Top 10 Cypher Tuning Tips & TricksTop 10 Cypher Tuning Tips & Tricks
Top 10 Cypher Tuning Tips & Tricks
 
Graph database Use Cases
Graph database Use CasesGraph database Use Cases
Graph database Use Cases
 
Neo4j GraphTalk Helsinki - Introduction and Graph Use Cases
Neo4j GraphTalk Helsinki - Introduction and Graph Use CasesNeo4j GraphTalk Helsinki - Introduction and Graph Use Cases
Neo4j GraphTalk Helsinki - Introduction and Graph Use Cases
 
Intro to Neo4j
Intro to Neo4jIntro to Neo4j
Intro to Neo4j
 
Intro to Neo4j presentation
Intro to Neo4j presentationIntro to Neo4j presentation
Intro to Neo4j presentation
 
Demystifying Graph Neural Networks
Demystifying Graph Neural NetworksDemystifying Graph Neural Networks
Demystifying Graph Neural Networks
 
Introduction to Neo4j for the Emirates & Bahrain
Introduction to Neo4j for the Emirates & BahrainIntroduction to Neo4j for the Emirates & Bahrain
Introduction to Neo4j for the Emirates & Bahrain
 
Introduction to Neo4j
Introduction to Neo4jIntroduction to Neo4j
Introduction to Neo4j
 
How to Build a Fraud Detection Solution with Neo4j
How to Build a Fraud Detection Solution with Neo4jHow to Build a Fraud Detection Solution with Neo4j
How to Build a Fraud Detection Solution with Neo4j
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4j
 
Smarter Fraud Detection With Graph Data Science
Smarter Fraud Detection With Graph Data ScienceSmarter Fraud Detection With Graph Data Science
Smarter Fraud Detection With Graph Data Science
 
Building social network with Neo4j and Python
Building social network with Neo4j and PythonBuilding social network with Neo4j and Python
Building social network with Neo4j and Python
 
Snowflake: The most cost-effective agile and scalable data warehouse ever!
Snowflake: The most cost-effective agile and scalable data warehouse ever!Snowflake: The most cost-effective agile and scalable data warehouse ever!
Snowflake: The most cost-effective agile and scalable data warehouse ever!
 
Neo4j Webinar: Graphs in banking
Neo4j Webinar:  Graphs in banking Neo4j Webinar:  Graphs in banking
Neo4j Webinar: Graphs in banking
 
The Graph Database Universe: Neo4j Overview
The Graph Database Universe: Neo4j OverviewThe Graph Database Universe: Neo4j Overview
The Graph Database Universe: Neo4j Overview
 
Neo4j GraphSummit London March 2023 Emil Eifrem Keynote.pptx
Neo4j GraphSummit London March 2023 Emil Eifrem Keynote.pptxNeo4j GraphSummit London March 2023 Emil Eifrem Keynote.pptx
Neo4j GraphSummit London March 2023 Emil Eifrem Keynote.pptx
 
How Kafka Powers the World's Most Popular Vector Database System with Charles...
How Kafka Powers the World's Most Popular Vector Database System with Charles...How Kafka Powers the World's Most Popular Vector Database System with Charles...
How Kafka Powers the World's Most Popular Vector Database System with Charles...
 
Neo4j Graph Use Cases, Bruno Ungermann, Neo4j
Neo4j Graph Use Cases, Bruno Ungermann, Neo4jNeo4j Graph Use Cases, Bruno Ungermann, Neo4j
Neo4j Graph Use Cases, Bruno Ungermann, Neo4j
 
The Neo4j Data Platform for Today & Tomorrow.pdf
The Neo4j Data Platform for Today & Tomorrow.pdfThe Neo4j Data Platform for Today & Tomorrow.pdf
The Neo4j Data Platform for Today & Tomorrow.pdf
 

Semelhante a Build a Routing App with Neo4j, OSM & Leaflet

Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...
Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...
Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...Databricks
 
New Features in Neo4j 3.4 / 3.3 - Graph Algorithms, Spatial, Date-Time & Visu...
New Features in Neo4j 3.4 / 3.3 - Graph Algorithms, Spatial, Date-Time & Visu...New Features in Neo4j 3.4 / 3.3 - Graph Algorithms, Spatial, Date-Time & Visu...
New Features in Neo4j 3.4 / 3.3 - Graph Algorithms, Spatial, Date-Time & Visu...jexp
 
OSCON july 2011
OSCON july 2011OSCON july 2011
OSCON july 2011chelm
 
Neo4j Introduction (for Techies)
Neo4j Introduction (for Techies)Neo4j Introduction (for Techies)
Neo4j Introduction (for Techies)Patrick Baumgartner
 
Hands on Training – Graph Database with Neo4j
Hands on Training – Graph Database with Neo4jHands on Training – Graph Database with Neo4j
Hands on Training – Graph Database with Neo4jSerendio Inc.
 
Getting Started with Geospatial Data in MongoDB
Getting Started with Geospatial Data in MongoDBGetting Started with Geospatial Data in MongoDB
Getting Started with Geospatial Data in MongoDBMongoDB
 
Processing Large Graphs
Processing Large GraphsProcessing Large Graphs
Processing Large GraphsNishant Gandhi
 
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece CoLab Athens
 
Where20 2008 Ruby Tutorial
Where20 2008 Ruby TutorialWhere20 2008 Ruby Tutorial
Where20 2008 Ruby TutorialShoaib Burq
 
Neo4j Database and Graph Platform Overview
Neo4j Database and Graph Platform OverviewNeo4j Database and Graph Platform Overview
Neo4j Database and Graph Platform OverviewNeo4j
 
Neo4j Spatial - FooCafe September 2015
Neo4j Spatial - FooCafe September 2015Neo4j Spatial - FooCafe September 2015
Neo4j Spatial - FooCafe September 2015Craig Taverner
 
Mobile Data: How to avoid the latency trap - SWDC 2010
Mobile Data: How to avoid the latency trap - SWDC 2010Mobile Data: How to avoid the latency trap - SWDC 2010
Mobile Data: How to avoid the latency trap - SWDC 2010Tom Croucher
 
Introducing Neo4j 3.0
Introducing Neo4j 3.0Introducing Neo4j 3.0
Introducing Neo4j 3.0Neo4j
 
Neo4j Spatial at LocationDay 2013 in Malmö
Neo4j Spatial at LocationDay 2013 in MalmöNeo4j Spatial at LocationDay 2013 in Malmö
Neo4j Spatial at LocationDay 2013 in MalmöCraig Taverner
 
LocationTech Projects
LocationTech ProjectsLocationTech Projects
LocationTech ProjectsJody Garnett
 
R getting spatial
R getting spatialR getting spatial
R getting spatialFAO
 
Server side geo_tools_in_drupal_pnw_2012
Server side geo_tools_in_drupal_pnw_2012Server side geo_tools_in_drupal_pnw_2012
Server side geo_tools_in_drupal_pnw_2012Mack Hardy
 
What are customers building with new Bing Maps capabilities
What are customers building with new Bing Maps capabilitiesWhat are customers building with new Bing Maps capabilities
What are customers building with new Bing Maps capabilitiesMicrosoft Tech Community
 

Semelhante a Build a Routing App with Neo4j, OSM & Leaflet (20)

Maps tek11
Maps tek11Maps tek11
Maps tek11
 
Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...
Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...
Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...
 
New Features in Neo4j 3.4 / 3.3 - Graph Algorithms, Spatial, Date-Time & Visu...
New Features in Neo4j 3.4 / 3.3 - Graph Algorithms, Spatial, Date-Time & Visu...New Features in Neo4j 3.4 / 3.3 - Graph Algorithms, Spatial, Date-Time & Visu...
New Features in Neo4j 3.4 / 3.3 - Graph Algorithms, Spatial, Date-Time & Visu...
 
OSCON july 2011
OSCON july 2011OSCON july 2011
OSCON july 2011
 
Neo4j Introduction (for Techies)
Neo4j Introduction (for Techies)Neo4j Introduction (for Techies)
Neo4j Introduction (for Techies)
 
Hands on Training – Graph Database with Neo4j
Hands on Training – Graph Database with Neo4jHands on Training – Graph Database with Neo4j
Hands on Training – Graph Database with Neo4j
 
Getting Started with Geospatial Data in MongoDB
Getting Started with Geospatial Data in MongoDBGetting Started with Geospatial Data in MongoDB
Getting Started with Geospatial Data in MongoDB
 
Processing Large Graphs
Processing Large GraphsProcessing Large Graphs
Processing Large Graphs
 
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece
 
Where20 2008 Ruby Tutorial
Where20 2008 Ruby TutorialWhere20 2008 Ruby Tutorial
Where20 2008 Ruby Tutorial
 
Neo4j Database and Graph Platform Overview
Neo4j Database and Graph Platform OverviewNeo4j Database and Graph Platform Overview
Neo4j Database and Graph Platform Overview
 
Neo4j Spatial - FooCafe September 2015
Neo4j Spatial - FooCafe September 2015Neo4j Spatial - FooCafe September 2015
Neo4j Spatial - FooCafe September 2015
 
Mobile Data: How to avoid the latency trap - SWDC 2010
Mobile Data: How to avoid the latency trap - SWDC 2010Mobile Data: How to avoid the latency trap - SWDC 2010
Mobile Data: How to avoid the latency trap - SWDC 2010
 
IOS 8 Indoor Location
IOS 8 Indoor LocationIOS 8 Indoor Location
IOS 8 Indoor Location
 
Introducing Neo4j 3.0
Introducing Neo4j 3.0Introducing Neo4j 3.0
Introducing Neo4j 3.0
 
Neo4j Spatial at LocationDay 2013 in Malmö
Neo4j Spatial at LocationDay 2013 in MalmöNeo4j Spatial at LocationDay 2013 in Malmö
Neo4j Spatial at LocationDay 2013 in Malmö
 
LocationTech Projects
LocationTech ProjectsLocationTech Projects
LocationTech Projects
 
R getting spatial
R getting spatialR getting spatial
R getting spatial
 
Server side geo_tools_in_drupal_pnw_2012
Server side geo_tools_in_drupal_pnw_2012Server side geo_tools_in_drupal_pnw_2012
Server side geo_tools_in_drupal_pnw_2012
 
What are customers building with new Bing Maps capabilities
What are customers building with new Bing Maps capabilitiesWhat are customers building with new Bing Maps capabilities
What are customers building with new Bing Maps capabilities
 

Mais de Neo4j

Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...Neo4j
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosNeo4j
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Neo4j
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jNeo4j
 
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j
 
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfRabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Neo4j
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeNeo4j
 
Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j
 
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j
 
Enabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsEnabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsNeo4j
 
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j
 
Neo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j
 
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...Neo4j
 
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AI
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AIDeloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AI
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AINeo4j
 
Ingka Digital: Linked Metadata by Design
Ingka Digital: Linked Metadata by DesignIngka Digital: Linked Metadata by Design
Ingka Digital: Linked Metadata by DesignNeo4j
 
Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24
Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24
Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24Neo4j
 
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxGraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxNeo4j
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxNeo4j
 

Mais de Neo4j (20)

Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
 
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
 
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfRabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG time
 
Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)
 
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
 
Enabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsEnabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge Graphs
 
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
 
Neo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with Graph
 
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
 
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AI
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AIDeloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AI
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AI
 
Ingka Digital: Linked Metadata by Design
Ingka Digital: Linked Metadata by DesignIngka Digital: Linked Metadata by Design
Ingka Digital: Linked Metadata by Design
 
Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24
Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24
Discover Neo4j Aura_ The Future of Graph Database-as-a-Service Workshop_3.13.24
 
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxGraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
 

Último

Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 

Último (20)

Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 

Build a Routing App with Neo4j, OSM & Leaflet

  • 1. Build A Routing Web App With Neo4j, OpenStreetMap, & Leaflet.js William Lyon Neo4j @lyonwj lyonwj.com dev.neo4j.com/routing-workshop
  • 2. Building A Routing Web Application With Neo4j, OpenStreetMap, and Leaflet.js Learn how to work with geospatial data in the Neo4j graph database in this hands-on workshop. We’ll start by covering the spatial types and functions available in the Cypher query language and Neo4j then move on to spatial search operations and routing with graph algorithms. We’ll import data from OpenStreetMap and see how to use the Neo4j JavaScript driver to build a navigation web application to find routes between points of interest and addresses.
  • 3. 3 About Me William Lyon Developer Advocate @ Neo4j @lyonwj lyonwj.com dev.neo4j.com/routing-workshop
  • 4. About Me William Lyon Developer Relations Engineer, Neo4j @lyonwj lyonwj.com dev.neo4j.com/graphql-book
  • 6. Build A Routing Web App W/ OpenStreetMap, Neo4j, & Leaflet.js ● Address / point of interest data ● Auto-complete search ● Plot shortest route between locations
  • 7. Build A Routing Web App With Neo4j, OSM, & Leaflet.js Agenda Modules: ● Intro to Neo4j & Spatial Cypher ● Working With OpenStreetMap Data ● Building Web Maps With Leaflet.js Hands-On exercises using: ● Neo4j AuraDB Free Tier ● Python notebook ○ Local Python environment ○ GitHub Codespaces ○ Google Colab ● JavaScript / HTML ○ Local web browser ○ GitHub Codespaces Hands-On Exercise Slides: dev.neo4j.com/routing-workshop GitHub repo: dev.neo4j.com/routing-workshop-github
  • 8. Build A Routing Web App With Neo4j, OSM, & Leaflet.js Pre-requisites ● Either a local Python development environment or a GitHub account to use GitHub Codespaces (recommended) or Google Colab ● Neo4j AuraDB (Free Tier) ○ Sign in and create free account: dev.neo4j.com/aura Slides: dev.neo4j.com/routing-workshop GitHub repo: dev.neo4j.com/routing-workshop-github
  • 9. Resources ● Slides: ○ dev.neo4j.com/routing-workshop ● Code: ○ dev.neo4j.com/routing-workshop-github
  • 10. 10 Intro To Neo4j & Spatial Cypher
  • 11. Intro to Neo4j & Spatial Cypher - Routing With Neo4j ● Slides / demo with airports ● set up Aura Free instance ● show we're going to build ● demo bloom (?)
  • 12. Points, Lines, Polygons, & Graphs ● Spatial Cypher functions ○ Point, distance, index ● Spatial search with Neo4j ● Routing ● QGIS + Neo4j ● Combining datasets
  • 13. Tobler's First Law Of Geography http://southwesterngis.blogspot.com/2014/02/toblers-first-law-of-geography.html
  • 14. Tobler's First Law Of Geography Minneapolis San Jose Santa Cruz San Mateo San Francisco
  • 15. Tobler's First Law Of Geography
  • 16. What Is A Graph?
  • 17. What Is A Property Graph?
  • 18. What Is A Knowledge Graph? Knowledge graphs put things in context "Things, not strings" https://blog.google/products/search/introducing-knowledge-graph-things-not/
  • 19. Graph Database ● Database management system (DBMS) ● Property Graph data model ● Cypher query language ● Graph analytics ● Data visualization ● Neo4j Aura database-as-a-service ● Native spatial types / index What is Neo4j? neo4j.com
  • 20. News As A Knowledge Graph Using The NYTimes API Requirements: ● View articles ○ Most recent ● Search articles ○ Keyword, date range ● Comments ● Save articles ● Personalized recommendations ○ My interests ○ Location-based Data from NYTimes API: developer.nytimes.com Code: github.com/johnymontana/news-graph
  • 21. Spectrum Of Graph Access Patterns "Local" Graph Traversals Transactional use cases Operational workloads "Global" Graph Traversals Analytics use cases Graph Data Science Graph Algorithms Graph Local Graph Global
  • 22. Overview of Graph Algorithms ● Path finding ○ Routing ○ A*, Breadth/Depth First Search ● Centrality ○ Most important nodes in the graph ○ PageRank, Closeness, Betweenness, Degree ● Community detection / clustering ○ Group nodes, strength of clusters ○ Louvain, Label propagation ● Node Similarity ● Machine learning ○ Link prediction ○ Node Embeddings ○ Node Classification https://neo4j.com/developer/graph-data-science/graph-algorithms/
  • 24. The Point type in Neo4j ● Support for 2D or 3D geographic (WGS84) or cartesian coordinate reference system (CRS) https://neo4j.com/docs/cypher-manual/current/syntax/spatial/ RETURN point( {latitude:49.38713, longitude:12.12711} ) ╒════════════════════════════════════════════════╕ │"point({latitude:49.38713, longitude:12.12711})"│ ╞════════════════════════════════════════════════╡ │point({srid:4326, x:12.12711, y:49.38713}) │ └────────────────────────────────────────────────┘
  • 25. The Point type in Neo4j ● Points can be stored as properties on nodes and relationships https://neo4j.com/docs/cypher-manual/current/syntax/spatial/ CREATE (p:PointOfInterest) SET p.name = "West Side Bakery", p.location = point( {latitude:49.38713, longitude:12.12711} ) RETURN p
  • 26. Spatial Functions In Cypher ● point.distance() ● point.withinBBox() ● point() https://neo4j.com/docs/cypher-manual/current/functions/spatial/ MATCH (p:PointOfInterest) WHERE point.distance( p.location, point({latitude:49.38713, longitude:12.12711}) ) < 200 RETURN p
  • 27. Querying The News Graph Cypher + Neo4j Browser
  • 28. News As A Knowledge Graph Using The NYTimes API Requirements: ● View articles ○ Most recent ● Search articles ○ Keyword, date range ● Comments ● Save articles ● Personalized recommendations ○ My interests ○ Location-based Data from NYTimes API: developer.nytimes.com Code: github.com/johnymontana/news-graph
  • 29. Geocoding With APOC CALL apoc.spatial.geocode('Union House, London') YIELD location { "latitude": 51.503811999999996, "description": "Union House, 182-194, Union Street, Bankside, Southwark, London Borough of Southwark, London, Greater London, England, SE1 8LB, United Kingdom", "longitude": -0.10101799277699847 } https://neo4j.com/labs/apoc/4.1/overview/apoc.spatial/apoc.spatial.geocode/
  • 30. Geocoding The News Graph With APOC & flat-graph GitHub Action https://github.com/johnymontana/news-graph/blob/main/.github/workflows/flat.yml
  • 31. Querying The News Graph Cypher + Neo4j Browser
  • 32. Querying The News Graph Cypher + Neo4j Browser
  • 34. Spatial Search With Neo4j 1. Radius distance search 2. Within Bounding Box 3. Within Polygon https://github.com/johnymontana/geospatial-graph-demos
  • 35. OpenStreetMap Points of Interest With Daylight Earth Table https://daylightmap.org/earth/
  • 36. OSM Points Of Interest In Neo4j https://github.com/johnymontana/daylight-earth-graph/blob/main/POI_import.ipynb
  • 37. Why We Use Indexes In Neo4j ● Find a starting point for a traversal ● index free adjacency
  • 38. Create Point Index For Fast Search CREATE POINT INDEX poiIndex FOR (p:Point) ON (p.location) https://neo4j.com/docs/cypher-manual/current/indexes-for-search-performance/
  • 40. NodeIndexSeek vs NodeByLabelScan PROFILE MATCH (p:Point) WHERE point.distance(p.location, point({latitude: 37.563434, longitude:-122.322255})) < 200 RETURN p Indexes help us efficiently find the starting point for a traversal 49565697 total db hits in 3649 ms 213 total db hits in 1 ms
  • 41. Radius Distance Search (with index!) PROFILE MATCH (p:Point) WHERE point.distance(p.location, point({latitude: 37.563434, longitude:-122.322255})) < 200 RETURN p{.*} AS point https://neo4j.com/docs/cypher-manual/current/functions/spatial/#functions-distance
  • 42. Cypher Bounding Box Search MATCH (p:Point) WHERE point.withinBBox( p.location, point({longitude:-122.325447, latitude: 37.55948 }), // Lower left point point({longitude:-122.314675 , latitude: 37.563596})) // Upper right point RETURN p https://neo4j.com/docs/cypher-manual/current/functions/spatial/#functions-withinBBox
  • 43. Cypher Bounding Box Search - Using Index PROFILE MATCH (p:Point) WHERE point.withinBBox( p.location, point({longitude:-122.325447, latitude: 37.55948 }), point({longitude:-122.314675 , latitude: 37.563596})) RETURN p https://neo4j.com/docs/cypher-manual/current/functions/spatial/#functions-withinBBox
  • 44. Point In Polygon Search With Index 1) Convert polygon to bounding box 2) Cypher withinBBox query 3) Filter results to within polygon https://github.com/johnymontana/geospatial-graph-demos/blob/main/src/index.html#L175-L231
  • 45. Working With Line Geometries Strava Data // Create Activity Nodes LOAD CSV WITH HEADERS FROM "file:///activities.csv" AS row MERGE (a:Activity {activity_id: row.`Activity ID`}) SET a.filename = row.Filename, a += row // Parse geojson geometries and create Geometry:Line nodes WITH a WHERE a.filename IS NOT NULL MERGE (n:Geometry {geom_id:a.activity_id }) MERGE (n)<-[:HAS_FEATURE]-(a) WITH n,a CALL apoc.load.json('file:///' + a.filename) YIELD value UNWIND value.features[0].geometry.coordinates AS coord // FIXME: handle multiple features! WITH n, collect(point({latitude: coord[1], longitude: coord[0]})) AS coords SET n.coordinates = coords SET n:Line
  • 46. Working With Line Geometries Spatial Search WITH point({latitude: $latitude, longitude: $longitude}) AS radiusCenter MATCH (g:Geometry)<-[:HAS_FEATURE]-(a:Activity) WHERE any( p IN g.coordinates WHERE point.distance(p, radiusCenter) < $radius ) RETURN *
  • 48. Overview of Graph Algorithms ● Path finding ○ Routing ○ A*, Breadth/Depth First Search ● Centrality ○ Most important nodes in the graph ○ PageRank, Closeness, Betweenness, Degree ● Community detection / clustering ○ Group nodes, strength of clusters ○ Louvain, Label propagation ● Node Similarity ● Machine learning ○ Link prediction ○ Node Embeddings ○ Node Classification https://neo4j.com/developer/graph-data-science/graph-algorithms/
  • 49. Airport Routing With Graph Data Science Plugin https://dev.neo4j.com/sandbox
  • 50. Create Projected Graph CALL gds.graph.project( 'routes-weighted', 'Airport', 'HAS_ROUTE', { relationshipProperties: 'distance' } ) YIELD graphName, nodeProjection, nodeCount, relationshipProjection, relationshipCount https://neo4j.com/docs/graph-data-science/current/management-ops/graph-catalog-ops/
  • 51. gds.shortestPath.dijkstra MATCH (source:Airport {iata: 'PUQ'}), (target:Airport {iata: 'HNL'}) CALL gds.shortestPath.dijkstra.stream('routes-weighted', { sourceNode: source, targetNode: target, relationshipWeightProperty: 'distance' }) YIELD index, sourceNode, targetNode, totalCost, nodeIds, costs, path RETURN nodes(path) as path https://neo4j.com/docs/graph-data-science/current/algorithms/dijkstra-source-target/
  • 52. Exercise ● set up neo4j aura instance
  • 53. Neo4j Aura Free Tier Setup Let's create a Neo4j Aura Free instance that we'll use for the rest of the workshop... Hands-On Exercise Once your Neo4j Aura instance is online you'll see the connection string (neo4j+s://xxxxx.databases.neo4j.io) Be sure to take note of the generated password! It will then take a few moments for your Neo4j Aura instance to be provisioned. Open neo4j.com/aura and sign in Select "Create a new database" button. Choose the "Free" tier. Enter a name for your Neo4j Aura instance and select "Create database" Step 1: Step 2: Step 3:
  • 55. 55 OpenStreetMap openstreetmap.org ● Open map data of the world ● Crowd-sourced by the community - individuals and corporate contributors ● Map tiles, geocoding, vector data, data downloads & access via API
  • 56. 56 Working With OpenStreetMap Data In Neo4j learn.opengeoedu.de ● Nodes - point features ○ POIs or part of more complex geometry ● Ways - line features (connect nodes) ○ roads, buildings, parks, etc ● Tags - attribute data describing a feature ○ used on nodes, ways, & relations ● Relations - organize multiple ways (or nodes) into a larger entity ○ multiple road segments that make up a bus route, multipolygon geometries https://labs.mapbox.com/mapping/osm-data-model/ https://wiki.openstreetmap.org/wiki/Elements
  • 57. 57 The OpenStreetMap Data Model learn.opengeoedu.de
  • 58. 58 Working With OpenStreetMap Data In Neo4j dev.neo4j.com/sandbox ● Example OSM dataset of Central Park in New York City ● Available in Neo4j Sandbox ● Based on neo4j-contrib/osm ● Travel guide example app: github.com/johnymontana/central- perk github.com/neo4j-graph-examples/openstreetmap
  • 59. Simplified OSM Routing Graph ● What if we only model intersection nodes in the graph? ● Reduces data size and simplifies our queries
  • 60. OpenStreetMap ● What is OpenStreetMap? ● The OSM data model ● How to get OSM data ○ overpass, QGIS plugin, neo4j osm importer, OSMNx
  • 61. OSMNx https://github.com/gboeing/osmnx OSMnx: Python for street networks. Retrieve, model, analyze, and visualize street networks and other spatial data from OpenStreetMap.
  • 62. OpenStreetMap Import Notebook Let's get our Python environment up and running and start importing OpenStreetMap data! Hands-On Exercise Step 1: ● Open notebooks/00-setup.ipynb ● Replace database credentials with your Neo4j AuraDB credentials ● Run all cells → you should see a DataFrame with node_count of 0 Step 2: ● Open notebooks/01-import.ipynb ● Replace database credentials with your Neo4j AuraDB credentials ● Run all cells up to "Exploring The Road Network In Neo4j" to import OpenStreetMap data into your Neo4j AuraDB instance
  • 63. Visualizing Road Networks With Neo4j Bloom ● In Neo4j AuraDB Workspace, switch to the "Explore" tab ● Load the road network into the "scene" ● Switch to coordinate layout ● Style the visualization Hands-On Exercise Let's explore our road network visually!
  • 64. Exercise ● add aura credentials and run notebook to import data
  • 65. Adding Points of Interest ● Daylight earth table ● how to import into neo4j ● connect to routing graph
  • 66. Adding Addresses From OpenAddresses.io https://openaddresses.io/
  • 67. Adding Addresses From OpenAddresses.io
  • 68. Adding Addresses… Hands-On Exercise ● Return to our notebook and finish running address import
  • 69. Routing With Graph Algorithms https://neo4j.com/docs/apoc/current/overview/apoc.algo/
  • 70. 70 Building Web Maps With Leaflet.js
  • 72.
  • 73. Leaflet.js + Neo4j Let's create a Neo4j Aura Free instance that we'll use for the rest of the workshop... Hands-On Exercise ● Open web/address_routing.html ● Update with your Neo4j AuraDB credentials ● Open in web browser, you may need to run a web server: python -m http.server ● Search for routes between two addresses ● What path-finding algorithm are we using? Can we improve using the A* algorithm?
  • 74. Resources ● Slides: ○ dev.neo4j.com/routing-workshop ● Code: ○ dev.neo4j.com/routing-workshop-github