Changeset 6884
- Timestamp:
- 12/04/07 09:09:06 (7 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/gis/django/contrib/gis/geos/base.py
r6861 r6884 30 30 # library. Not a substitute for good web security programming practices. 31 31 hex_regex = re.compile(r'^[0-9A-F]+$', re.I) 32 wkt_regex = re.compile(r'^( POINT|LINESTRING|LINEARRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)[ACEGIMLONPSRUTY\d,\.\-\(\) ]+$', re.I)32 wkt_regex = re.compile(r'^(SRID=(?P<srid>\d+);)?(?P<wkt>(POINT|LINESTRING|LINEARRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)[ACEGIMLONPSRUTY\d,\.\-\(\) ]+)$', re.I) 33 33 34 34 class GEOSGeometry(object): … … 58 58 # If the regex matches, the geometry is in HEX form. 59 59 g = from_hex(geo_input, len(geo_input)) 60 elif wkt_regex.match(geo_input):61 # Otherwise, the geometry is in WKT form.62 g = from_wkt(geo_input)63 60 else: 64 raise ValueError('String or unicode input unrecognized as WKT or HEXEWKB.') 61 m = wkt_regex.match(geo_input) 62 if m: 63 if m.group('srid'): srid = int(m.group('srid')) 64 g = from_wkt(m.group('wkt')) 65 else: 66 raise ValueError('String or unicode input unrecognized as WKT EWKT, and HEXEWKB.') 65 67 elif isinstance(geo_input, GEOM_PTR): 66 68 # When the input is a pointer to a geomtry (GEOM_PTR). … … 305 307 #### Output Routines #### 306 308 @property 309 def ewkt(self): 310 "Returns the EWKT (WKT + SRID) of the Geometry." 311 if self.get_srid(): return 'SRID=%s;%s' % (self.srid, self.wkt) 312 else: return self.wkt 313 314 @property 307 315 def wkt(self): 308 316 "Returns the WKT (Well-Known Text) of the Geometry." … … 356 364 "Alias for `srs` property." 357 365 return self.srs 366 367 def transform(self, ct): 368 "Transforms this Geometry; only works with GDAL." 369 srid = self.srid 370 if HAS_GDAL and srid: 371 g = OGRGeometry(self.wkb, srid) 372 g.transform(ct) 373 wkb = str(g.wkb) 374 ptr = from_wkb(wkb, len(wkb)) 375 if ptr: 376 # Reassigning pointer, and resetting the SRID. 377 destroy_geom(self._ptr) 378 self._ptr = ptr 379 self.srid = g.srid 380 else: 381 pass 358 382 359 383 #### Topology Routines #### django/branches/gis/django/contrib/gis/tests/test_geos.py
r6861 r6884 79 79 geom_t = fromstr(g.wkt) 80 80 self.assertEqual(geom_t.wkt, geom_h.wkt) 81 82 def test01h_ewkt(self): 83 "Testing EWKT." 84 srid = 32140 85 for p in polygons: 86 ewkt = 'SRID=%d;%s' % (srid, p.wkt) 87 poly = fromstr(ewkt) 88 self.assertEqual(srid, poly.srid) 89 self.assertEqual(srid, poly.shell.srid) 90 self.assertEqual(srid, fromstr(poly.ewkt).srid) # Checking export 81 91 82 92 def test02a_points(self):
