2
This module is for the miscellaneous GEOS routines, particularly the
3
ones that return the area, distance, and length.
5
from ctypes import c_int, c_double, POINTER
6
from django.contrib.gis.geos.libgeos import lgeos, GEOM_PTR
7
from django.contrib.gis.geos.prototypes.errcheck import check_dbl
9
### ctypes generator function ###
10
def dbl_from_geom(func, num_geom=1):
12
Argument is a Geometry, return type is double that is passed
13
in by reference as the last argument.
15
argtypes = [GEOM_PTR for i in xrange(num_geom)]
16
argtypes += [POINTER(c_double)]
17
func.argtypes = argtypes
18
func.restype = c_int # Status code returned
19
func.errcheck = check_dbl
22
### ctypes prototypes ###
24
# Area, distance, and length prototypes.
25
geos_area = dbl_from_geom(lgeos.GEOSArea)
26
geos_distance = dbl_from_geom(lgeos.GEOSDistance, num_geom=2)
27
geos_length = dbl_from_geom(lgeos.GEOSLength)