这是indexloc提供的服务,不要输入任何密码
Skip to content

jorisvandenbossche/pygeos

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyGEOS

This is a C/Python library that wraps geometry functions in GEOS in numpy ufuncs. This project is still in a mock-up phase: the API will most likely change.

The Geometry object

GEOS geometry objects are stored in a Python extension type pygeos.GEOSGeometry, that keeps the python interpreter out of the numpy ufunc inner loop. This object calls the GEOS destroy function to deallocate memory just before the wrapping GEOSGeometry object is deallocated.

Ufuncs only act on these pygeos.GEOSGeometry objects. Construct these as follows. This operation copies the underlying C object so that we can safely deallocate it once point is garbage collected:

>>> from pygeos import GEOSGeometry
>>> from shapely.geometry import Point

>>> pointer_to_geometry = Point(i, j)._geom
>>> geometry = GEOSGeometry(pointer_to_geometry)

Or simply:

>>> from pygeos import points

>>> point = points(5.2, 52.1)

Examples

Compare an grid of points with a polygon:

>>> geoms = points(*np.indices((4, 4)))
>>> polygon = box(0, 0, 2, 2)

>>> contains(polygon, geoms)

  array([[False, False, False, False],
         [False,  True, False, False],
         [False, False, False, False],
         [False, False, False, False]])

Compute the area of all possible intersections of two lists of polygons:

>>> from pygeos import box, area, intersection

>>> polygons_x = box(range(5), 0, range(10, 15), 10)
>>> polygons_y = box(0, range(5), 10, range(10, 15))

>>> area(intersection(polygons_x[:, np.newaxis], polygons_y[np.newaxis, :]))

array([[100.,  90.,  80.,  70.,  60.],
     [ 90.,  81.,  72.,  63.,  54.],
     [ 80.,  72.,  64.,  56.,  48.],
     [ 70.,  63.,  56.,  49.,  42.],
     [ 60.,  54.,  48.,  42.,  36.]])

Installation

Pygeos uses shapely's installing scripts. If you have libgeos at a standard location, the following should work:

$ pip install pygeos

Installation for developers

Clone the package:

$ git clone https://github.com/caspervdw/pygeos.git

Install it using pip:

$ pip install -e .

Run the unittests:

$ python -m pytest pygeos/test.py

References

Copyright & License

Copyright (c) 2019, Casper van der Wel. BSD 3-Clause license.

About

Wraps GEOS geometry functions in numpy ufuncs.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 52.2%
  • C 47.8%