Есть ли в ArcGIS 10 инструмент «Совокупные точки»?


10

Мне нужно провести некоторый анализ Getis-Ord, но сначала мне нужно собрать свои баллы. Я знаю о XToolsPro, но функция совокупных точек заблокирована, и вы должны приобрести лицензию, чтобы использовать ее. Мне интересно, есть ли бесплатный инструмент или обходной путь в ArcMap, который мне не хватает для агрегирования точек.

Некоторый контекст: у меня более 8000 точек, многие из которых имеют разные атрибуты, но могут иметь одинаковое (приблизительное) геопространственное местоположение. Для этого анализа мне просто нужно агрегировать любые точки, перекрывающие друг друга, на основе поля, содержащего числовое значение для суммирования. Например:

Point A overlaps Point B and Point C.  
Point A field value = 1.4
Point B = 2.4, and 
Point C = 5.2.  

Совокупность точек A, B и C будет возвращать точку D со значением 9,0

Я надеюсь это имеет смысл. Может быть, я мог бы обойтись без использования чего-то действительно базового, но просто еще не собрал это воедино. Будем благодарны за любую помощь, которую вы можете предложить!

Ответы:


13

ArcGIS v10 сделает это. Сначала запустите «Добавить координаты XY». Затем запустите Dissolve, выберите Point_X и Point_Y в качестве полей растворения, добавьте поле статистики Sum. Я только что проверил это на перекрывающихся точках. Выход имеет одну точку в каждом месте наложения, в то время как числовое поле суммируется для этого места.


+1 Приятно слышать, что через 10 лет после удаления этой функциональности из их программного обеспечения, ESRI вернул ее обратно. (Он существовал в ArcView 2/3 как часть операции суммирования таблиц.)
whuber

Спасибо @klewis! Хотя одна вещь - точки не совсем перекрывают друг друга (то есть координаты XY близки, но не равны друг другу), но мне просто нужно объединить точки, которые находятся в пределах 100 футов друг от друга. Не похоже, что функция растворения является способом растворения в пределах определенного расстояния. Я предполагаю тогда, что мне нужно было бы сделать некоторую очистку, используя некоторый анализ близости?
MyClone

2
Это бесплатный инструмент, который выполняет кластеризацию Kmeans, наряду со многими другими инструментами. Ему нужна ArcGIS 10, но он работает с лицензией уровня ArcView. Я не пробовал программное обеспечение, но у него есть инструменты, которые доступны только с лицензией ArcInfo. Вы должны установить GME, R и Statconn. spatialecology.com/gme/kmeans.htm Кстати, у Arc 10.1 будет kmeans clusering. forums.arcgis.com/threads/20288-fuzzy-c-means-cluster-analysis
klewis

6

Есть много способов сделать это. Один простой эффективный состоит из:

  1. Вычислить координаты x и y как поля в таблице атрибутов.

  2. Объединить эти координаты в идентификатор.

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

  4. Создайте тему точечного события в сводной таблице, используя (x, y) для координат.

редактировать

В комментарии @myClone пишет

точки точно не перекрывают друг друга (то есть координаты xy близки, но не равны друг другу), но мне просто нужно объединить точки, которые находятся в пределах 100 футов друг от друга.

В общем, нет единственного решения. Рассмотрим, например, три точки на линии, каждая из которых отделена на 75 футов от соседа:

*     *     *    
a     b     c

Вы объединяете все три, несмотря на расстояние (a, c)> 100? Если нет, какое решение вы выберете: (a, b), (c) или (a), (b, c)?

Два подхода , дающие разные ответы в таких случаях:

(i) Буферизуйте все точки на 50 = 100/2 фута, требуя объединения буферов. Пространственно объедините буферы обратно к точкам: это наделяет каждую точку атрибутом объединенного буфера, содержащего ее. Это достигает цели шага (2) в моем исходном решении. Действуйте оттуда точно так же, как и раньше. В примере это будет кластеризовать a, b и c вместе.

(ii) Создайте сетку размером 100 на 100 футов и определите точки по их ячейкам. Для этого не требуется рисовать сетку или даже сохранять ее элементы, потому что ячейка, в которой лежит (x, y), определяется упорядоченной парой (Floor ((x-x0) / 100), Floor ((y-y0) ) / 100)) где (x0, y0) - любой источник сетки, который вам нравится. Объедините эти координаты, чтобы идентифицировать ячейку, снова достигнув шага (2) в моем исходном решении. Продолжайте, как и раньше.

Очевидно, что метод (ii) не совсем агрегирует все пары точек в пределах 100 футов, потому что он способен агрегировать пары до 100 * Sqrt (2) = 141 футов друг от друга. Вы можете компенсировать это, уменьшив размер сетки до 100 / Sqrt (2) = 71 фут, но тогда некоторые пары в пределах 100 футов не будут агрегированы. Выбрать свой яд.

Обратите внимание, что решения в методе (ii) зависят от происхождения и расстояния сетки. Используя 100-футовую сетку, он даст либо {(a, b), (c)}, либо {(a), (b, c)}, в зависимости от источника. Используя сетку в 71 фут, он будет держать все три точки отдельно, независимо от происхождения.

Есть и другие методы , которые я собираю в группы:

(iii) Использовать статистическую процедуру кластеризации , такую ​​как k-средних или иерархическая кластеризация, чтобы сделать эту работу. Об этом есть много полезной информации на нашем родственном сайте stats @ SE . Как правило, программное обеспечение статистики принимает (id, x, y) тройки в качестве входных и выходных данных (или их можно убедить вывести) таблицу (id, кластер) троек. Присоедините эту выходную таблицу обратно к таблице атрибутов точек, еще раз вернув нас к шагу (2) в исходном решении и т. Д.

(iv) Некоторые геостатистические программы , такие как GSLib , включают в себя различные процедуры «декластеризации», предназначенные для подготовки данных для вариографии и кригинга. Их выходные данные обычно могут быть импортированы обратно в программное обеспечение ГИС и преобразованы в точечный слой.

Методы, описанные до сих пор, дают вам полный контроль над тем, что происходит, позволяя вам выполнять свою работу хорошо и профессионально (без необходимости перепроектировать свои программные инструменты).

Наконец, стоит отметить, что

(v) последние копии ArcGIS имеют инструмент для декластеризации . Насколько я помню, неясно, как это работает; Вы должны прочитать основной код, чтобы выяснить, что происходит.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.