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), Extended Well-known Binary (EWKB) 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.wkb)
0101000020e6100000b81e85eb51005fc0713d0ad7a3804840
>>> print(p.geojson)
{'type': 'Point', 'coordinates': [-124.005, 49.005]}

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
  point = Geometry(geom)

  response = get(f'https://api.open-meteo.com/v1/elevation?longitude={point.x}&latitude={point.y}')
  if response.status_code == 200:
      content = response.json()
      point.z = content['elevation'][0]
      return point
  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, ST_AsText(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.4.2.tar.gz (28.3 kB view details)

Uploaded Source

Built Distribution

plpygis-0.4.2-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for plpygis-0.4.2.tar.gz
Algorithm Hash digest
SHA256 010730797d06b7f0c739c861b18a77035b40fc91f049cfaa9970969b4539d094
MD5 5aabb027d340bc8bea2bd48453db199c
BLAKE2b-256 9715497748d7cb76d26230f3ee74e27f1efa9915382e367b5a67b353f9cf9c7c

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for plpygis-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3f60047aab09f3591a622ca29fa12c43564c2ef0d6cfcbbb685b70eb97a5f1d8
MD5 47ff5e6f191211f27b2b35fc7670933b
BLAKE2b-256 4c796dfba731c1757959cc52f91db79736c702024887b2e56cf41e9820e817b6

See more details on using hashes here.

Supported by

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