summaryrefslogtreecommitdiff
path: root/lib/python2.7/site-packages/django/contrib/gis/geos/coordseq.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/django/contrib/gis/geos/coordseq.py')
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/coordseq.py157
1 files changed, 0 insertions, 157 deletions
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/coordseq.py b/lib/python2.7/site-packages/django/contrib/gis/geos/coordseq.py
deleted file mode 100644
index acf34f7..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/coordseq.py
+++ /dev/null
@@ -1,157 +0,0 @@
-"""
- This module houses the GEOSCoordSeq object, which is used internally
- by GEOSGeometry to house the actual coordinates of the Point,
- LineString, and LinearRing geometries.
-"""
-from ctypes import c_double, c_uint, byref
-from django.contrib.gis.geos.base import GEOSBase, numpy
-from django.contrib.gis.geos.error import GEOSException, GEOSIndexError
-from django.contrib.gis.geos.libgeos import CS_PTR
-from django.contrib.gis.geos import prototypes as capi
-from django.utils.six.moves import xrange
-
-class GEOSCoordSeq(GEOSBase):
- "The internal representation of a list of coordinates inside a Geometry."
-
- ptr_type = CS_PTR
-
- #### Python 'magic' routines ####
- def __init__(self, ptr, z=False):
- "Initializes from a GEOS pointer."
- if not isinstance(ptr, CS_PTR):
- raise TypeError('Coordinate sequence should initialize with a CS_PTR.')
- self._ptr = ptr
- self._z = z
-
- def __iter__(self):
- "Iterates over each point in the coordinate sequence."
- for i in xrange(self.size):
- yield self[i]
-
- def __len__(self):
- "Returns the number of points in the coordinate sequence."
- return int(self.size)
-
- def __str__(self):
- "Returns the string representation of the coordinate sequence."
- return str(self.tuple)
-
- def __getitem__(self, index):
- "Returns the coordinate sequence value at the given index."
- coords = [self.getX(index), self.getY(index)]
- if self.dims == 3 and self._z:
- coords.append(self.getZ(index))
- return tuple(coords)
-
- def __setitem__(self, index, value):
- "Sets the coordinate sequence value at the given index."
- # Checking the input value
- if isinstance(value, (list, tuple)):
- pass
- elif numpy and isinstance(value, numpy.ndarray):
- pass
- else:
- raise TypeError('Must set coordinate with a sequence (list, tuple, or numpy array).')
- # Checking the dims of the input
- if self.dims == 3 and self._z:
- n_args = 3
- set_3d = True
- else:
- n_args = 2
- set_3d = False
- if len(value) != n_args:
- raise TypeError('Dimension of value does not match.')
- # Setting the X, Y, Z
- self.setX(index, value[0])
- self.setY(index, value[1])
- if set_3d: self.setZ(index, value[2])
-
- #### Internal Routines ####
- def _checkindex(self, index):
- "Checks the given index."
- sz = self.size
- if (sz < 1) or (index < 0) or (index >= sz):
- raise GEOSIndexError('invalid GEOS Geometry index: %s' % str(index))
-
- def _checkdim(self, dim):
- "Checks the given dimension."
- if dim < 0 or dim > 2:
- raise GEOSException('invalid ordinate dimension "%d"' % dim)
-
- #### Ordinate getting and setting routines ####
- def getOrdinate(self, dimension, index):
- "Returns the value for the given dimension and index."
- self._checkindex(index)
- self._checkdim(dimension)
- return capi.cs_getordinate(self.ptr, index, dimension, byref(c_double()))
-
- def setOrdinate(self, dimension, index, value):
- "Sets the value for the given dimension and index."
- self._checkindex(index)
- self._checkdim(dimension)
- capi.cs_setordinate(self.ptr, index, dimension, value)
-
- def getX(self, index):
- "Get the X value at the index."
- return self.getOrdinate(0, index)
-
- def setX(self, index, value):
- "Set X with the value at the given index."
- self.setOrdinate(0, index, value)
-
- def getY(self, index):
- "Get the Y value at the given index."
- return self.getOrdinate(1, index)
-
- def setY(self, index, value):
- "Set Y with the value at the given index."
- self.setOrdinate(1, index, value)
-
- def getZ(self, index):
- "Get Z with the value at the given index."
- return self.getOrdinate(2, index)
-
- def setZ(self, index, value):
- "Set Z with the value at the given index."
- self.setOrdinate(2, index, value)
-
- ### Dimensions ###
- @property
- def size(self):
- "Returns the size of this coordinate sequence."
- return capi.cs_getsize(self.ptr, byref(c_uint()))
-
- @property
- def dims(self):
- "Returns the dimensions of this coordinate sequence."
- return capi.cs_getdims(self.ptr, byref(c_uint()))
-
- @property
- def hasz(self):
- """
- Returns whether this coordinate sequence is 3D. This property value is
- inherited from the parent Geometry.
- """
- return self._z
-
- ### Other Methods ###
- def clone(self):
- "Clones this coordinate sequence."
- return GEOSCoordSeq(capi.cs_clone(self.ptr), self.hasz)
-
- @property
- def kml(self):
- "Returns the KML representation for the coordinates."
- # Getting the substitution string depending on whether the coordinates have
- # a Z dimension.
- if self.hasz: substr = '%s,%s,%s '
- else: substr = '%s,%s,0 '
- return '<coordinates>%s</coordinates>' % \
- ''.join([substr % self[i] for i in xrange(len(self))]).strip()
-
- @property
- def tuple(self):
- "Returns a tuple version of this coordinate sequence."
- n = self.size
- if n == 1: return self[0]
- else: return tuple([self[i] for i in xrange(n)])