Exemplo n.º 1
0
    def SpatialKnnQuery(self, spatialRDD: SpatialRDD,
                        originalQueryPoint: BaseGeometry, k: int,
                        useIndex: bool):
        """

        :param spatialRDD: spatialRDD
        :param originalQueryPoint: shapely.geometry.Point
        :param k: int
        :param useIndex: bool
        :return: pyspark.RDD
        """
        jvm = spatialRDD._jvm
        jvm_geom = GeometryAdapter.create_jvm_geometry_from_base_geometry(
            jvm, originalQueryPoint)

        knn_neighbours = jvm.KNNQuery.SpatialKnnQuery(spatialRDD._srdd,
                                                      jvm_geom, k, useIndex)

        srdd = JvmGeoSparkPythonConverter(
            jvm).translate_geometry_seq_to_python(knn_neighbours)

        geoms_data = []
        for arr in srdd:
            binary_parser = BinaryParser(arr)
            geom = SpatialRDDParserData.deserialize(binary_parser)
            geoms_data.append(geom)

        return geoms_data
Exemplo n.º 2
0
    def SpatialRangeQuery(self, spatialRDD: SpatialRDD, rangeQueryWindow: BaseGeometry, considerBoundaryIntersection: bool, usingIndex: bool):
        """

        :param spatialRDD:
        :param rangeQueryWindow:
        :param considerBoundaryIntersection:
        :param usingIndex:
        :return:
        """

        jvm = spatialRDD._jvm
        sc = spatialRDD._sc

        jvm_geom = GeometryAdapter.create_jvm_geometry_from_base_geometry(jvm, rangeQueryWindow)

        srdd = jvm.\
            RangeQuery.SpatialRangeQuery(
            spatialRDD._srdd,
            jvm_geom,
            considerBoundaryIntersection,
            usingIndex
        )

        serialized = JvmGeoSparkPythonConverter(jvm).translate_spatial_rdd_to_python(srdd)

        return RDD(serialized, sc, GeoSparkPickler())
    def test_polygon(self):
        polygon = Polygon([(0, 0), (0, 1), (1, 1), (1, 0), (0, 0)])
        jvm_geom = GeometryAdapter.create_jvm_geometry_from_base_geometry(self.sc._jvm, polygon)

        assert jvm_geom.toString() == "POLYGON ((0 0, 0 1, 1 1, 1 0, 0 0))"

        ext = [(0, 0), (0, 2), (2, 2), (2, 0), (0, 0)]
        int = [(1, 1), (1, 1.5), (1.5, 1.5), (1.5, 1), (1, 1)]

        polygon = Polygon(ext, [int])
        jvm_geom = GeometryAdapter.create_jvm_geometry_from_base_geometry(self.sc._jvm, polygon)

        assert jvm_geom.toString() == "POLYGON ((0 0, 0 2, 2 2, 2 0, 0 0), (1 1, 1.5 1, 1.5 1.5, 1 1.5, 1 1))"

        wkt = "POLYGON ((-71.1776585052917 42.3902909739571, -71.1776820268866 42.3903701743239, -71.1776063012595 42.3903825660754, -71.1775826583081 42.3903033653531, -71.1776585052917 42.3902909739571))"
        polygon = loads(wkt)
        jvm_geom = GeometryAdapter.create_jvm_geometry_from_base_geometry(self.sc._jvm, polygon)

        assert jvm_geom.toString() == wkt
 def test_linestring(self):
     wkt = 'LINESTRING (-71.160281 42.258729, -71.160837 42.259113, -71.161144 42.25932)'
     linestring = loads(wkt)
     jvm_geom = GeometryAdapter.create_jvm_geometry_from_base_geometry(self.sc._jvm, linestring)
     assert jvm_geom.toString() == wkt
 def test_point(self):
     wkt = "POINT (-71.064544 42.28787)"
     point = loads(wkt)
     jvm_geom = GeometryAdapter.create_jvm_geometry_from_base_geometry(self.sc._jvm, point)
     assert jvm_geom.toString() == wkt