- Откройте GeoDataFrame A и B.
Рассчитывайте на оба варианта (чтобы убедиться, что оба работают).(0,25 млн, 0,5 млн записей) - Индексирование:
Код: Выделить всё
nutzung_RDD.analyze() buildings_RDD.analyze() nutzung_RDD.spatialPartitioning(GridType.KDBTREE) buildings_RDD.spatialPartitioning(nutzung_RDD.getPartitioner()) - Пространственное соединение (должно быть пересечением)
Код: Выделить всё
build_on_spatial_partitioned_rdd = True ## Set to TRUE only if run join query
using_index = True
try:
result_RDD = JoinQuery.SpatialJoinQueryFlat(buildings_RDD, nutzung_RDD, using_index, build_on_spatial_partitioned_rdd)
print(f"Number of results: {result_RDD.count()}")
print(result_RDD.take(5)) # Sample output
except Exception as e:
print(f"An error occurred during the spatial join: {e}")
Во время пространственного соединения произошла ошибка: произошла ошибка при вызове z:org.apache.spark.api. python.PythonRDD.collectAndServe.
: org.apache.spark.SparkException: задание прервано из-за сбоя этапа: задача 15 на этапе 52.0 завершилась неудачно 1 раз, последний сбой: потеряно задание 15.0 на этапе 52.0 (TID 541) ( Драйвер исполнителя 28dd096dafc7): org.locationtech.jts.geom.TopologyException: конфликт бокового местоположения [ (463724.13, 5796494.38, NaN)]
Я использую Sedona: последнюю версию из dockerhub.
Обычно я бы спросил на gis.stackexchange, но похоже, что вопросы, связанные с Седоной, здесь встречаются чаще, чем там.
РЕДАКТИРОВАТЬ:
Я переписал код, чтобы вместо него использовать SQL:
Код: Выделить всё
result_gdf = sedona.sql("""SELECT ST_Intersection(b.geometry, u.geometry) AS geometry
FROM buildings b, usage u
WHERE ST_Intersects(b.geometry, u.geometry)"""
)
result_gdf.createOrReplaceTempView("result")
result2_gdf = sedona.sql("""
SELECT ST_MakeValid(geometry)
FROM result
""")
result2_gdf.count()
24/10/07 19:08:00 ERROR Executor: Исключение в задаче 6.0 на этапе 173.0 ( TID 2145)
org.locationtech.jts.geom.TopologyException: конфликт бокового местоположения [ (407123.5427156649, 5803673.011053633, NaN)]
Интересно, почему. Потому что я даже попробовал ST_MakeValid.
Подробнее здесь: https://stackoverflow.com/questions/790 ... che-sedona