コード例 #1
0
ファイル: encoders.py プロジェクト: cpaulik/eoxserver
    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"
            }
        )
コード例 #2
0
ファイル: encoders.py プロジェクト: cpaulik/eoxserver
    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"
            )
        )
コード例 #3
0
    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"))
コード例 #4
0
    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"
            })
コード例 #5
0
    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))
コード例 #6
0
ファイル: encoders.py プロジェクト: v-manip/eoxserver
    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
            )
        )
コード例 #7
0
ファイル: encoders.py プロジェクト: kgabor/eoxserver
    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"}
        )
コード例 #8
0
    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"
            })
コード例 #9
0
    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"))