Skip to content
/ gis Public

A full-featured geospatial extension for Tarantool

License

Notifications You must be signed in to change notification settings

tarantool/gis

Folders and files

NameName
Last commit message
Last commit date
Mar 22, 2017
Jul 17, 2017
May 19, 2019
Jul 3, 2016
Jul 3, 2016
Aug 23, 2019
Nov 8, 2021
Feb 16, 2017
Aug 23, 2019
Jul 3, 2016
May 19, 2019
Jul 3, 2016
Jul 3, 2016
Jul 3, 2016
Feb 16, 2017
Jul 3, 2016

Repository files navigation

Tarantool/GIS

Tarantool/GIS is a full-featured geospatial extension for Tarantool Database. It's like PostGIS, but for Tarantool.

  • Point, LineString, Polygon, MultiPoint, GeometryCollection and other geometric primitives.
  • Overlaps, Contains, Touches, Distance, Length, Area and other geometric functions.
  • Database of more than 5000 spatial reference systems (SRS) and conversion routines.
  • Aims to implement ISO 19125-1:2004 and ISO/IEC 13249-3 standards.
  • Full interoperability with ``WKT, WKB and GeoJSON formats.
  • Fast in-memory spatial indexes using Tarantool's RTREE.

Tarantool/GIS is in an alpha stage. All feautures are documented and fully covered by unit and functional tests.

[Build Status] (https://travis-ci.org/tarantool/gis)

Example

Here is an example how to work with geometric primitives in Tarantool:

gis = require('gis')
gis.install() -- create system tables
-- https://source.opennews.org/en-US/learning/choosing-right-map-projection/
wgs84 = 4326 -- WGS84 World-wide Projection (Lon/Lat)
nationalmap = 2163 -- US National Atlas Equal Area projection (meters)
calif5 = 2770 -- California zone 5 projection (meters)
nevada = gis.Polygon({{
    {-120.000000, 42.000000};
    {-114.000000, 42.000000};
    {-114.000000, 34.687427};
    {-120.000000, 39.000000};
    {-120.000000, 42.000000};
}}, wgs84)

nevada:wkt()
=> "POLYGON ((-120 42, -114 42, -114 34.687427, -120 39, -120 42))"

lasvegas = gis.Point({-115.136389, 36.175}, wgs84)
losangeles = gis.Point({-118.25, 34.05}, wgs84)

nevada:contains(lasvegas)
=> true
nevada:contains(losangeles)
=> false
line = gis.LineString({lasvegas, losangeles}, wgs84)
line:transform(calif5):length()
=> 368.94277529796 - km
nevada:transform(nationalmap):area() * 1e-6
=> 293496.74070953 -- km^2

Tarantool/GIS allows to store any kinds of geometric objects in Lua table and Tarantool spaces, perform kNN, OVERLAPS and other queries using the high-speed in-memory indexes.

Please follow [Getting Started] guide for further instructions. [Getting Started]: https://tarantool.github.io/gis/getting_started.html

See Also


Tarantool/GIS - manage geographics primitives as a professional with the speed of Tarantool!

About

A full-featured geospatial extension for Tarantool

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages