|
Скрипты для подсчёта площадей полигонов в квадратных метрах в проекции Geographic.
Коллекция расширений для ArcView.
Набор *.sml файлов для перепроецирования покрытий ArcInfo.
Программа распознавания цветов MagicMap.
Программа для копирования пути Path2Clipboard.
Алгоритм генерализации и удаления узких перемычек.
Алгоритм автоматического удаления чёрных полей по границе растрового изображения.
|
Алгоритм генерализации и удаления узких перемычек.
В результате работ по выделению территорий с заданными свойствами зачастую получаются полигоны с сильно изрезанными границами и узкими перемычками. Примером может служить задача выделения участков земной поверхности, удовлетворяющих следующим требованиям:
- Это должен быть лес. Густой и высокий.
- Лес должен находиться на расстоянии не менее 500 метров от ближайшего элемента антропогенной инфраструктуры (дороги, трубопровода, населённого пункта и т. п.).
- Лес должен находиться на расстоянии не более 5 километров от любого водоёма (река, ручей, озеро и т. п.).
Все исходные объекты могут быть найдены на топографических картах.
После выделения таких участков результат иногда необходимо несколько генерализовать — огрубить, сгладить границы полученных полигонов и удалить узкие перемычки, соединяющие соседние массивы, поскольку такие участки имеют наименьшее отношение площадь/периметр, а значит испытывают более сильное воздействие со стороны близлежащих территорий и, соответственно, не могут поддерживать весь набор свойств, присущий крупным массивам.
Для генерализации и удаления узких, червеобразных перетяжек можно использовать простенький пакет, который можно скачать здесь (762 байт). Автор идеи — П. Потапов.
|
NB
|
Перед запуском алгоритма исходное покрытие в равнопромежуточную проекцию перепроецировать следует для уменьшения искажений длин.
|
В aml'ке следует связать переменные с нужными вам значениями:
incover — имя исходного покрытия;
outcover — имя итогового покрытия;
width — минимально допустимая ширина перемычки;
field — поле в котором находятся значения, определяющие отвечает ли полигон заданным требованиям, или нет;
value — значение в поле field, которое означает, что объект удовлетворяет заданным требованиям.
Переменные field и value нужны для покрытий, имеющих островные полигоны. Если, допустим, в массиве леса есть поляна, то она не удовлетворяет заданным выше требованиям (это — не лес) и должна рассматриваться как источник воздействия. В исходном покрытии заводим поле, например, Satisfy и отмечаем в нём полигоны, удовлетворящие всем требованиям, значением Yes, а не удовлетворяющие хотя бы одному требованию — значением No (рис. 1).

|
| Рисунок 1. Атрибутивная таблица к исходному покрытию (21 Кб).
|
В таком случае переменная field должна иметь значение Satisfy, а переменная value — значение 'Yes'. Если в вашем покрытии нет островных полигонов, то заполните все записи в атрибутивной таблице одним значением — Yes.
|
NB
|
В случае, если поле field текстовое, то значение переменной value в одинарных кавычках указывать следует, например, так: &sv .value = 'Yes'. Если поле числовое, то без кавычек, например, так: &sv .value = 100.
|
Теперь остаётся запустить arc &run tail.aml. В результате получаем покрытие, в котором будут сглажены изрезанные границы и удалены узкие коридоры. То есть, будут удалены участки, в которые не сможет поместиться круг с заданным диаметром (width). Результат работы алгоритма можно видеть на рис. 2.

|
| Рисунок 2. Действие алгоритма генерализации (137 Кб).
|
|