Skip to main content

Python tools for PostGIS

Project description

plpygis

plpygis is a pure Python module with no dependencies that can convert geometries between Well-known binary (WKB/EWKB), Well-known Text (WKT/EWKT) and GeoJSON representations. plpygis is mainly intended for use in PostgreSQL PL/Python functions to augment PostGIS's native capabilities.

Basic usage

plpygis implements several subclasses of the Geometry class, such as Point, LineString, MultiPolygon and so on:

>>> from plpygis import Point
>>> p = Point((-124.005, 49.005), srid=4326)
>>> print(p.ewkb)
0101000020e6100000b81e85eb51005fc0713d0ad7a3804840
>>> print(p.geojson)
{'type': 'Point', 'coordinates': [-124.005, 49.005]}
>>> p.z = 1
>>> print(p.wkt)
POINT Z (-124.005 49.005 1)

Usage with PostGIS

plpygis is designed to provide an easy way to implement PL/Python functions that accept geometry arguments or return geometry results. The following example will take a PostGIS geometry(Point) and use an external service to create a geometry(PointZ).

CREATE OR REPLACE FUNCTION add_elevation(geom geometry(POINT))
  RETURNS geometry(POINTZ)
AS $$
  from plpygis import Geometry
  from requests import get
  p = Geometry(geom)

  response = get(f'https://api.open-meteo.com/v1/elevation?longitude={p.x}&latitude={p.y}')
  if response.status_code == 200:
      content = response.json()
      p.z = content['elevation'][0]
      return p
  else:
      return None
$$ LANGUAGE plpython3u;

The Geometry() constructor will convert a PostGIS geometry that has been passed as a parameter to the PL/Python function into one of its plpygis subclasses. A Geometry that is returned from the PL/Python function will automatically be converted back to a PostGIS geometry.

The function above can be called as part of an SQL query:

SELECT
    name,
    add_elevation(geom)
FROM
    city;

Documentation

Full plpygis documentation is available at http://plpygis.readthedocs.io/.

Continuous Integration Documentation Status

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plpygis-0.5.5.tar.gz (34.1 kB view details)

Uploaded Source

Built Distribution

plpygis-0.5.5-py3-none-any.whl (25.4 kB view details)

Uploaded Python 3

File details

Details for the file plpygis-0.5.5.tar.gz.

File metadata

  • Download URL: plpygis-0.5.5.tar.gz
  • Upload date:
  • Size: 34.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.1.dev0+g94f810c.d20240510 CPython/3.12.5

File hashes

Hashes for plpygis-0.5.5.tar.gz
Algorithm Hash digest
SHA256 153f23ef00726b389f1a49442f8b469d07b9e62a1004024ec8322d00d1a882ed
MD5 17d1678be01fc1828446ad723742cde7
BLAKE2b-256 e1b6c658eb83673b14ef553a2b0f9c3a6e94edaf3b54b11cb89ba88c20b472eb

See more details on using hashes here.

File details

Details for the file plpygis-0.5.5-py3-none-any.whl.

File metadata

  • Download URL: plpygis-0.5.5-py3-none-any.whl
  • Upload date:
  • Size: 25.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.1.dev0+g94f810c.d20240510 CPython/3.12.5

File hashes

Hashes for plpygis-0.5.5-py3-none-any.whl
Algorithm Hash digest
SHA256 d8317146615f017aa150723ce907571a4c40c7ebff4b8be58ad44749938f68dc
MD5 6e1a414904330751be7b3795259bbde9
BLAKE2b-256 373a2abfb2e649a7c20630d3c4d2d497373098e3f7052abea3048ecef9ee330f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page