Я работаю с многоугольниками Shapely, и мне нужен способ удалить все более мелкие многоугольники в большом многоугольнике. Я пробовал использовать метод .contains()
, который предоставляет Shapely, но метод не возвращает True
, если меньший многоугольник не полностью находится внутри большого многоугольника.
В принципе, мне нужен метод типа .contains()
, но он возвращает True
, если многоугольник находится на границе внешнего многоугольника, как на картинке.
.
Вот полигоны с картинки, представленные в формате wkt:
Зеленая:
POLYGON Z ((14.4265764858233823 45.3396418051734784 0.0000000000000000, 14.4267228266679606 45.3395430970275015 0.0000000000000000, 14.4266753563381904 45.3394727193694536 0.0000000000000000, 14.4265290154936121 45.3395714275154376 0.0000000000000000, 14.4265764858233823 45.3396418051734784 0.0000000000000000))`
Красный:
POLYGON Z ((14.4265450394689161 45.3395951840357725 0.0000000000000000, 14.4265695507109317 45.3395786509942837 0.0000000000000000, 14.4265802185605700 45.3395944667317679 0.0000000000000000, 14.4265982245953417 45.3395823215079616 0.0000000000000000, 14.4265715327703994 45.3395427492501426 0.0000000000000000, 14.4265290154936121 45.3395714275154376 0.0000000000000000, 14.4265450394689161 45.3395951840357725 0.0000000000000000))
Я также пробовал использовать метод .intersects()
, но он возвращает True
для многоугольников за пределами данного многоугольника, у которых есть некоторые общие границы, которые мне не нужны.
Надеюсь, вы понимаете, что мне нужно, и я благодарен, если кто-то знает решение этой проблемы.
contains
должно нормально работать. Создайте, например, два простых квадратных многоугольника один внутри другого с общей стороной, чтобы убедиться, что это работает. В вашем случае, вероятно, проблема с точностью. Не могли бы вы дать определение обоих полигонов, чтобы мы могли воспроизвести проблему? - person Georgy   schedule 06.07.2019polygon.wkt
, верно?). Потому что, если я загружу их и используюgreen.contains(red)
, он покажетTrue
. Чтобы получить все цифры, не могли бы вы использовать _4 _ сtrim=False
аргументом и добавить их в вопрос? Итак, это будет:from shapely import wkt; wkt.dumps(polygon, trim=False)
- person Georgy   schedule 06.07.2019