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 loads(self, obj, encoding="bytes"):
        binary_parser = BinaryParser(obj)
        spatial_parser_number = binary_parser.read_int()
        spatial_parser = self.get_parser(spatial_parser_number)
        parsed_row = spatial_parser.deserialize(binary_parser)

        return parsed_row
Exemplo n.º 3
0
    def __setstate__(self, attributes):
        bin_parser = BinaryParser(attributes["geom"])
        is_circle = bin_parser.read_byte()
        geom_bytes = attributes["geom"]

        if is_circle:
            radius = bin_parser.read_double()
            geom = bin_parser.read_geometry(geom_bytes.__len__() - 9)
            self._geom = Circle(geom, radius)
        else:
            self._geom = bin_parser.read_geometry(geom_bytes.__len__() - 1)

        self._userData = attributes["userData"]
Exemplo n.º 4
0
    def deserialize(self, datum):
        bin_parser = BinaryParser(datum)
        geom = GeometryFactory.geometry_from_bytes(bin_parser)

        return geom
Exemplo n.º 5
0
 def geom_from_bytes_data(cls, bin_data: List):
     bin_parser = BinaryParser(bin_data)
     return cls.geometry_from_bytes(bin_parser)