Как сделать полигоны "бублик" или вычесть полиг. объекты?

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

Как сделать полигоны "бублик" или вычесть полиг. объекты?

Сообщение Natalia Novoselova » 28 окт 2013, 23:47

Доброго времени суток!
У меня вопрос - можно ли как-то в ArcMap вычесть из полигональных объектов одной темы - полигональные объекты другой темы?

Есть 2 темы - Большие круги и малые круги, с центром в одной точке и одинаковым полем ID. Мне нужно из большого круга вычесть малый по каждому одинаковому ID, и получить, таким образом, много полигонов типа "бублик" (малый круг должен давать пустоту в центре каждого такого полигона).

Наверное, тут и другие способы могут быть, например, сделать буфер от малого круга - присоединив требуемый радиус (равный разнице радиусов каждой пары). Но в функциях буфера ArcMap не нашла такой прямой возможности.

Не могли бы подсказать, как это можно сделать?

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

Re: Как сделать полигоны "бублик" или вычесть полиг. объекты

Сообщение Natalia Novoselova » 29 окт 2013, 01:12

Извиняюсь за беспокойство! Действительно, выход в построении буфера (Analysis Tools - Proximity - Buffer)
Не получалось сразу, поскольку нужно было установить в Side Type - "Outside only"
И, таким образом, я к малым кругам буфером присоединяю полем разность большого и малого кругов. Итогом - получаю нужные мне полигональные объекты с пустотой внутри.

То есть эту свою задачу я решила, но другим способом.



:?: Но вообще, задача вычесть из полиг. объектов одной темы - полиг. объекты другой темы (по совпадающему полю ID) кажется нужной. Нет ли всё же какой-то прямой такой опции в ArcGIS?

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Как сделать полигоны "бублик" или вычесть полиг. объекты

Сообщение Донецков » 29 окт 2013, 06:40

Сделать "бублик" можно...
см. тут

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

Re: Как сделать полигоны "бублик" или вычесть полиг. объекты

Сообщение Natalia Novoselova » 29 окт 2013, 12:45

Донецков писал(а):Сделать "бублик" можно...
см. тут
В моем случае это не подходит. Работа должна быть не ручная - это 2 шейп темы, с сотнями парных объектов (большие круги в одной и малые - в другой).

Я спрашивала об инструменте, который позволяет вычесть из полигонов одной темы - полигоны другой темы.

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

Re: Как сделать полигоны "бублик" или вычесть полиг. объекты

Сообщение trir » 29 окт 2013, 13:41

SQL

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

Re: Как сделать полигоны "бублик" или вычесть полиг. объекты

Сообщение Natalia Novoselova » 29 окт 2013, 14:00

trir писал(а):SQL
Через SQL можно сделать запрос для операции с векторными объектами? А более подробно, где там это искать?

А чего-то в самом ArcGIS попроще неужели нет... казалось бы - должно быть базовой операцией.. :roll:

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

Re: Как сделать полигоны "бублик" или вычесть полиг. объекты

Сообщение Александр Мурый » 29 окт 2013, 14:23

Natalia Novoselova писал(а): Я спрашивала об инструменте, который позволяет вычесть из полигонов одной темы - полигоны другой темы.
Симметричная разность, что ли?
Редактор материалов, модератор форума

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

Re: Как сделать полигоны "бублик" или вычесть полиг. объекты

Сообщение trir » 29 окт 2013, 15:53

http://gis-lab.info/docs/postgis/manual ... #id2701704
OGC SPEC s2.1.1.1
ST_Buffer(geometry, double, [integer])

Возвращает геометрию, все точки которой находятся на меньшем или равном расстоянии, чем заданное, от заданной геометрии. Расчеты производятся в пространственной системе координат заданной геометрии. Опциональный третий параметр задает число сегментов, используемых для аппроксимации четверти окружности (по умолчанию - 8).
OGC SPEC s2.1.1.3
ST_SymDifference(geometry A, geometry B)

Возвращает геометрию, которая представляет собой множество точек геометрий A и B, которые не пересекаются. Это называется симметричной разностью потому что: ST_SymDifference(A,B) = ST_SymDifference(B,A).
Также для MS SQL Server

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

Re: Как сделать полигоны "бублик" или вычесть полиг. объекты

