Пространственное соединение в Apache SedonaPython

Программы на 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.
EDIT 2:
Я даже не могу показать проблемные записи, потому что ошибка также выдается для ST_Is_Valid.

Код: Выделить всё

result2_gdf = sedona.sql("""
SELECT building_oid
FROM result
WHERE ST_IsValid(geometry, 1) = false;
""")
result2_gdf.show()
org.apache.spark.sql.sedona_sql.expressions.InferredExpressionException: произошло исключение при оценке выражения ST_Intersection — входные данные: [POLYGON ((354735.34 5758459.87, 354741.52 5758459.29, 354741.47 5758458.76, 354742.003 5758458.661, 354742.51 5758458.467, 354742.974 5758458.186, 354743.379 5758457.825, 354743.713 5758457.397, 354743.964 5758456.917, 354 744.125 5758456.399, 354744.19 5758455.86, 354744.839 5758455.842, 354744.839 5758454.833, 354744.11 5758454.92, 354743.905 5758454.454, 354743.625 5758454.029, 354743.276 5758453.658, 354742.87 5758453.351, 354742.418 5758453.117, 354741.933 57584 52.963, 354741.429 5758452.894 , 354740.92 5758452.91, 354740.87 5758452.33, 354734.69 5758452.91, 354734.47 5758450.53, 354719.262 5758452.06, 354719.87 2 5758458.208, 354718.444 5758458.366, 354719.11 5758464.36, 354735.59 5758462.51, 354735.34 5758459.87)), МУЛЬТИПОЛИГОН (((354742.48) 361941514 5758458.483279419, 354742.5175583665 5758458.466906712, 354742.5512882294 5758458.450107478, 354742.5848036437 575 8458.432884384, 354742.5599997879 5758458.445518499, 354742.53506431903 5758458.457890828, 354742.51 5758458.47, 354742.50122503354 5758458.474463283, 35474 2.49243145384 5758458.478889782, 354742.48361941514 5758458.483279419)), ((354744.19 5758455.86, 354744.18363257905 5758455.97 8846373, 354744.173464127 5758456.097428019, 354744.15950506565 5758456.215623404, 354744.1743896288 5758456.097518557, 44.18455998343 5758455.978914724, 354744.19 5758455.86)), ((354742.76916934864 5758458.3281861525, 354742.856506923 5758458.272293335, 354742.9418533804 5758458.213404956, 354743.02510602196 5758458.151591878, 354743.006871307 5758458.164 586073, 354742.988501966 5758458.177389245, 354742.97 5758458.19, 354742.90448312287 5758458.238112903, 354742.83751848264 5 758458.284189465, 354742.76916934864 5758458.3281861525)), ((354742.4807933091 5758453.143215798, 354742.36904797406 5758453.0 96683949, 354742.255514648 5758453.054702802, 354742.1403785658 5758453.01734085, 354742.23469866544 5758453.048476773, 3547 42.32793967956 5758453.082708925, 354742.42 5758453.12 , 354742.44034595153 5758453.127524007, 354742.4606111444 5758453.135262895, 354742.4807933091 5758453.143215798)), ((354743) .56067013886 5758453.949935026, 354743.47363280016 5758453.851548408, 354743.382367441 5758453.757070585, 354743.28704942006 5758453.666683088, 354743.380944933 5758453.758478318, 354743.4721767185 5758453.852921386, 354743.56067013886 5758453.9499 35026)), ((354741.50910225126 5758452.898420274, 354741.6329594108 5758452.913596253, 354741.75649912434 5758452.931170253, 4741.87967496796 5758452.95113567 , 354741.7569187535 5758452.928421285, 354741.633323018 5758452.9108393155, 354741.50910225126 5758452.898420274)), ((354742) .87 5758453.35, 354743.00843700604 5758453.446922913, 354743.143314634 5758453.548740796, 354743.2744598884 5758453.65532305 6, 354743.1454582713 5758453.545990117, 354743.01049506286 5758453.444107629, 354742.87 5758453.35), (354741.47 5758458.76, 35, 4741.69640811626 5758458.730853419, 354741.9199317863 5758458.6845141575, 354742.1392674122 5758458.621252467, 354742.093112 97646 5758458.635119098, 354742.04668400256 5758458.648036752, 354742 5758458.66, 354741.91386881284 5758458.682274899, 354741.8 271822026 5758458.702279502, 354741.74 5758458.72, 354741.6503692072 5758458.735750736, 354741.5603475359 5758458.74908728, 354741.47 5758458.76)), ((354743.91 5758454.45, 354743.82046237413 5758454.307324911, 354743.7278918259 5758454.166904364, 354, 743.63 5758454.03, 354743.676666975 5758454.1000003815, 354743.7233338356 5758454.170000792, 354743.77 5758454.24 , 354743.8166666031 5758454.309999824, 354743.8633327484 5758454.37999928, 354743.91 5758454.45), (354743.5687541657 5758457 .608473395, 354743.7185425014 5758457.395727332, 354743.849262841 5758457.170761499, 354743.959924779 5758456.935280356, 354, 744.04968988255 5758456.691068032, 354744.0221770005 5758456.768298324, 354743.9922706891 5758456.844633698, 354743.96 56.92, 354743.9258946364 5758457.001157474, 354743.8892155034 5758457.081184673, 354743.85 5758457.16, 354743.8060313074 575 8457.241553628, 354743.75934706524 5758457.321583757 , 354743.71 5758457.4, 354743.6652958208 5758457.4710824955, 354743.6181956441 5758457.540600536, 354743.5687541657 575845 7.608473395)))], причина: обнаружено неузловое пересечение между LINESTRING ( 354741.47 5758458.76, 354741.69640811626 5758458.730853419 ) и LINESTRING ( 354741.6503692072 5758458.7 35750736, 354741.5603475359 5758458.74908728 ) [ (354741.5973395641, 5758458.743606979, NaN) ]


Подробнее здесь: https://stackoverflow.com/questions/790 ... che-sedona
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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