Retour au classement

opengeospatial/geoparquet

Pythongeoparquet.org

Specification for storing geospatial vector data (point, line, polygon) in Parquet

giscloud-nativegeospatialapache-parquetgeoparquet
Croissance des étoiles
Étoiles
1.1k
Forks
73
Croissance hebdomadaire
Issues
39
5001k
nov. 2021mai 2023déc. 2024juil. 2026
ArtefactsPyPIpip install geoparquet
README

GeoParquet

About

This repository defines a specification for how to store geospatial vector data (point, lines, polygons) in Apache Parquet, a popular columnar storage format for tabular data - see this vendor explanation for more on what that means. Our goal is to further standardize how geospatial data is represented in Parquet to enhance geospatial interoperability among tools using Parquet today, and hopefully help push forward what's possible with 'cloud-native geospatial' workflows. There are now more than 20 different tools and libraries in 7 different languages that support GeoParquet, you can learn more at geoparquet.org.

Contributors include developers from GeoPandas, GeoTrellis, OpenLayers, Vis.gl, Voltron Data, Microsoft, CARTO, Planet & Unfolded. Anyone is welcome to join the project, by building implementations, trying it out, giving feedback through issues and contributing to the spec via pull requests. The geoarrow specification is related to GeoParquet and embraces geospatial in Arrow in a compatible way, with this specification focused solely on Parquet. We are an OGC official Standards Working Group and are on the path to be an OGC standard.

The latest stable specification and JSON schema are published at geoparquet.org/releases/.

The community has agreed on this release, but it is still pending OGC approval. We are currently working on the process to get it officially OGC approved as soon as possible by the OGC Membership. Released versions of GeoParquet will not be changed, so if changes are needed for OGC approval, it will be released with a new version number.

The 'dev' versions of the spec are available in this repo:

The latest version is 2.0.0, which is based on Parquet Geospatial Logical Types. The Parquet format now includes core geometry and geography types and the GeoParquet 2 specification provides guidance for geospatial tools for these types, along with some optional metadata not covered in the core Parquet specification.

Validating GeoParquet

There are two tools that validate the metadata and the actual data. It is recommended to use one of them to ensure any GeoParquet you produce or are given is completely valid according to the specification:

  • GPQ - the validate command generates a report with gpq validate example.parquet.
  • GDAL/OGR Validation Script - a Python script that can check compliance with python3 validate_geoparquet.py --check-data my_geo.parquet

Goals

There are a few core goals driving the initial development.

  • Establish a great geospatial format for workflows that excel with columnar data - Most data science and 'business intelligence' workflows have been moving towards columnar data, but current geospatial formats can not be as efficiently loaded as other data. So we aim to bring geospatial data best practices to one of the most popular formats, and hopefully establish a good pattern for how to do so.
  • Introduce columnar data formats to the geospatial world - And most of the geospatial world is not yet benefitting from all the breakthroughs in data analysis in the broader IT world, so we are excited to enable interesting geospatial analysis with a wider range of tools.
  • Enable interoperability among cloud data warehouses - BigQuery, Snowflake, Redshift and others all support spatial operations but importing and exporting data with existing formats can be problematic. All support and often recommend Parquet, so defining a solid GeoParquet can help enable interoperability.
  • Persist geospatial data from Apache Arrow - GeoParquet is developed in parallel with a GeoArrow spec, to enable cross-language in-memory analytics of geospatial information with Arrow. Parquet is already well-supported by Arrow as the key on-disk persistence format.

And our broader goal is to innovate with 'cloud-native vector' providing a stable base to try out new ideas for cloud-native & streaming workflows.

Features

A quick overview of what GeoParquet supports (or at least plans to support).

  • Multiple spatial reference systems - Many tools will use GeoParquet for high-performance analysis, so it's important to be able to use data in its native projection. But we do provide a clear default recommendation to better enable interoperability, giving a clear target for implementations that don't want to worry about projections.
  • Multiple geometry columns - There is a default geometry column, but additional geometry columns can be included.
  • Great compression / small files - Parquet is designed to compress very well, so data benefits by taking up less disk space & being more efficient over the network.
  • Work with both planar and spherical coordinates - Most cloud data warehouses support spherical coordinates, and so GeoParquet aims to help persist those and be clear about what is supported.
  • Great at read-heavy analytic workflows - Columnar formats enable cheap reading of a subset of columns, and Parquet in particular enables efficient filtering of chunks based on column statistics, so the format will perform well in a variety of modern analytic workflows.
  • Support for data partitioning - Parquet has a nice ability to partition data into different files for efficiency, and we aim to enable geospatial partitions.

It should be noted what GeoParquet is less good for. The biggest one is that it is not a good choice for write-heavy interactions. A row-based format will work much better if it is backing a system that is constantly updating the data and adding new data.

Versioning

As of version 1.0 the specification follows Semantic Versioning, so at that point any breaking change will require the spec to go to the next major version number, e.g. 1.0.0 to 2.0.0.

Current Implementations & Examples

Examples of GeoParquet files following the current spec can be found in the examples/ folder. For information on all the tools and libraries implementing GeoParquet, as well as sample data, see the implementations section of the website.

Dépôts similaires
CesiumGS/cesium

An open-source JavaScript library for world-class 3D globes and maps :earth_americas:

JavaScriptnpmApache License 2.03dgeospatial
cesium.com/cesiumjs/
15.5k3.9k
Turfjs/turf

A modular geospatial engine written in JavaScript and TypeScript

TypeScriptnpmMIT Licensejavascriptalgorithm
turfjs.org
10.4k1k
domlysz/BlenderGIS

Blender addons to make the bridge between Blender and geographic data

PythonPyPIGNU General Public License v3.0blenderaddon
9.2k1.5k
RediSearch/RediSearch

A query and indexing engine for Redis, providing secondary indexing, full-text search, vector similarity search and aggregations.

Rustcrates.ioOtherredisredis-module
redis.io/docs/latest/develop/ai/search-and-query/
6.2k587
gboeing/osmnx

Download, model, analyze, and visualize street networks and other geospatial features from OpenStreetMap.

PythonPyPIMIT Licenseopenstreetmapgis
osmnx.readthedocs.io
5.8k882
hyperknot/openfreemap

Free and open-source map hosting solution with custom styles for websites and apps, using OpenStreetMap data

PythonPyPIOthermaplibremaplibre-gl-js
openfreemap.org
5.7k175
sshuair/awesome-gis

😎Awesome GIS is a collection of geospatial related sources, including cartographic tools, geoanalysis tools, developer tools, data, conference & communities, news, massive open online course, some amazing map sites, and more.

MIT Licensegisawesome
5.4k831
sacridini/Awesome-Geospatial

Long list of geospatial tools and resources

Creative Commons Zero v1.0 Universalawesome-listawesome
5.2k759
maptalks/maptalks.js

A light and plugable JavaScript library for integrated 2D/3D maps.

HTMLjavascriptmaps
maptalks.org
4.5k514
mbloch/mapshaper

Tools for editing Shapefile, GeoJSON, TopoJSON and CSV files

JavaScriptnpmOthergeojsontopojson
mapshaper.org
4.2k578
antvis/L7

🌎 Large-scale WebGL-powered Geospatial Data Visualization analysis engine.

TypeScriptnpmMIT Licensewebglgis
l7.antv.antgroup.com
4k658
gee-community/geemap

A Python package for interactive geospatial analysis and visualization with Google Earth Engine.

PythonPyPIMIT Licensegoogle-earth-enginegis
geemap.org
4k1.1k