def DistanceJoinQueryFlat(cls, spatialRDD: SpatialRDD, queryRDD: SpatialRDD, useIndex: bool, considerBoundaryIntersection: bool) -> RDD: """ :param spatialRDD: SpatialRDD :param queryRDD: SpatialRDD :param useIndex: bool :param considerBoundaryIntersection: bool >> spatial_rdd = >> query_rdd = >> spatial_join_result = JoinQuery.DistanceJoinQueryFlat(spatial_rdd, query_rdd, True, True) >> spatial_join_result.collect() [GeoData(), GeoData()] :return: """ jvm = spatialRDD._jvm sc = spatialRDD._sc spatial_join = jvm.JoinQuery.DistanceJoinQueryFlat srdd = spatial_join( spatialRDD._srdd, queryRDD._srdd, useIndex, considerBoundaryIntersection ) serialized = JvmSedonaPythonConverter(jvm).\ translate_spatial_pair_rdd_to_python(srdd) return RDD(serialized, sc, SedonaPickler())
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 = JvmSedonaPythonConverter( jvm).translate_spatial_rdd_to_python(srdd) return RDD(serialized, sc, SedonaPickler())
def getRawSpatialRDD(self): """ :return: """ serialized_spatial_rdd = SedonaPythonConverter(self._jvm).translate_spatial_rdd_to_python(self._srdd.getRawSpatialRDD()) if not hasattr(self, "_raw_spatial_rdd"): RDD.saveAsObjectFile = lambda x, path: x._jrdd.saveAsObjectFile(path) setattr(self, "_raw_spatial_rdd", RDD(serialized_spatial_rdd, self._sc, SedonaPickler())) else: self._raw_spatial_rdd._jrdd = serialized_spatial_rdd return getattr(self, "_raw_spatial_rdd")
def spatialJoin(cls, queryWindowRDD: SpatialRDD, objectRDD: SpatialRDD, joinParams: JoinParams) -> RDD: """ :param queryWindowRDD: SpatialRDD :param objectRDD: SpatialRDD :param joinParams: JoinParams :return: """ jvm = queryWindowRDD._jvm sc = queryWindowRDD._sc jvm_join_params = joinParams.jvm_instance(jvm) srdd = jvm.JoinQuery.spatialJoin(queryWindowRDD._srdd, objectRDD._srdd, jvm_join_params) serialized = JvmSedonaPythonConverter(jvm).\ translate_spatial_pair_rdd_to_python(srdd) return RDD(serialized, sc, SedonaPickler())
def DistanceJoinQuery(cls, spatialRDD: SpatialRDD, queryRDD: SpatialRDD, useIndex: bool, considerBoundaryIntersection: bool) -> RDD: """ :param spatialRDD: SpatialRDD :param queryRDD: SpatialRDD :param useIndex: bool :param considerBoundaryIntersection: bool :return: """ jvm = spatialRDD._jvm sc = spatialRDD._sc srdd = jvm.JoinQuery.DistanceJoinQuery( spatialRDD._srdd, queryRDD._srdd, useIndex, considerBoundaryIntersection ) serialized = JvmSedonaPythonConverter(jvm).\ translate_spatial_pair_rdd_with_hashset_to_python(srdd) return RDD(serialized, sc, SedonaPickler())
def SpatialJoinQueryFlat(cls, spatialRDD: SpatialRDD, queryRDD: SpatialRDD, useIndex: bool, considerBoundaryIntersection: bool) -> RDD: """ Function takes SpatialRDD and other SpatialRDD and based on two parameters - useIndex - considerBoundaryIntersection creates RDD with result of Spatial Join operation. It Returns RDD[GeoData, GeoData] :param spatialRDD: SpatialRDD :param queryRDD: SpatialRDD :param useIndex: bool :param considerBoundaryIntersection: bool :return: RDD >> spatial_join_result = JoinQuery.SpatialJoinQueryFlat( >> spatialRDD, queryRDD, useIndex, considerBoundaryIntersection >> ) >> spatial_join_result.collect() [[GeoData(Polygon, ), GeoData()], [GeoData(), GeoData()], [GeoData(), GeoData()]] """ jvm = spatialRDD._jvm sc = spatialRDD._sc spatial_join = jvm.JoinQuery.SpatialJoinQueryFlat srdd = spatial_join( spatialRDD._srdd, queryRDD._srdd, useIndex, considerBoundaryIntersection ) serialized = JvmSedonaPythonConverter(jvm).\ translate_spatial_pair_rdd_to_python(srdd) return RDD(serialized, sc, SedonaPickler())
def spatialPartitionedRDD(self): """ :return: """ serialized_spatial_rdd = SedonaPythonConverter(self._jvm).translate_spatial_rdd_to_python( get_field(self._srdd, "spatialPartitionedRDD")) if not hasattr(self, "_spatial_partitioned_rdd"): setattr(self, "_spatial_partitioned_rdd", RDD(serialized_spatial_rdd, self._sc, SedonaPickler())) else: self._spatial_partitioned_rdd._jrdd = serialized_spatial_rdd return getattr(self, "_spatial_partitioned_rdd")
def to_rdd(self): jvm = self.sc._jvm serialized = JvmSedonaPythonConverter(jvm). \ translate_spatial_pair_rdd_with_list_to_python(self.jsrdd) return RDD(serialized, self.sc, SedonaPickler())