OwlCyberSecurity - MANAGER
Edit File: predicates.py
""" This module houses the GEOS ctypes prototype functions for the unary and binary predicate operations on geometries. """ from ctypes import c_byte, c_char_p, c_double from django.contrib.gis.geos.libgeos import GEOM_PTR, GEOSFuncFactory from django.contrib.gis.geos.prototypes.errcheck import check_predicate # ## Binary & unary predicate factories ## class UnaryPredicate(GEOSFuncFactory): "For GEOS unary predicate functions." argtypes = [GEOM_PTR] restype = c_byte errcheck = staticmethod(check_predicate) class BinaryPredicate(UnaryPredicate): "For GEOS binary predicate functions." argtypes = [GEOM_PTR, GEOM_PTR] # ## Unary Predicates ## geos_hasz = UnaryPredicate("GEOSHasZ") geos_isclosed = UnaryPredicate("GEOSisClosed") geos_isempty = UnaryPredicate("GEOSisEmpty") geos_isring = UnaryPredicate("GEOSisRing") geos_issimple = UnaryPredicate("GEOSisSimple") geos_isvalid = UnaryPredicate("GEOSisValid") # ## Binary Predicates ## geos_contains = BinaryPredicate("GEOSContains") geos_covers = BinaryPredicate("GEOSCovers") geos_crosses = BinaryPredicate("GEOSCrosses") geos_disjoint = BinaryPredicate("GEOSDisjoint") geos_equals = BinaryPredicate("GEOSEquals") geos_equalsexact = BinaryPredicate( "GEOSEqualsExact", argtypes=[GEOM_PTR, GEOM_PTR, c_double] ) geos_intersects = BinaryPredicate("GEOSIntersects") geos_overlaps = BinaryPredicate("GEOSOverlaps") geos_relatepattern = BinaryPredicate( "GEOSRelatePattern", argtypes=[GEOM_PTR, GEOM_PTR, c_char_p] ) geos_touches = BinaryPredicate("GEOSTouches") geos_within = BinaryPredicate("GEOSWithin")