Как посчитать с помощью ArcGIS?

0 голосов
спросил 13 Май, 09 от -3A- (5,220 баллов) в категории Программные продукты Esri
Всем доброго времени суток!

Есть база со слоем кварталов и слоем зданий.
Нужно выполнить следующую задачу: для каждого квартала посчитать количество лежащих в нем зданий.
И записать все это в таблицу.
Причем группировка в подсчете будет вестись по этажности.
Здания с кварталами семантически никак не связаны, выборку зданий нужно делать по геометрии.

Как это можно сделать встроенными средствами ArcGIS (или ArcToolbox)?
Причем желательно, чтобы это можно было автоматизировать, так как кварталов достаточно много.

13 Ответы

0 голосов
ответил 13 Май, 09 от geologic (39,860 баллов)
Это делается автоматически, методом Spatial Join - соединением слоев (таблиц) по пространственному признаку. Это подробно описано в geoFAQ вот тут, точнее, две странички вниз пролистните.

Из критериев подойдет "Completely Within", или "have their center in". Если волнуют более сложные сочетания, придется физически делать пересечение слоев Intersect.
0 голосов
ответил 13 Май, 09 от -3A- (5,220 баллов)
большое пасибо
связать кварталы и здания в них получилось :)

но возникает другой вопрос: а как теперь сгруппировать здания внутри кварталов по этажности?
(в данном случае этажность - это один из атрибутов здания)

мне в данном случае не нужна перманентная связь кварталов и зданий, мне нужно получить список количеств зданий в кварталах, сгруппированный по этажности

то есть что-то типа типа:
квартал1 - 1эт - 2, 2эт - 5, 16эт - 10
квартал2 - 5эт - 5, 10эт - 1
квартал3 - ...
...
0 голосов
ответил 13 Май, 09 от -3A- (5,220 баллов)
оказывается, даже нет совсем так
мне нужно немного проще :)

нужно для каждого квартала получить следующие данные:

кол-во этажей (от-до)  количество зданий
диапазон следующий: 2-4, 5, 6-8, 9-10 и больше 10

это все нужно будет прописать в настройки отображения для кварталов
0 голосов
ответил 13 Май, 09 от dsavitskiy (10,720 баллов)
Toolbox->Analysis Tools->Statistics->Frequency

Справка к самой утилите подскажет как при суммировании выполнить группировку по полю.
0 голосов
ответил 14 Май, 09 от -3A- (5,220 баллов)
нет, это не то, увы

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

а в Частоте вообще возвращается просто количество зданий определенной этажности, без привязки к кварталам

хорошо, попробуем выполнить задачу по другому: можно ли в ArcGIS делать запросы SQL (в том числе и update)?
и что для этого нужно сделать? написать модуль на VBA или еще как-то?

потому что через SQL моя задача решается довольно просто
а вот решить ее через встроенные средства как-то не получается

как обычно: надо все и срочно, а ArcGIS, мягко говоря, не наша специальность. поэтому и задаю такие тупые вопросы
впрочем, это уже offtop
0 голосов
ответил 14 Май, 09 от geologic (39,860 баллов)
А зачем это делать в ArcGIS? Подготовленные таблицы присоединяете к Аксесс, и запрашиваете сколько надо. SQL в Arc по традиции упрощенный донельзя, чисто SELECT WHERE. Гляньте хелп, там все расписано про SQL Query, начиная, например, отсюда.

Вам нужна фраза GROUP BY и к ней, как водится, MAX, MIN, и COUNT - ну вы похоже, в курсе. Эти кляузы в ARC отсутствуют, но как-то, говорят, их можно к внешним БД направить... Может быть, Denis подскажет ;) Мне всегда лень в этом разбираться было, проще во внешней среде тогда уж и прокрутить все запросы.
    
    
0 голосов
ответил 14 Май, 09 от -3A- (5,220 баллов)
да мы так и сделали
просто неудобно лазить туда-сюда по разным инструментам

тем более людям, которые понятия не имеют про Access и SQL
(это я не про себя, а про тех, кто будет делать анализ данных,
мы для них просто предполагаемые сценарии прорабатываем)

вот и хотелось бы все из ArcGIS делать
в принципе, я это решил

написал на VBA небольшой модуль, который все необходимое делает
для меня возни, конечно, больше, чем просто в Access запросы написать
зато потом пользователь сможет одним нажатием кнопки нужные поля обновлять :)

0 голосов
ответил 14 Май, 09 от dsavitskiy (10,720 баллов)
нет, это не то, увы ...я могу получить общее количество зданий в квартале, без разбивки по этажностиа в Частоте вообще возвращается просто количество зданий определенной этажности, без привязки к кварталам .... можно ли в ArcGIS делать запросы SQL (в том числе и update)....

Вот как обычно: не получилось. Что делали, как делали, что не получилось - только угадывать.
В Frequency специально есть параметр "Frequency Fileds", потому и предложил этот инструмент. В терминах SQL он аналогичен оператору Group By. признайтесь, справку читать не стали? image
Также нигде не указано, был все же сделан Spatial Join, как ранее подсказывали или нет....
Прямой SQL-Update в ArcGIS вы не сделаете (да и зачем, если это больше задача БД?). Но если хочется именно средствами аркгис выполнить ту же логическую операцию, то можно придумывать варинт с "Field Calculator"+ там уже скрипт.
0 голосов
ответил 14 Май, 09 от dsavitskiy (10,720 баллов)
P.S. специально сейчас проверил на своих данных - получается тот результат, что вы спрашиваете.
0 голосов
ответил 15 Май, 09 от -3A- (5,220 баллов)
а у меня не получается :(

Spatial Join я само собой сделал
без него группировка по кварталам вообще невозможна

справку само собой прочитал

как я уже писал, с данным инструментом у меня получается только общая сумма этажей по кварталам
а это совсем не то, что мне нужно

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

Table (Дома)
Level - этажность дома (1, 2, и т.д.)
Block - квартал, в котором этот дом расположен

остальные поля опущены, так как к данной задаче не имеют отношения

запускаю статистику
в поле(я) частоты выбираю Block
в поле(я) для суммирования выбираю Levels

в результате получаю ранее уже описанный результат
что в общем то логично

вроде бы по логике вещей в поле(я) частоты надо добавить еще и Levels, чтобы группировать еще и по этажности
но в этом случае вообще ничего не считает: выдается ошибка System error(0)

или я все неправильно делаю?

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