Пространственное соединение в Apache Sedona ⇐ Python

Программы на Python
Anonymous
Пространственное соединение в Apache Sedona

Сообщение Anonymous »

Я хочу протестировать Apache Sedona с пространственным объединением (например, ST_Intersection или gpd.Overlay).
  • Откройте 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()
Result2 получает аналогичное сообщение об ошибке:
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

Вернуться в «Python»