Как превратить пустоты внутри полигона в сам полигон ?

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 3020
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Как превратить пустоты внутри полигона в сам полигон ?

Сообщение Natalia Novoselova » 15 апр 2017, 03:27

Есть ли в ArcGIS или открытом софте ( QGIS, etc) инструмент, который позволяет убирать пустоты (дырки) внутри полигона? На примере – то, что нужно убрать перечеркнуто красным: это пустоты, со всех сторон окруженные данным полигоном (задача – превратить эти пустоты в тот полигон, который его окружает).
То есть задача - сделать полигон цельным внутри. Убрать все "озера"-пустоты, превратив их в сам полигон.

При этом, если пустота не со всех сторон окружена полигоном («залив») – ее надо оставить пустотой.
Вложения
holes.jpg
holes.jpg (52.9 КБ) 10379 просмотров

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 3020
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: Как превратить пустоты внутри полигона в сам полигон ?

Сообщение Natalia Novoselova » 15 апр 2017, 04:04

Вручную это можно сделать простым редактированием. Когда весь полигон выделяешь и переходишь в режим показа всех точек контура. То такие внутренние пустоты - удаляются при удалении всех его вершин.

По идее, может быть и автоматизированный процесс такого удаления.

Хотя ручной способ - уже хорошо. В моем случае вроде этого не так много.

trir
Гуру
Сообщения: 5271
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1013
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Как превратить пустоты внутри полигона в сам полигон ?

Сообщение trir » 15 апр 2017, 08:10

надо сделать новый полигон из внешней границы старого и записать его вместо старого - на SQL это делается в один запрос

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Как превратить пустоты внутри полигона в сам полигон ?

Сообщение Александр Мурый » 15 апр 2017, 09:35

В QGIS можно через Processing --> "Delete holes". В ArcGIS попробуйте инструмент Eliminate Polygon Part.
Редактор материалов, модератор форума

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 3020
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: Как превратить пустоты внутри полигона в сам полигон ?

Сообщение Natalia Novoselova » 16 апр 2017, 03:34

Александр Мурый писал(а): В ArcGIS попробуйте инструмент Eliminate Polygon Part.

Спасибо! Делает. Надо настроить правильно - у меня получилось лучше через проценты.

Аватара пользователя
nadiopt
Гуру
Сообщения: 4744
Зарегистрирован: 29 янв 2009, 13:27
Репутация: 495
Ваше звание: хрюкало
Откуда: Санкт-Петербург
Контактная информация:

Re: Как превратить пустоты внутри полигона в сам полигон ?

Сообщение nadiopt » 16 апр 2017, 10:01

можно еще перегнать в грид и обратно
ин гроссен фамилен нихт клювен клац клац

Аватара пользователя
Prince660
Активный участник
Сообщения: 164
Зарегистрирован: 25 мар 2011, 20:12
Репутация: 15
Ваше звание: Питоновод
Откуда: г. Симферорполь
Контактная информация:

Re: Как превратить пустоты внутри полигона в сам полигон ?

Сообщение Prince660 » 03 ноя 2017, 12:56

Я бы на питоне скрипт написал, чтобы он брал полигоны из файла и сохранял в другой файл эти полигоны, но только с координатами внешних границ. Соответственно дырок там уже не будет.

trir
Гуру
Сообщения: 5271
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1013
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Как превратить пустоты внутри полигона в сам полигон ?

Сообщение trir » 03 ноя 2017, 15:08


Veronika_Coconut
Интересующийся
Сообщения: 40
Зарегистрирован: 17 июл 2020, 09:11
Репутация: 2
Откуда: Киев

Re: Как превратить пустоты внутри полигона в сам полигон ?

Сообщение Veronika_Coconut » 04 мар 2021, 16:05

Александр Мурый писал(а):
15 апр 2017, 09:35
В QGIS можно через Processing --> "Delete holes". В ArcGIS попробуйте инструмент Eliminate Polygon Part.
Аналогичный вопрос, как и у автора. в Кгисе попробовала метод "Delete Holes". Он убрал дырки начисто, но не превратил в пустоты, а просто полигоны стали "чистые"

Ivor
Завсегдатай
Сообщения: 345
Зарегистрирован: 11 дек 2006, 09:46
Репутация: 102
Откуда: Иркутск

Re: Как превратить пустоты внутри полигона в сам полигон ?

Сообщение Ivor » 05 мар 2021, 03:28

Veronika_Coconut, ну да, если дырки нет - значит её нет, а есть большой полигон без дырки. А как можно "дырки" превратить в "пустоты"?

