LibGEOS.jl

CI codecov

LibGEOS is a package for manipulation and analysis of planar geometric objects, based on the libraries GEOS (the engine of PostGIS) and JTS (from which GEOS is ported). This package wraps the GEOS C API, see its usage and reference docs.

Among other things, it allows you to parse Well-known Text (WKT).

p1 = readgeom("POLYGON((0 0,1 0,1 1,0 0))")
p2 = readgeom("POLYGON((0 0,1 0,1 1,0 1,0 0))")
p3 = readgeom("POLYGON((2 0,3 0,3 1,2 1,2 0))")

Example 1

Add a buffer around them

g1 = buffer(p1, 0.5)
g2 = buffer(p2, 0.5)
g3 = buffer(p3, 0.5)

Example 2

and take the union of different geometries

polygon = LibGEOS.union(g1, g3)

Example 3

GEOS functionality is extensive, so coverage is incomplete, but the basic functionality for working with geospatial data is already available. I'm learning as I go along, so documentation is lacking, but if you're interested, you can have a look at the examples in the examples/ folder, or the tests in test/test_geo_interface.jl and test/test_geos_operations.jl.

Installation

  1. At the Julia prompt, run
pkg> add LibGEOS

This will install both the Julia package and GEOS shared libraries together. The GEOS build comes from GEOS_jll, and the build script can be found in Yggdrasil.

  1. Test that LibGEOS works by runnning
pkg> test LibGEOS

Ecosystem

  • Makie support for LibGEOS is available via LibGEOSMakie.jl
  • LibGEOS integrates with GeoInterface.jl making it easy to combine LibGEOS with other geometry packages.