Страница 1 из 1

Выделение полигонов по точечному шейпу

Добавлено: 22 авг 2011, 13:02
Воронин С.В.
Господа!
Этот вопрос уже поднимался, но я не нашел эту тему.
Вопрос. Как выделить только те полигоны в полигональном шейпе, в которых есть точки точечного шейпа?
И более сложная задача - Как выделить только те полигоны в полигональном шейпе, в которых есть более чем 3 точки точечного шейпа?

Re: Выделение полигонов по точечному шейпу

Добавлено: 23 авг 2011, 07:34
novia
Первая задача:
Меню Выбор (select) - по местоположению (select by location)
Составить запрос к слою полигонов, выбрать те, которые пересекаются с точками в точечном слое.

Вторая задача: выполнить пересечение полигонального слоя с точечным с помощью инструмента геообработки пересечение(intersect) из набора анализ (analysis) - наложение (overlay). После этого запустить инструмент статистики (не помню точное название, подсмотрю отредактирую сообщение), в котором указать в качестве уникального номера элемента статистики - objectid из полигонального слоя(появится в таблице точек после пересечения), а в качестве того, что статистика будет считать - количество записей с таким id. В итоге получится таблица с id полигонов и количеством точек в них. Можно соединить ее с исходным полигональным слоем и отобрать необходимые, например с помощью определяющего запроса, или с помощью выбора по атрибутам.

[Сообщение с мобильного устройства] Изображение

Re: Выделение полигонов по точечному шейпу

Добавлено: 25 авг 2011, 06:26
Воронин С.В.
Для novia.

Первая задача прекрасно получается.

Со второй проблема.
При пересечении содается новый точечный слой, который сохраняет атрибуты обоих слоев.
Но такого атрибута как "objectid" нет.
Появился атрибут FID_***, в котором есть номера элементов. Но не могу выполнить по нему необходимую статистику.

Re: Выделение полигонов по точечному шейпу

Добавлено: 26 авг 2011, 02:51
novia
До настольной системы доберусь завтра-послезавтра.
Если возможно, поделитесь фрагментом данных (можно ссылкой в личку), либо наборами данных без объектов(скопировать классы/шейпы, запустить инструмент "удалить строки"(delete rows) соберу модель для model builder 10.0 и потом алгоритм сюда тоже выложу.

[Сообщение с мобильного устройства] Изображение

Re: Выделение полигонов по точечному шейпу

Добавлено: 26 авг 2011, 09:54
Воронин С.В.
Для novia.

Отправил архив в личку. Не знаю дошло ли?

Re: Выделение полигонов по точечному шейпу

Добавлено: 27 авг 2011, 06:43
novia
Данные ушли в личку, а потому образец для запуска не публикуется. От данных модель не зависит, любые полигоны с любыми точками можно пересекать.

В приложении инструмент, который может считать, сколько точек попало на каждый полигон, а затем выбирать те, полигоны, в которых точек больше либо равно/больше/меньше/ и т.п. заданного количества.

У инструмента 4 параметра: Полигоны, Точки, SQL запрос к количеству точек в полигоне, выходной класс полигональных объектов.

з.ы. инструмент сначала создает в папке c:\temp служебные файлы: копия полигонов, копия точек, чтобы не переделывать имена полей при подсчете статистики, также он создаст их пересечение, таблицу статистики, полигоны с прицепленным полем количества точек. После того, как модель пачкает диск, она "прибирается" за собой.

з.з.ы. кроме исходных файлов (не измененных совсем), и готового класса полигональных объектов модель после себя ничего не оставляет = да здравствует пакетная обработка (С.В. - вам будет полезно, так как районы "разбросаны" по папкам с нерегулярными именами и будет хорошо один раз эти пути указать и запустить шарманку).

прилагаются версии для 10.0 и 9.3 (не тестировал, кто будет запускать, напишите, если не работает)

Re: Выделение полигонов по точечному шейпу

Добавлено: 02 сен 2011, 09:27
Воронин С.В.
Для novia.

Антон, извените, но инструмент Select_Poly_by_Points_93, у меня не встал.
Как его встроить?

Воронин.

Re: Выделение полигонов по точечному шейпу

Добавлено: 04 сен 2011, 12:59
novia
Какая у вас ОС? Может путь к инструментам помер... у меня Win 7 x64

Вопрос для 5-ти других пользователей скачавших тулбокс (всего скачиваний для 9.3 - 6). У вас набор инструментов работает?

Re: Выделение полигонов по точечному шейпу

Добавлено: 04 сен 2011, 13:26
Slinger
Скачал версию для 9.3, глянул, вне зависимости от SQL условий выдаёт ошибку:

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

ERROR 000210: Cannot create output C:\Temp\Polygons.shp
Failed to execute (Select (2)).
End Time: Sun Sep 04 14:24:48 2011 (Elapsed Time: 0.00 seconds)
Failed to execute (SelectPolygonsbyPoints).
End Time: Sun Sep 04 14:24:48 2011 (Elapsed Time: 1.00 seconds)
Пример был корректный. Был и слой зданий (полигоны) и подписи зданий (точечные объекты на зданиях)

UPD

Поторопился я с ответом. Надо, чтобы была папка Temp в корне диска C:\ создана, тогда операция происходит нормально. Сам инструмент создавать папку не умеет, судя по всему. С остальным нареканий нет.

Re: Выделение полигонов по точечному шейпу

Добавлено: 05 сен 2011, 05:33
novia
Arcgis действительно сам не умеет создавать папки без дополнительного программирования средствами python.

Спасибо, Slinger, что проверили работоспособность, очень не хотелось только под эту задачу сносить 10.0 и ставить 9-ку.

[Сообщение с мобильного устройства] Изображение

Re: Выделение полигонов по точечному шейпу

Добавлено: 23 сен 2011, 13:46
novia
Примечание к наборам инструментов. Инструменты запускаются только на уровне лицензии ArcInfo.