Как сделать полигоны "бублик" или вычесть полиг. объекты?
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Как сделать полигоны "бублик" или вычесть полиг. объекты?
Доброго времени суток!
У меня вопрос - можно ли как-то в ArcMap вычесть из полигональных объектов одной темы - полигональные объекты другой темы?
Есть 2 темы - Большие круги и малые круги, с центром в одной точке и одинаковым полем ID. Мне нужно из большого круга вычесть малый по каждому одинаковому ID, и получить, таким образом, много полигонов типа "бублик" (малый круг должен давать пустоту в центре каждого такого полигона).
Наверное, тут и другие способы могут быть, например, сделать буфер от малого круга - присоединив требуемый радиус (равный разнице радиусов каждой пары). Но в функциях буфера ArcMap не нашла такой прямой возможности.
Не могли бы подсказать, как это можно сделать?
У меня вопрос - можно ли как-то в ArcMap вычесть из полигональных объектов одной темы - полигональные объекты другой темы?
Есть 2 темы - Большие круги и малые круги, с центром в одной точке и одинаковым полем ID. Мне нужно из большого круга вычесть малый по каждому одинаковому ID, и получить, таким образом, много полигонов типа "бублик" (малый круг должен давать пустоту в центре каждого такого полигона).
Наверное, тут и другие способы могут быть, например, сделать буфер от малого круга - присоединив требуемый радиус (равный разнице радиусов каждой пары). Но в функциях буфера ArcMap не нашла такой прямой возможности.
Не могли бы подсказать, как это можно сделать?
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как сделать полигоны "бублик" или вычесть полиг. объекты
Извиняюсь за беспокойство! Действительно, выход в построении буфера (Analysis Tools - Proximity - Buffer)
Не получалось сразу, поскольку нужно было установить в Side Type - "Outside only"
И, таким образом, я к малым кругам буфером присоединяю полем разность большого и малого кругов. Итогом - получаю нужные мне полигональные объекты с пустотой внутри.
То есть эту свою задачу я решила, но другим способом.
Но вообще, задача вычесть из полиг. объектов одной темы - полиг. объекты другой темы (по совпадающему полю ID) кажется нужной. Нет ли всё же какой-то прямой такой опции в ArcGIS?
Не получалось сразу, поскольку нужно было установить в Side Type - "Outside only"
И, таким образом, я к малым кругам буфером присоединяю полем разность большого и малого кругов. Итогом - получаю нужные мне полигональные объекты с пустотой внутри.
То есть эту свою задачу я решила, но другим способом.

-
- Гуру
- Сообщения: 3058
- Зарегистрирован: 19 май 2010, 19:44
- Репутация: 189
Re: Как сделать полигоны "бублик" или вычесть полиг. объекты
Сделать "бублик" можно...
см. тут
см. тут
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как сделать полигоны "бублик" или вычесть полиг. объекты
В моем случае это не подходит. Работа должна быть не ручная - это 2 шейп темы, с сотнями парных объектов (большие круги в одной и малые - в другой).Донецков писал(а):Сделать "бублик" можно...
см. тут
Я спрашивала об инструменте, который позволяет вычесть из полигонов одной темы - полигоны другой темы.
-
- Гуру
- Сообщения: 5355
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как сделать полигоны "бублик" или вычесть полиг. объекты
Через SQL можно сделать запрос для операции с векторными объектами? А более подробно, где там это искать?trir писал(а):SQL
А чего-то в самом ArcGIS попроще неужели нет... казалось бы - должно быть базовой операцией..

-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Как сделать полигоны "бублик" или вычесть полиг. объекты
Симметричная разность, что ли?Natalia Novoselova писал(а): Я спрашивала об инструменте, который позволяет вычесть из полигонов одной темы - полигоны другой темы.
Редактор материалов, модератор форума
-
- Гуру
- Сообщения: 5355
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Как сделать полигоны "бублик" или вычесть полиг. объекты
http://gis-lab.info/docs/postgis/manual ... #id2701704
OGC SPEC s2.1.1.1
ST_Buffer(geometry, double, [integer])
Возвращает геометрию, все точки которой находятся на меньшем или равном расстоянии, чем заданное, от заданной геометрии. Расчеты производятся в пространственной системе координат заданной геометрии. Опциональный третий параметр задает число сегментов, используемых для аппроксимации четверти окружности (по умолчанию -.
Также для MS SQL ServerOGC SPEC s2.1.1.3
ST_SymDifference(geometry A, geometry B)
Возвращает геометрию, которая представляет собой множество точек геометрий A и B, которые не пересекаются. Это называется симметричной разностью потому что: ST_SymDifference(A,B) = ST_SymDifference(B,A).
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как сделать полигоны "бублик" или вычесть полиг. объекты
Александр Мурый писал(а):Симметричная разность, что ли?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: Как сделать полигоны "бублик" или вычесть полиг. объекты
Спасибо, интересно узнать, что SQL работает с вектором, а не только с таблицами данных. Может быть, дальше это мне придется использовать.trir писал(а): Возвращает геометрию, все точки которой находятся на меньшем или равном расстоянии, чем заданное, от заданной геометрии. Расчеты производятся в пространственной системе координат заданной геометрии. Опциональный третий параметр задает число сегментов, используемых для аппроксимации четверти окружности (по умолчанию -.
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как сделать полигоны "бублик" или вычесть полиг. объекты
Всё же странно. Вот еще один инструмент - Erase (Analysis Tools - Extract) который, по идее, выполняет этот тип задач.
Но тоже нет в настройках поля по которому идет объединение в темы по вычитанию, в итоге - такая нужная функция не работает эффектино. Вообще даже не понимаю, как можно напрямую это использовать. Когда из каждого объекта нужно разное вычитать.
Ну то есть, только для единичного действия - из одного объекта вычесть один другой.
С большим числом объектов уже нельзя работать.
Странно, что не заложили функцию учета поля.
Но тоже нет в настройках поля по которому идет объединение в темы по вычитанию, в итоге - такая нужная функция не работает эффектино. Вообще даже не понимаю, как можно напрямую это использовать. Когда из каждого объекта нужно разное вычитать.
Ну то есть, только для единичного действия - из одного объекта вычесть один другой.
С большим числом объектов уже нельзя работать.

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

-
- Активный участник
- Сообщения: 163
- Зарегистрирован: 28 июн 2012, 01:02
- Репутация: 84
- Откуда: Vladivostok
Re: Как сделать полигоны "бублик" или вычесть полиг. объекты
ArcGIS дал целый ящик досок и болтов (Стирание (Erase), Выборка (Select)), а так же отвертку и пилу (ModelBuilder или Python). Вам же остается сделать из них именно такой табурет, какой нужен именно вам.
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как сделать полигоны "бублик" или вычесть полиг. объекты
То есть уже готового табурета нет такого?doujin писал(а):ArcGIS дал целый ящик досок и болтов (Стирание (Erase), Выборка (Select)), а так же отвертку и пилу (ModelBuilder или Python). Вам же остается сделать из них именно такой табурет, какой нужен именно вам.
Пока вами перечисленное это новое, еще не пройденное, но я буду стараться к этому продвигаться. В том числе и дальше задачи будут сложнее.
Собственно, и эта - лишь один этап геометрического построения множества полигонов.
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как сделать полигоны "бублик" или вычесть полиг. объекты
Но всё же, Erace например, в этом инструменте не зааложен выбор поля по которому проводить соединение объектов в пары для стирания. В чем и невозможность его использования для моей задачи.doujin писал(а):ArcGIS дал целый ящик досок и болтов - Стирание (Erase)
Означает ли ваш ответ, что при помощи ModelBuilder или Python можно доработать имеющийся инструмент ArcMap?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя