GIS-LAB

Географические информационные системы и дистанционное зондирование

Получение основных пространственных характеристик объектов в Arcview GIS

Как расчитать длины, площади и т.п.

Обсудить в форуме Комментариев — 1

В статье рассматривается получение нескольких основных пространственных характеристик объектов без использования дополнительных расширений (extensions), с использованием стандартных возможностей пакета Arcview GIS.

В данной статье рассматриваются следующие типы объектов и соответствующие им пространственные характеристики:

Тип объекта

Пространственная характеристика

Получение

Точка

Координата X
Координата Y

перейти

Линия

Длина

перейти

Полигон

Длина (периметр)
Площадь
Центр (центроид)

перейти

Те, кто пользовался или пользуется Mapinfo могут с недоумением отметить отсутствие в Arcview метода быстрого просмотра площади объекта или координат точки. Посмотреть основные пространственные характеристики объекта просто выбрав его в Arcview, ArcGIS в отличие от Mapinfo невозможно. Однако, несмотря на кажующееся неудобство, в этом есть своя логика.

Дело в том, что визуальная оценка параметров объекта, является, по большому счету, довольно бессмысленной задачей. Более оптимально было бы заносить пространственные характеристики объектов непосредственно в атрибутивную таблицу. При желании можно также организовать постоянный мониторинг (обновление) пространственных характеристик объектов, так, как это делает, например, Arcinfo Workstation при работе со своим форматом. Это имеет смысл если вы выполняете серию пространственных операций изменяющих пространственные характеристики объектов и вам нужно следить за их изменениями.

Пространственные характеристики объетов о которых идет речь - неотъемлимая часть их геометрии. В Arcview, ArcGIS получить геометрию объекта можно через специальное поле в таблице - Shape.

При расчете пространственной характеристики важно помнить, что единицы измерения, по умолчанию, будут соответствовать исходным единицам измерения ваших данных. То есть:

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

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

Итак, для занесения пространственной характеристики объекта (объектов), необходимо:

1. Открыть атрибутивную таблицу темы. Theme\Table... или выбрав инструмент Table на панели управления

2. Начать редактирование Table\Start Editing

3. Создать поле(поля) нужного формата: целочисленного или с плавающей точкой (в зависимости от типа пространственной характеристики). Edit\Add Field...

3. Сделать активным созданное поле (колонку) щелкнув по его заголовку.

4. Вызвать инструмент ввода значений всем записям в таблице. Field\Calculate или выбрав инструмент Calculate на панели управления

5. Ввести нужное выражение-команду, которая обратится за пространственными характеристиками объекта к полю shape, содержащему геометрию объекта.

6. После окончания расчетов, не забудьте сохранить изменения сделанные в таблице. Table\Stop Editing

1. Полигональный объект

Площадь (Area)

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

Area = [Shape].returnarea

Где Area - название поля, куда будет записано значение площади, название поля может быть любым.

Повторимся, что этот запрос неудобно использовать при работе со спроектированными видами, так как он (запрос) будет возвращать площадь, не учитывая проекцию вида (см. статью "Вычисление площади"). Однако если вы работаете с вектором уже находящимся в проекции, то это самый быстрый способ расчитать площади для полигонов.

Для получения спроектированного значения в метрах используя спроектированные на лету данные, исходно находящиеся в географической системе координат, необходимо модифицировать выражение следующим образом:

Area = [Shape].returnprojected(av.Finddoc("View1").Getprojection).returnarea

где Area - название поля, где будет размещен результат вычисления (название поля может быть любым), а View1 - название вида, в котором содержатся ваши данные. Название вида можно определить по его заголовку.

Периметр

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

Perimeter = [Shape].returnlength

Выражение для спроектированного вида (данные в географической системе координат, проекция вида - установлена):

Perimeter = [Shape].returnprojected(av.Finddoc("View1").Getprojection).returnlength

где Perimeter - название поля, где будет размещен результат вычисления (название поля может быть любым), а View1 - название вида, в котором содержатся ваши данные. Название вида можно определить по его заголовку.

Центр (центроид)

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

CenterX = [Shape].ReturnCenter.getx
CenterY = [Shape].ReturnCenter.gety

Выражение для спроектированного вида (данные в географической системе координат, проекция вида - установлена):

CenterX = [Shape].returnprojected(av.Finddoc("View1").Getprojection).ReturnCenter.getx
CenterY = [Shape].returnprojected(av.Finddoc("View1").Getprojection).ReturnCenter.gety

где Perimeter - название поля, где будет размещен результат вычисления (название поля может быть любым), а View1 - название вида, в котором содержатся ваши данные. Название вида можно определить по его заголовку.

2. Линейный объект

Длина

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

Length = [Shape].returnlength

Выражение для спроектированного вида (данные в географической системе координат, проекция вида - установлена):

Length = [Shape].returnprojected(av.Finddoc("View1").Getprojection).returnlength

где Length - название поля, где будет размещен результат вычисления (название поля может быть любым), а View1 - название вида, в котором содержатся ваши данные. Название вида можно определить по его заголовку.

3. Точечный объект

Для получения координат точек, нужно создать 2 поля и ввести 2 выражения.

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

Long = [Shape].getx
Lat = [Shape].gety

Выражение для спроектированного вида (данные в географической системе координат, проекция вида - установлена):

Long = [Shape].returnprojected(av.Finddoc("View1").Getprojection).getx
Lat = [Shape].returnprojected(av.Finddoc("View1").Getprojection).gety

где Long, Lat - название полей, где будет размещен результат вычисления (название поля может быть любым), а View1 - название вида, в котором содержатся ваши данные. Название вида можно определить по его заголовку.

Эти выражения являются реализацией запросов к пространственным данным на языке Avenue через инструмент Calculate. С помощью этого инструмента и модифицированных запросов можно получать и другие пространственные характеристики объекта(ов).

Обсудить в форуме Комментариев — 1

Последнее обновление: November 15 2010

Дата создания: 06.06.2002
Автор(ы): Максим Дубинин


(Геокруг)

Если Вы обнаружили на сайте ошибку, выберите фрагмент текста и нажмите Ctrl+Enter