def test_srs(self): "Testing OGR Geometries with Spatial Reference objects." for mp in self.geometries.multipolygons: # Creating a geometry w/spatial reference sr = SpatialReference('WGS84') mpoly = OGRGeometry(mp.wkt, sr) self.assertEqual(sr.wkt, mpoly.srs.wkt) # Ensuring that SRS is propagated to clones. klone = mpoly.clone() self.assertEqual(sr.wkt, klone.srs.wkt) # Ensuring all children geometries (polygons and their rings) all # return the assigned spatial reference as well. for poly in mpoly: self.assertEqual(sr.wkt, poly.srs.wkt) for ring in poly: self.assertEqual(sr.wkt, ring.srs.wkt) # Ensuring SRS propagate in topological ops. a = OGRGeometry(self.geometries.topology_geoms[0].wkt_a, sr) b = OGRGeometry(self.geometries.topology_geoms[0].wkt_b, sr) diff = a.difference(b) union = a.union(b) self.assertEqual(sr.wkt, diff.srs.wkt) self.assertEqual(sr.srid, union.srs.srid) # Instantiating w/an integer SRID mpoly = OGRGeometry(mp.wkt, 4326) self.assertEqual(4326, mpoly.srid) mpoly.srs = SpatialReference(4269) self.assertEqual(4269, mpoly.srid) self.assertEqual('NAD83', mpoly.srs.name) # Incrementing through the multipolygon after the spatial reference # has been re-assigned. for poly in mpoly: self.assertEqual(mpoly.srs.wkt, poly.srs.wkt) poly.srs = 32140 for ring in poly: # Changing each ring in the polygon self.assertEqual(32140, ring.srs.srid) self.assertEqual('NAD83 / Texas South Central', ring.srs.name) ring.srs = str(SpatialReference(4326)) # back to WGS84 self.assertEqual(4326, ring.srs.srid) # Using the `srid` property. ring.srid = 4322 self.assertEqual('WGS 72', ring.srs.name) self.assertEqual(4322, ring.srid) # srs/srid may be assigned their own values, even when srs is None. mpoly = OGRGeometry(mp.wkt, srs=None) mpoly.srs = mpoly.srs mpoly.srid = mpoly.srid
def test_srs(self): "Testing OGR Geometries with Spatial Reference objects." for mp in self.geometries.multipolygons: # Creating a geometry w/spatial reference sr = SpatialReference("WGS84") mpoly = OGRGeometry(mp.wkt, sr) self.assertEqual(sr.wkt, mpoly.srs.wkt) # Ensuring that SRS is propagated to clones. klone = mpoly.clone() self.assertEqual(sr.wkt, klone.srs.wkt) # Ensuring all children geometries (polygons and their rings) all # return the assigned spatial reference as well. for poly in mpoly: self.assertEqual(sr.wkt, poly.srs.wkt) for ring in poly: self.assertEqual(sr.wkt, ring.srs.wkt) # Ensuring SRS propagate in topological ops. a = OGRGeometry(self.geometries.topology_geoms[0].wkt_a, sr) b = OGRGeometry(self.geometries.topology_geoms[0].wkt_b, sr) diff = a.difference(b) union = a.union(b) self.assertEqual(sr.wkt, diff.srs.wkt) self.assertEqual(sr.srid, union.srs.srid) # Instantiating w/an integer SRID mpoly = OGRGeometry(mp.wkt, 4326) self.assertEqual(4326, mpoly.srid) mpoly.srs = SpatialReference(4269) self.assertEqual(4269, mpoly.srid) self.assertEqual("NAD83", mpoly.srs.name) # Incrementing through the multipolygon after the spatial reference # has been re-assigned. for poly in mpoly: self.assertEqual(mpoly.srs.wkt, poly.srs.wkt) poly.srs = 32140 for ring in poly: # Changing each ring in the polygon self.assertEqual(32140, ring.srs.srid) self.assertEqual("NAD83 / Texas South Central", ring.srs.name) ring.srs = str(SpatialReference(4326)) # back to WGS84 self.assertEqual(4326, ring.srs.srid) # Using the `srid` property. ring.srid = 4322 self.assertEqual("WGS 72", ring.srs.name) self.assertEqual(4322, ring.srid) # srs/srid may be assigned their own values, even when srs is None. mpoly = OGRGeometry(mp.wkt, srs=None) mpoly.srs = mpoly.srs mpoly.srid = mpoly.srid
def extent(self, srid=WEB_MERCATOR_SRID): """ Returns bbox for layer. """ if not self._bbox or self._bbox_srid != srid: # Get bbox for raster in original coordinates meta = self.metadata xmin = meta.uperleftx ymax = meta.uperlefty xmax = xmin + meta.width * meta.scalex ymin = ymax + meta.height * meta.scaley # Create Polygon box geom = OGRGeometry(Envelope((xmin, ymin, xmax, ymax)).wkt) # Set original srs if meta.srs_wkt: geom.srs = SpatialReference(meta.srs_wkt) else: geom.srid = meta.srid # Transform to requested srid geom.transform(srid) # Calculate value range for bbox coords = geom.coords[0] xvals = [x[0] for x in coords] yvals = [x[1] for x in coords] # Set bbox self._bbox = (min(xvals), min(yvals), max(xvals), max(yvals)) self._bbox_srid = srid return self._bbox
def convOSM(wkt): """ Converts standard merkartor to osm projection as tuple """ obj = OGRGeometry(wkt) obj.srs = 'EPSG:4326' obj.transform_to(SpatialReference('EPSG:900913')) #obj.transform_to(SpatialReference('EPSG:4326')) return (obj.x, obj.y)
def street_location(request): if request.method == 'GET': params = request.GET points = [] if params.has_key('str'): if params.has_key('int'): points += (get_locations_by_intersection(params['str'],params['int'])) elif params.has_key('door'): loc = get_location_by_door(params['str'],params['door']) if loc: points.append(loc[0].wkt) else: raise Http404 if params.has_key('out'): out = params['out'] if out == 'layer' and points: lpoints = [] for p in points: pgeom = OGRGeometry(p) pgeom.srs = 'EPSG:4326' pgeom.transform_to(SpatialReference('EPSG:900913')) pcoord = simplejson.loads(pgeom.json) lpoints.append({ "type": "point", "id": 'point', "name": "pipin", "geojson": pcoord, "icon": { "url": "/media/icons/info.png", "width": 32, "height": 37 } }) layer = { 'type': 'layer', 'id': 'layer-location', 'elements': lpoints, 'box_size': None } return HttpResponse(simplejson.dumps(layer), mimetype='text/json') else: raise Http404 else: path = request.get_full_path() + '&out=layer' context = RequestContext(request, {'params': params, 'layerpath':path}) return render_to_response('maap/street_location.html', context_instance=context) else: raise Http404 else: raise Http404
def get_extent_from_text(points, srid_in, srid_out): """Transform an extent from srid_in to srid_out.""" proj_in = SpatialReference(srid_in) proj_out = SpatialReference(srid_out) if srid_out == 900913: if int(float(points[0])) == -180: points[0] = -179 if int(float(points[1])) == -90: points[1] = -89 if int(float(points[2])) == 180: points[2] = 179 if int(float(points[3])) == 90: points[3] = 89 wkt = 'POINT(%f %f)' % (float(points[0]), float(points[1])) wkt2 = 'POINT(%f %f)' % (float(points[2]), float(points[3])) ogr = OGRGeometry(wkt) ogr2 = OGRGeometry(wkt2) if hasattr(ogr, 'srs'): ogr.srs = proj_in ogr2.srs = proj_in else: ogr.set_srs(proj_in) ogr2.set_srs(proj_in) ogr.transform_to(proj_out) ogr2.transform_to(proj_out) wkt = ogr.wkt wkt2 = ogr2.wkt mins = wkt.replace('POINT (', '').replace(')', '').split(' ') maxs = wkt2.replace('POINT (', '').replace(')', '').split(' ') mins.append(maxs[0]) mins.append(maxs[1]) return mins
def transform_geom(wkt, srid_in, srid_out): proj_in = SpatialReference(int(srid_in)) proj_out = SpatialReference(int(srid_out)) ogr = OGRGeometry(wkt) if hasattr(ogr, 'srs'): ogr.srs = proj_in else: ogr.set_srs(proj_in) ogr.transform_to(proj_out) return ogr.wkt
def osm_change_srid(geom, srid): """ Converts standard merkartor to desired projection """ obj = OGRGeometry(geom.wkt) obj.srs = OSM_SRID obj.transform_to(SpatialReference(srid)) return obj.geos