|
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 |
|