GIS-LAB

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

Конвертирование полигональных shape-файлов в покрытия Arcinfo с исправлением ошибок топологии

Конвертируем shape в покрытия Arcinfo

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

При создании вручную shape-файлов с прилегающими друг к другу полигонами (например, ручное дешифрирование инструментами типа Stream Digitizing с применением операций Subtract и Union) часто возникают топологические ошибки - пересечение полигонов. Они могут влиять на отображение слоя (внезапная "заливка" всего дисплея в Arcview GIS); вызывать ошибки при экспорте слоя в векторную графику и при выводе на печать. Для исправления этих ошибок можно использовать следующие операции в ArcINFO Workstation любой версии.

1. Конвертирование без атрибутов

Конвертирование полигональных shape-файлов в покрытия Arcinfo без сохранения атрибутивной информации. В этом случае, вся атрибутивная информация, соответствующая полигонам в шейп-файле будет потеряна. Данный подход имеет смысл, если сохранение атрибутивной информации не требуется.

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

shapearc inputshape outcover

2. Построение полигональной топологии

build outcover poly

Если появляется сообщение об ошибке, то необходимо проивести чистку топологии:

clean outcover # 0.0000000000001 0.0000000000000001 poly 

Оператор # означает пропуск параметра и, в данном случае, проведение операции над самим покрытием. Если нужно сохранить outcover, а результат чистки положить в новое покрытие - можно вместо него задать [путь-имя] нового покрытия.

clean outcover outcover2 0.0000000000001 0.0000000000000001 poly 

2. Конвертирование с атрибутами

Конвертирование полигональных shape-файлов в покрытия Arcinfo с сохранением атрибутивной информации. Данная операция применяется для т.н. "чистки" топологии, удаления пересекающихся частей полигонов, преобразования пустых замкнутых пространств между ними в полигоны и т.д. Идея заключается в том, чтобы использовать полигональное покрытие Arcinfo которое не допускает наличие подобного рода топологических ошибок.

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

Item - название для класса регионов, условное имя, может быть любым. Это же название должно использоваться в шаге 3.

shapearc inputshape tempcover item

2. Чистка региональной топологии, пересекающией регионы разбиваются на части, атрибутика сохраняется (см. примечание к операции 2 выше):

clean tempcover # 0.000000000001 0.00000000001 poly 

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

3. Переход от региональной к полигональной топологии
Осуществляется с помощью команды regionpoly, учитывающей пересечения.

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

regionpoly tempcover outcover item itemtab

Близкие аналоги этих операций имеются в ArcToolbox.

4. Удаление временного покрытия

Если результат вас устраивает, можно удалить временное покрытие:

kill tempcover 

Дополнительную информацию о команде regionpoly можно посмотреть в справке:

help

Примечание: В процессе работы возможны сообщения об ошибках:

  1. Directory pathname too long - полный путь к рабочему покрытию слишком длинный. Общий путь не должен превышать 79 символов. Решение - перенесите покрытие временно в папку, путь к которой покороче.
  2. AML ERROR - Invalid expression on &IF directive\\ line 202 of file с:\gis\arcgis\arcexe9x\atool\arc\regionpoly.aml - забыли указать имя таблицы для сохранения непланарных полигонов (itemtab). Укажите и перезапустите regionpoly.

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

Последнее обновление: September 09 2021

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