Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Neo4j
  3. Spatial

Spatial

NOASSERTIONJava2025.10.0

A Neo4j library for importing, storing, and querying spatial data with support for multiple geometry types and spatial indexes.

Visit WebsiteGitHubGitHub
819 stars196 forks0 contributors

What is Spatial?

Neo4j Spatial is a library that adds spatial capabilities to the Neo4j graph database, enabling the storage, indexing, and querying of geographic data. It allows developers to perform spatial operations like searching for data within regions or distances, and import data from formats like Shapefiles and OpenStreetMap.

Target Audience

Developers and data engineers working with Neo4j who need to integrate geospatial data and queries into their graph-based applications, such as GIS professionals or those building location-aware services.

Value Proposition

It provides a native, extensible way to handle spatial data within Neo4j, with support for multiple geometry types, coordinate systems, and integration with tools like GeoServer, avoiding the need for separate spatial databases.

Overview

Neo4j Spatial is a library of utilities for Neo4j that faciliates the enabling of spatial operations on data. In particular you can add spatial indexes to already located data, and perform spatial operations on the data like searching for data within specified regions or within a specified distance of a point of interest.

Use Cases

Best For

  • Adding spatial indexing and querying to existing Neo4j graph data
  • Importing and querying geographic data from Shapefiles or OpenStreetMap in Neo4j
  • Building location-aware applications with graph-based relationships
  • Integrating Neo4j with GIS tools like GeoServer or uDig
  • Performing complex spatial operations (e.g., within distance, intersects) on graph data
  • Managing multiple geographic layers with different coordinate systems in a single database

Not Ideal For

  • Projects not already committed to Neo4j as their primary database
  • Applications requiring high-performance, standalone spatial databases without graph data context
  • Teams needing plug-and-play GIS functionality without Java coding or complex configuration
  • Environments with strict security policies that prohibit unrestricted database procedures

Pros & Cons

Pros

Flexible Data Modeling

Supports multiple geometry encoders like WKT, WKB, and native Neo4j Points, allowing users to model geographic data in various ways as per the README's concept overview.

Multiple Coordinate Systems

Integrates with GeoTools to support various Coordinate Reference Systems (CRS) within layers, enabling handling of diverse geographic data formats.

Spatial Indexing & Querying

Includes an RTree index for fast searches and supports a wide range of spatial queries such as within distance, intersect, and contains, as detailed in the Index and Querying section.

GIS Tool Integration

Can be embedded in GIS tools like uDig and GeoServer via plugins, bridging graph databases with existing GIS ecosystems, as mentioned in the philosophy and examples.

Cons

Complex Setup and Dependencies

Requires manual JAR installation, separate plugins for OpenStreetMap support, and configuration edits in neo4j.conf, making deployment non-trivial compared to drop-in solutions.

Security Configuration Risks

Defaults to unrestricted procedures (dbms.security.procedures.unrestricted=spatial.*), which the README admits could bypass security models, posing potential risks in production environments.

Limited and Outdated Documentation

The README notes that procedures documentation is not yet fully available, and GeoServer integration is not regularly tested, leading to potential compatibility issues and a steeper learning curve.

Performance and Scalability Concerns

Relies on an in-graph RTree index which may not scale as efficiently as dedicated spatial databases for very large datasets, and the OSM importer requires batch-inserter phases, adding complexity.

Frequently Asked Questions

Quick Stats

Stars819
Forks196
Contributors0
Open Issues74
Last commit2 months ago
CreatedSince 2010

Tags

#postgis#geospatial#gis#geotools#openstreetmap#spatial-queries#graph-database#shapefile#spatial-data#neo4j#spatial-database

Built With

M
Maven
N
Neo4j
J
Java

Links & Resources

Website

Included in

Neo4j554
Auto-fetched 14 hours ago

Related Projects

GephiGephi

Gephi - The Open Graph Viz Platform

Stars6,474
Forks1,602
Last commit1 day ago
node-neo4jnode-neo4j

[RETIRED] Neo4j graph database driver (REST API client) for Node.js

Stars924
Forks133
Last commit7 years ago
structrstructr

ATTENTION: This repository is a clone of https://gitlab.structr.com/structr/structr. All development/issue tracking has moved there. | Structr is an integrated open-source low-code development and runtime environment that uses a graph database (Neo4j).

Stars823
Forks161
Last commit4 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub