Skip to content

Latest commit

 

History

History
30 lines (24 loc) · 1.38 KB

design.rst

File metadata and controls

30 lines (24 loc) · 1.38 KB

Design Notes

Shapely provides classes that implement, more or less, the interfaces in the OGC's simple feature access specification [1]. The classes are defined in similarly named modules under shapely.geometry: Point is in shapely.geometry.point, MultiPolygon is in shapely.geometry.multipolygon. These classes derive from shapely.geometry.base.BaseGeometry. The simple features methods of BaseGeometry call functions registered in a class variable impl. For example, BaseGeometry.area calls BaseGeometry.impl['area'].

The default registry is in the shapely.impl module. Its items are classes that operate on single geometric objects or pairs of geometric objects. Pluggability is a goal of this design, but we're not there yet. Some work needs to be done before anybody can use CGAL as a Shapely backend.

In sum, Shapely's stack is 4 layers:

  • Python geometry classes in shapely.geometry
  • An implementation registry: an abstraction that permits alternate geometry engines, even a mix of geometry engines. The default is in shapely.impl.
  • The GEOS implementations of methods for the registry in shapely.geos.
  • libgeos: algorithms written in C++.
[1]John R. Herring, Ed., “OpenGIS Implementation Specification for Geographic information - Simple feature access - Part 1: Common architecture,” Oct. 2006.