All Projects → nmandery → batyr

nmandery / batyr

Licence: BSD-3-Clause license
Microservice for on-demand synchronization of geographical vector datasources to a PostgreSQL/PostGIS database. The service provides an HTTP API for easy integration into other applications.

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
CSS
56736 projects
python
139335 projects - #7 most used programming language
HTML
75241 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to batyr

registrant
Python package used for generating HTML reports about the contents of Esri geodatabases.
Stars: ✭ 44 (+76%)
Mutual labels:  gis, gdal, ogr
Rioxarray
geospatial xarray extension powered by rasterio
Stars: ✭ 148 (+492%)
Mutual labels:  gis, gdal
Rasterio
Rasterio reads and writes geospatial raster datasets
Stars: ✭ 1,643 (+6472%)
Mutual labels:  gis, gdal
Earthenterprise
Google Earth Enterprise - Open Source
Stars: ✭ 2,425 (+9600%)
Mutual labels:  gis, gdal
Geography for hackers
Geography for Hackers - Teaching all how to hack geography, use GIS, and think spatially
Stars: ✭ 25 (+0%)
Mutual labels:  gis, gdal
Geocube
Tool to convert geopandas vector data into rasterized xarray data.
Stars: ✭ 87 (+248%)
Mutual labels:  gis, gdal
topo
A Geometry library for Elixir that calculates spatial relationships between two geometries
Stars: ✭ 125 (+400%)
Mutual labels:  geometry, gis
GeoArrays.jl
Simple geographical raster interaction built on top of ArchGDAL, GDAL and CoordinateTransformations
Stars: ✭ 42 (+68%)
Mutual labels:  gis, gdal
Cga.js
CGA 3D 计算几何算法库 | 3D Compute Geometry Algorithm Library webgl three.js babylon.js等任何库都可以使用
Stars: ✭ 313 (+1152%)
Mutual labels:  geometry, gis
pyprt
Python bindings for the "Procedural Runtime" (PRT) of CityEngine by Esri.
Stars: ✭ 36 (+44%)
Mutual labels:  geometry, gis
Fiona
Fiona reads and writes geographic data files
Stars: ✭ 787 (+3048%)
Mutual labels:  gis, gdal
envelope ex
Utilities for calculating and comparing envelopes from geometries
Stars: ✭ 15 (-40%)
Mutual labels:  geometry, gis
Node Gdal
Node.js bindings for GDAL (Geospatial Data Abstraction Library)
Stars: ✭ 459 (+1736%)
Mutual labels:  gis, gdal
Simple Tiles
Simple tile generation for maps.
Stars: ✭ 106 (+324%)
Mutual labels:  gis, gdal
Datacube Core
Open Data Cube analyses continental scale Earth Observation data through time
Stars: ✭ 285 (+1040%)
Mutual labels:  gis, gdal
Agstoshapefile
Convert ArcGIS Server Dynamic Map Service to GeoJSON and Shapefile
Stars: ✭ 172 (+588%)
Mutual labels:  gis, gdal
gismanager
Publish Your GIS Data(Vector Data) to PostGIS and Geoserver
Stars: ✭ 45 (+80%)
Mutual labels:  gis, gdal
gdal2tiles
A python library for generating map tiles based on gdal2tiles.py from GDAL project
Stars: ✭ 53 (+112%)
Mutual labels:  gis, gdal
Microsoft.SqlServer.Types
a .NET Standard implementation of the spatial types in `Microsoft.SqlServer.Types`
Stars: ✭ 64 (+156%)
Mutual labels:  geometry, gis
GDAL.jl
Thin Julia wrapper for GDAL - Geospatial Data Abstraction Library
Stars: ✭ 78 (+212%)
Mutual labels:  gdal, ogr

batyr

A server which connects all kinds of vector geodata sources to a PostgreSQL/PostGIS database and provides a structured way to synchronize external data to database tables.

One common situation when dealing with geographic data is repeatedly exporting and importing this data to and from a PostGIS-enabled database. While the export is very well covered by products like Mapserver and GeoServer, importing is a bit more tricky. Common solutions consist mostly of custom scripts wrapping commands like shp2pgsql or ogr2ogr. These solutions often fail or at least need some tricky hacks if single rows of data should be updated instead of deleting and restoring the complete table content. It is also hard to account for slow or interrupted transactions and still make sure that the data stays synchronized as a whole. Using these import scripts requires either command line access or some custom code to hook them up to a job queue or even web interface to make them usable from within other applications.

Flaws like those were the reason for us to create batyr as a reusable solution for similar demands in the future.

Screenshot of the status page of the webinterface

batyr is a single server application providing the following:

  • "Intelligent" writing of data. A synchronization does not consist of a complete truncate and restore of a table anymore. Only features which have any differences to the ones provided by the external datasource are actually updated. New features are only created if they are not already in the database and features get (optionally) removed from the database if they are not part of the datasource any more. All this uses the primary key of the table to identify matching features from the datasource.
  • An integrated web-interface to get an overview on the current state of the server and to optionally start syncronizations manually.
  • A well-documented HTTP-API to easily integrate the batyr into other applications and allow flexible triggering of synchroniszations. Furthermore the HTTP-API provides methods to integrate batyr in existing monitoring systems like Nagios.
  • On-the-fly transformation of geometries to the spatial reference system of the database table. The required reference system is looked up in the PostGIS geometry_columns view/table and the transformation itself is performed by PostGIS.
  • Internally batyr uses the OGR-library to access datasources. So batyr covers all vector formats supported by OGR and connecting to - for example - a WFS is possible. Additionally this allows using OGR Virtual Formats for extended configuration options.
  • Synchronization jobs are internally queued and are handled in parallel using a configurable number of database connections. This takes care of a responsive HTTP-API as well as optimal usage of resources.

With these features it is possible to quickly integrate external geodata into your PostGIS database - without having to spend time creating custom code.

Screenshot of the jobqueue of the webinterface

For the complete manual see the included MANUAL.md file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].