Пример #1
0
        def assign_cellvalues(feature):
            tags = feature.properties.tags.values()

            if 'water' in tags:
                return Feature(feature.geometry, CellValue(4, 4))
            elif "en:Zern's Farmer's Market" in tags:
                return Feature(feature.geometry, CellValue(3, 3))
            else:
                return Feature(feature.geometry, CellValue(1, 1))
class FeatureCellValueSchemaTest(BaseTestClass):
    sc = BaseTestClass.pysc._jsc.sc()
    fw = BaseTestClass.pysc._jvm.geopyspark.vectorpipe.tests.schemas.FeatureCellValueWrapper

    java_rdd = fw.testOut(sc)
    ser = ProtoBufSerializer(feature_cellvalue_decoder,
                             feature_cellvalue_encoder)

    rdd = RDD(java_rdd, BaseTestClass.pysc, AutoBatchedSerializer(ser))

    point = Point(0, 2)
    line_1 = LineString(
        [point, Point(1, 3),
         Point(2, 4),
         Point(3, 5),
         Point(4, 6)])
    line_2 = LineString(
        [Point(5, 7),
         Point(6, 8),
         Point(7, 9),
         Point(8, 10),
         Point(9, 11)])
    multi_line = MultiLineString([line_1, line_2])

    features = [
        Feature(point, CellValue(2, 1)),
        Feature(line_1, CellValue(1, 0)),
        Feature(multi_line, CellValue(1, 0))
    ]

    collected = [f for f in rdd.collect()]

    @pytest.fixture(autouse=True)
    def tearDown(self):
        yield
        BaseTestClass.pysc._gateway.close()

    def test_decoder(self):
        geoms = [g.geometry for g in self.collected]
        ms = [m.properties for m in self.collected]

        for x in self.features:
            self.assertTrue(x.geometry in geoms)
            self.assertTrue(x.properties in ms)

    def test_encoder(self):
        expected_encoded = [
            to_pb_feature_cellvalue(f).SerializeToString()
            for f in self.features
        ]
        actual_encoded = [feature_cellvalue_encoder(f) for f in self.collected]

        for x in expected_encoded:
            self.assertTrue(x in actual_encoded)
Пример #3
0
    def test_rasterization_with_partitioner(self):
        features = osm_reader.from_orc(file_path("zerns.orc"))

        lines = features.get_line_features_rdd()
        polys = features.get_polygon_features_rdd()

        mapped_lines = lines.map(
            lambda feature: Feature(feature.geometry, CellValue(1, 1)))

        def assign_cellvalues(feature):
            tags = feature.properties.tags.values()

            if 'water' in tags:
                return Feature(feature.geometry, CellValue(4, 4))
            elif "en:Zern's Farmer's Market" in tags:
                return Feature(feature.geometry, CellValue(3, 3))
            else:
                return Feature(feature.geometry, CellValue(2, 2))

        mapped_polys = polys.map(lambda feature: assign_cellvalues(feature))

        unioned = BaseTestClass.pysc.union((mapped_lines, mapped_polys))
        result = rasterize_features(
            unioned,
            4326,
            12,
            cell_type=CellType.INT8,
            partition_strategy=SpatialPartitionStrategy())

        self.assertEqual(result.get_min_max(), (1, 4))
        self.assertEqual(result.count(), 1)
Пример #4
0
def from_pb_feature(pb_feature):
    """Creates a ``Feature`` with ``properties`` of ``Properties``
    from ``ProtoSimpleFeature``.

    Args:
        pb_feature (ProtoSimpleFeature): The ``ProtoSimpleFeature`` instance to be converted.

    Returns:
        :class:`~geopyspark.vector_pipe.Feature`
    """

    metadata = dict(pb_feature.metadata)
    geometry = loads(pb_feature.geom)

    return Feature(geometry=geometry, properties=metadata)
Пример #5
0
def from_pb_feature_cellvalue(pb_feature_cellvalue):
    """Creates a ``Feature`` with ``properties`` of ``CellValue``
    from ``ProtoFeature``.

    Args:
        pb_feature_cellvalue (ProtoFeatureCellValue): The ``ProtoFeatureCellValue`` instance
            to be converted.

    Returns:
        :class:`~geopyspark.vector_pipe.Feature`
    """

    geometry = loads(pb_feature_cellvalue.geom)
    cellvalue = CellValue(pb_feature_cellvalue.cellValue.value,
                          pb_feature_cellvalue.cellValue.zindex)

    return Feature(geometry, cellvalue)
Пример #6
0
class FeatureSchemaTest(BaseTestClass):
    sc = BaseTestClass.pysc._jsc.sc()
    fw = BaseTestClass.pysc._jvm.geopyspark.vectorpipe.tests.schemas.FeatureWrapper

    java_rdd = fw.testOut(sc)
    ser = ProtoBufSerializer(feature_decoder, feature_encoder)

    rdd = RDD(java_rdd, BaseTestClass.pysc, AutoBatchedSerializer(ser))

    metadata = Properties(element_id=1993,
                          user="******",
                          uid=19144,
                          changeset=10,
                          version=24,
                          minor_version=5,
                          timestamp=parser.parse("2012-06-05T07:00:00UTC"),
                          visible=True,
                          tags={
                              'amenity': 'embassy',
                              'diplomatic': 'embassy',
                              'country': 'azavea'
                          })

    point = Point(0, 2)
    line_1 = LineString(
        [point, Point(1, 3),
         Point(2, 4),
         Point(3, 5),
         Point(4, 6)])
    line_2 = LineString(
        [Point(5, 7),
         Point(6, 8),
         Point(7, 9),
         Point(8, 10),
         Point(9, 11)])
    multi_line = MultiLineString([line_1, line_2])

    features = [
        Feature(point, metadata),
        Feature(line_1, metadata),
        Feature(multi_line, metadata)
    ]

    collected = [f for f in rdd.collect()]

    @pytest.fixture(autouse=True)
    def tearDown(self):
        yield
        BaseTestClass.pysc._gateway.close()

    def test_decoder(self):
        geoms = [g.geometry for g in self.collected]
        ms = [m.properties for m in self.collected]

        for x in self.features:
            self.assertTrue(x.geometry in geoms)
            self.assertTrue(x.properties in ms)

    def test_encoder(self):
        expected_encoded = [
            to_pb_feature(f).SerializeToString() for f in self.features
        ]
        actual_encoded = [feature_encoder(f) for f in self.collected]

        for x in expected_encoded:
            self.assertTrue(x in actual_encoded)