Сообщение Natalia Novoselova » 29 окт 2013, 17:44

Александр Мурый писал(а):
Natalia Novoselova писал(а): Я спрашивала об инструменте, который позволяет вычесть из полигонов одной темы - полигоны другой темы.
Симметричная разность, что ли?

Близко по сути, но не то! Похоже они вложили это в Buffer и больше нигде, то есть напрямую так нельзя сделать.
Потому как нужно вычетать из объекта с ID=1 темы А - объект с ID=1 темы Б. И так для множества ID
Для этого нужно указывать Field по которому производить соединение пар для вычитания ( в Симметричной разности не заложено такое поле, похоже, он корректирующий полигон воспринимает по самому большому объекту полигональной темы или еще как-то)

В инстр. Buffer я это решила так, что для каждого объекта малого круга - задала в отдельном поле разницу радиусов большого и малого круга, то есть делала всё в одной теме.
Последний раз редактировалось Natalia Novoselova 29 окт 2013, 17:47, всего редактировалось 1 раз.

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

Re: Как сделать полигоны "бублик" или вычесть полиг. объекты

Сообщение Natalia Novoselova » 29 окт 2013, 17:46

trir писал(а): Возвращает геометрию, все точки которой находятся на меньшем или равном расстоянии, чем заданное, от заданной геометрии. Расчеты производятся в пространственной системе координат заданной геометрии. Опциональный третий параметр задает число сегментов, используемых для аппроксимации четверти окружности (по умолчанию - 8).
Спасибо, интересно узнать, что SQL работает с вектором, а не только с таблицами данных. Может быть, дальше это мне придется использовать.

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

Re: Как сделать полигоны "бублик" или вычесть полиг. объекты

Сообщение Natalia Novoselova » 29 окт 2013, 17:46

dubl

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

Re: Как сделать полигоны "бублик" или вычесть полиг. объекты

Сообщение Natalia Novoselova » 29 окт 2013, 19:53

Всё же странно. Вот еще один инструмент - Erase (Analysis Tools - Extract) который, по идее, выполняет этот тип задач.

Но тоже нет в настройках поля по которому идет объединение в темы по вычитанию, в итоге - такая нужная функция не работает эффектино. Вообще даже не понимаю, как можно напрямую это использовать. Когда из каждого объекта нужно разное вычитать.

Ну то есть, только для единичного действия - из одного объекта вычесть один другой.
С большим числом объектов уже нельзя работать. :(

Странно, что не заложили функцию учета поля. :roll:

doujin
Активный участник
Сообщения: 163
Зарегистрирован: 28 июн 2012, 01:02
Репутация: 84
Откуда: Vladivostok

Re: Как сделать полигоны "бублик" или вычесть полиг. объекты

Сообщение doujin » 30 окт 2013, 00:53

ArcGIS дал целый ящик досок и болтов (Стирание (Erase), Выборка (Select)), а так же отвертку и пилу (ModelBuilder или Python). Вам же остается сделать из них именно такой табурет, какой нужен именно вам.

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

Re: Как сделать полигоны "бублик" или вычесть полиг. объекты

Сообщение Natalia Novoselova » 30 окт 2013, 03:10

doujin писал(а):ArcGIS дал целый ящик досок и болтов (Стирание (Erase), Выборка (Select)), а так же отвертку и пилу (ModelBuilder или Python). Вам же остается сделать из них именно такой табурет, какой нужен именно вам.
То есть уже готового табурета нет такого?
Пока вами перечисленное это новое, еще не пройденное, но я буду стараться к этому продвигаться. В том числе и дальше задачи будут сложнее.

Собственно, и эта - лишь один этап геометрического построения множества полигонов.

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

Re: Как сделать полигоны "бублик" или вычесть полиг. объекты

Сообщение Natalia Novoselova » 30 окт 2013, 03:14

doujin писал(а):ArcGIS дал целый ящик досок и болтов - Стирание (Erase)
Но всё же, Erace например, в этом инструменте не зааложен выбор поля по которому проводить соединение объектов в пары для стирания. В чем и невозможность его использования для моей задачи.

Означает ли ваш ответ, что при помощи ModelBuilder или Python можно доработать имеющийся инструмент ArcMap?

Ответить

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

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

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