Veronika_Coconut
Интересующийся
Сообщения: 40
Зарегистрирован: 17 июл 2020, 09:11
Репутация: 2
Откуда: Киев

Re: Как превратить пустоты внутри полигона в сам полигон ?

Сообщение Veronika_Coconut » 11 мар 2021, 16:06

Ivor писал(а):
05 мар 2021, 03:28
ну да, если дырки нет - значит её нет, а есть большой полигон без дырки. А как можно "дырки" превратить в "пустоты"?
покажу на изображении:
1)некоторые программы не любят мультиполигоны, и потэтому все "дырки" создателем вектора представляются в виде разрывов. Дырки в подобные вырезки я пока чт могу исправлять только вручную...
2)А на втором изображении самая класическая дыра, которую и убирает ранее описанный метод в Кгисе, только не делает из нее предыдущий вариант дыри,а напрочь "зашивает" все дырки.
И иногда очень нужно сделать из второго первое не руками.
Вложения
дырка_1.jpg
дыра, но не мультиполигон
дырка_1.jpg (275.62 КБ) 6016 просмотров
дыр2.jpg
дыра-мультиполигон
дыр2.jpg (135.54 КБ) 6016 просмотров

Ivor
Завсегдатай
Сообщения: 345
Зарегистрирован: 11 дек 2006, 09:46
Репутация: 102
Откуда: Иркутск

Re: Как превратить пустоты внутри полигона в сам полигон ?

Сообщение Ivor » 11 мар 2021, 16:56

Veronika_Coconut, да уж, с таким не сталкивался, слава Богу. Автоматики для подобных изысков не видел, хотя, в принципе, соответствующий модуль не так и сложно написать. А что за программы требуют таких ухищрений, если не секрет?

gamm
Гуру
Сообщения: 4044
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1049
Ваше звание: программист
Откуда: Казань

Re: Как превратить пустоты внутри полигона в сам полигон ?

Сообщение gamm » 11 мар 2021, 16:59

Veronika_Coconut писал(а):
11 мар 2021, 16:06
некоторые программы не любят мультиполигоны, и потэтому все "дырки" создателем вектора представляются в виде разрывов
жуть какая ... лучше такие программы не использовать, а написавших такое - уволить без выходного пособия :mrgreen:

такой маразм только руками можно сделать, если резать полигоны линией. Или программу писать на R/Python ... искать, кто в кого вложен, потом искать во внешнем контуре точку, ближайшую к одной из точек дырки, вставлять дырку во внешний контур (убедившись, что линия разреза лежит внутри внешнего контура), и убирать дырку.

Veronika_Coconut
Интересующийся
Сообщения: 40
Зарегистрирован: 17 июл 2020, 09:11
Репутация: 2
Откуда: Киев

Re: Как превратить пустоты внутри полигона в сам полигон ?

Сообщение Veronika_Coconut » 12 мар 2021, 10:41

Ivor писал(а):
11 мар 2021, 16:56
А что за программы требуют таких ухищрений, если не секрет?
Если знакомы с такими системами, как Climat Field View, в John Deere был такой заскок, но исправили, или очень старая версия Global Mapper, то там не читает, видит как два отдельных полигона. В онлайн системе Climat Field View, где идентификатором поля является его название, он еще и самозаменяет поля з одинаковыми названиями (а части мультиполигона как раз тот случай) и загружает только какую-то одну часть полигона :? :oops: :lol:
Последний раз редактировалось Veronika_Coconut 12 мар 2021, 10:45, всего редактировалось 1 раз.

Veronika_Coconut
Интересующийся
Сообщения: 40
Зарегистрирован: 17 июл 2020, 09:11
Репутация: 2
Откуда: Киев

Re: Как превратить пустоты внутри полигона в сам полигон ?

Сообщение Veronika_Coconut » 12 мар 2021, 10:44

gamm писал(а):
11 мар 2021, 16:59
такой маразм только руками можно сделать, если резать полигоны линией. Или программу писать на R/Python ... искать, кто в кого вложен, потом искать во внешнем контуре точку, ближайшую к одной из точек дырки, вставлять дырку во внешний контур (убедившись, что линия разреза лежит внутри внешнего контура), и убирать дырку.
Про маразм согласна)) Спасибо большое за ответ, я пытаюсь научится Python самостоятельно, но это очень долго)) Но когда научусь- воспользуюсь вашим советом!

Ответить

Вернуться в «Общий - ПО»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя