django/contrib/gis/geos/__init__.py
author Justin Bronn <jbronn@geodjango.org>
Sat Jan 31 15:18:50 2009 -0600 (3 years ago)
branchtrunk
changeset 138 466bece04a15
parent 1 911c7e1d6ffe
child 141 3282e3926790
permissions -rw-r--r--
Merged in patch from Aryeh Leib Taurog for #9877, adapting as necessary.
jbronn@1
     1
from django.contrib.gis.geos.geometry import GEOSGeometry, wkt_regex, hex_regex
jbronn@1
     2
from django.contrib.gis.geos.point import Point
jbronn@1
     3
from django.contrib.gis.geos.linestring import LineString, LinearRing
jbronn@1
     4
from django.contrib.gis.geos.polygon import Polygon
kmtracey@0
     5
from django.contrib.gis.geos.collections import GeometryCollection, MultiPoint, MultiLineString, MultiPolygon
kmtracey@0
     6
from django.contrib.gis.geos.error import GEOSException, GEOSIndexError
jbronn@138
     7
from django.contrib.gis.geos.libgeos import geos_version, geos_version_info, GEOS_PREPARE
kmtracey@0
     8
kmtracey@0
     9
def fromfile(file_name):
kmtracey@0
    10
    """
kmtracey@0
    11
    Given a string file name, returns a GEOSGeometry. The file may contain WKB,
kmtracey@0
    12
    WKT, or HEX.
kmtracey@0
    13
    """
kmtracey@0
    14
    fh = open(file_name, 'rb')
kmtracey@0
    15
    buf = fh.read()
kmtracey@0
    16
    fh.close()
kmtracey@0
    17
    if wkt_regex.match(buf) or hex_regex.match(buf):
kmtracey@0
    18
        return GEOSGeometry(buf)
kmtracey@0
    19
    else:
kmtracey@0
    20
        return GEOSGeometry(buffer(buf))
kmtracey@0
    21
kmtracey@0
    22
def fromstr(wkt_or_hex, **kwargs):
kmtracey@0
    23
    "Given a string value (wkt or hex), returns a GEOSGeometry object."
kmtracey@0
    24
    return GEOSGeometry(wkt_or_hex, **kwargs)
kmtracey@0
    25
kmtracey@0
    26
def hex_to_wkt(hex):
kmtracey@0
    27
    "Converts HEXEWKB into WKT."
kmtracey@0
    28
    return GEOSGeometry(hex).wkt
kmtracey@0
    29
kmtracey@0
    30
def wkt_to_hex(wkt):
kmtracey@0
    31
    "Converts WKT into HEXEWKB."
kmtracey@0
    32
    return GEOSGeometry(wkt).hex
kmtracey@0
    33
kmtracey@0
    34
def centroid(input):
kmtracey@0
    35
    "Returns the centroid of the geometry (given in HEXEWKB)."
kmtracey@0
    36
    return GEOSGeometry(input).centroid.wkt
kmtracey@0
    37
kmtracey@0
    38
def area(input):
kmtracey@0
    39
    "Returns the area of the geometry (given in HEXEWKB)."
kmtracey@0
    40
    return GEOSGeometry(input).area
kmtracey@0
    41