def encode_rectified_grid(self, size, extent, sr, grid_name): size_x, size_y = size minx, miny, maxx, maxy = extent srs_name = sr.url swap = crss.getAxesSwapper(sr.srid) frmt = "%.3f %.3f" if sr.IsProjected() else "%.8f %.8f" labels = ("x", "y") if sr.IsProjected() else ("long", "lat") axis_labels = " ".join(swap(*labels)) origin = frmt % swap(minx, maxy) x_offsets = frmt % swap((maxx - minx) / float(size_x), 0) y_offsets = frmt % swap(0, (miny - maxy) / float(size_y)) return GML("RectifiedGrid", GML("limits", self.encode_grid_envelope(0, 0, size_x - 1, size_y - 1) ), GML("axisLabels", axis_labels), GML("origin", GML("Point", GML("pos", origin), **{ ns_gml("id"): self.get_gml_id("%s_origin" % grid_name), "srsName": srs_name } ) ), GML("offsetVector", x_offsets, srsName=srs_name), GML("offsetVector", y_offsets, srsName=srs_name), **{ ns_gml("id"): self.get_gml_id(grid_name), "dimension": "2" } )
def encode_bounded_by(self, extent, sr=None): minx, miny, maxx, maxy = extent sr = sr or SpatialReference(4326) swap = crss.getAxesSwapper(sr.srid) labels = ("x", "y") if sr.IsProjected() else ("long", "lat") axis_labels = " ".join(swap(*labels)) axis_units = "m m" if sr.IsProjected() else "deg deg" frmt = "%.3f %.3f" if sr.IsProjected() else "%.8f %.8f" # Make sure values are outside of actual extent if sr.IsProjected(): minx -= 0.0005 miny -= 0.0005 maxx += 0.0005 maxy += 0.0005 else: minx -= 0.000000005 miny -= 0.000000005 maxx += 0.000000005 maxy += 0.000000005 return GML("boundedBy", GML("Envelope", GML("lowerCorner", frmt % swap(minx, miny)), GML("upperCorner", frmt % swap(maxx, maxy)), srsName=sr.url, axisLabels=axis_labels, uomLabels=axis_units, srsDimension="2" ) )
def encode_bounded_by(self, extent, sr=None): minx, miny, maxx, maxy = extent sr = sr or SpatialReference(4326) swap = crss.getAxesSwapper(sr.srid) labels = ("x", "y") if sr.IsProjected() else ("long", "lat") axis_labels = " ".join(swap(*labels)) axis_units = "m m" if sr.IsProjected() else "deg deg" frmt = "%.3f %.3f" if sr.IsProjected() else "%.8f %.8f" # Make sure values are outside of actual extent if sr.IsProjected(): minx -= 0.0005 miny -= 0.0005 maxx += 0.0005 maxy += 0.0005 else: minx -= 0.000000005 miny -= 0.000000005 maxx += 0.000000005 maxy += 0.000000005 return GML( "boundedBy", GML("Envelope", GML("lowerCorner", frmt % swap(minx, miny)), GML("upperCorner", frmt % swap(maxx, maxy)), srsName=sr.url, axisLabels=axis_labels, uomLabels=axis_units, srsDimension="2"))
def encode_rectified_grid(self, size, extent, sr, grid_name): size_x, size_y = size minx, miny, maxx, maxy = extent srs_name = sr.url swap = crss.getAxesSwapper(sr.srid) frmt = "%.3f %.3f" if sr.IsProjected() else "%.8f %.8f" labels = ("x", "y") if sr.IsProjected() else ("long", "lat") axis_labels = " ".join(swap(*labels)) origin = frmt % swap(minx, maxy) x_offsets = frmt % swap((maxx - minx) / float(size_x), 0) y_offsets = frmt % swap(0, (miny - maxy) / float(size_y)) return GML( "RectifiedGrid", GML("limits", self.encode_grid_envelope(0, 0, size_x - 1, size_y - 1)), GML("axisLabels", axis_labels), GML( "origin", GML( "Point", GML("pos", origin), **{ ns_gml("id"): self.get_gml_id("%s_origin" % grid_name), "srsName": srs_name })), GML("offsetVector", x_offsets, srsName=srs_name), GML("offsetVector", y_offsets, srsName=srs_name), **{ ns_gml("id"): self.get_gml_id(grid_name), "dimension": "2" })
def encode_linear_ring(self, ring, sr): frmt = "%.3f %.3f" if sr.projected else "%.8f %.8f" swap = crss.getAxesSwapper(sr.srid) pos_list = " ".join(frmt % swap(*point) for point in ring) return GML("LinearRing", GML("posList", pos_list))
def encode_linear_ring(self, ring, sr): frmt = "%.3f %.3f" if sr.projected else "%.8f %.8f" swap = crss.getAxesSwapper(sr.srid) pos_list = " ".join(frmt % swap(*point) for point in ring) return GML("LinearRing", GML("posList", pos_list ) )
def encode_referenceable_grid(self, size, sr, grid_name): size_x, size_y = size swap = crss.getAxesSwapper(sr.srid) labels = ("x", "y") if sr.IsProjected() else ("long", "lat") axis_labels = " ".join(swap(*labels)) return GML( "ReferenceableGrid", GML("limits", self.encode_grid_envelope(0, 0, size_x - 1, size_y - 1)), GML("axisLabels", axis_labels), **{ns_gml("id"): self.get_gml_id(grid_name), "dimension": "2"} )
def encode_referenceable_grid(self, size, sr, grid_name): size_x, size_y = size swap = crss.getAxesSwapper(sr.srid) labels = ("x", "y") if sr.IsProjected() else ("long", "lat") axis_labels = " ".join(swap(*labels)) return GML( "ReferenceableGrid", GML("limits", self.encode_grid_envelope([size_x - 1, size_y - 1])), GML("axisLabels", axis_labels), **{ ns_gml("id"): self.get_gml_id(grid_name), "dimension": "2" })
def encode_bounded_by(self, coverage, grid=None, subset_extent=None): # if grid is None: footprint = coverage.footprint if grid and not grid.is_referenceable: sr = SpatialReference(grid.coordinate_reference_system) labels = grid.names axis_units = " ".join(["m" if sr.IsProjected() else "deg"] * len(labels)) extent = list(subset_extent) if subset_extent else list( coverage.extent) lc = extent[:len(extent) // 2] uc = extent[len(extent) // 2:] if crss.hasSwappedAxes(sr.srid): labels[0:2] = labels[1], labels[0] lc[0:2] = lc[1], lc[0] uc[0:2] = uc[1], uc[0] frmt = " ".join(["%.3f" if sr.IsProjected() else "%.8f"] * len(labels)) lower_corner = frmt % tuple(lc) upper_corner = frmt % tuple(uc) axis_labels = " ".join(labels) srs_name = sr.url elif footprint: minx, miny, maxx, maxy = subset_extent or footprint.extent sr = SpatialReference(4326) swap = crss.getAxesSwapper(sr.srid) labels = ("x", "y") if sr.IsProjected() else ("long", "lat") axis_labels = " ".join(swap(*labels)) axis_units = "m m" if sr.IsProjected() else "deg deg" frmt = "%.3f %.3f" if sr.IsProjected() else "%.8f %.8f" # Make sure values are outside of actual extent if sr.IsProjected(): minx -= 0.0005 miny -= 0.0005 maxx += 0.0005 maxy += 0.0005 else: minx -= 0.000000005 miny -= 0.000000005 maxx += 0.000000005 maxy += 0.000000005 lower_corner = frmt % swap(minx, miny) upper_corner = frmt % swap(maxx, maxy) srs_name = sr.url else: lower_corner = "" upper_corner = "" srs_name = "" axis_labels = "" axis_units = "" return GML( "boundedBy", GML("Envelope", GML("lowerCorner", lower_corner), GML("upperCorner", upper_corner), srsName=srs_name, axisLabels=axis_labels, uomLabels=axis_units, srsDimension="2"))