Per aspera ad astra.

Главная страница | Методики | Карты | Программы | Справка | Проекты | Ссылки
  • Скрипты для подсчёта площадей полигонов в квадратных метрах в проекции Geographic.
  • Коллекция расширений для ArcView.
  • Набор *.sml файлов для перепроецирования покрытий ArcInfo.
  • Программа распознавания цветов MagicMap.
  • Программа для копирования пути Path2Clipboard.
  • Алгоритм генерализации и удаления узких перемычек.
  • Алгоритм автоматического удаления чёрных полей по границе растрового изображения.
  • Алгоритм генерализации и удаления узких перемычек.

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

    1. Это должен быть лес. Густой и высокий.
    2. Лес должен находиться на расстоянии не менее 500 метров от ближайшего элемента антропогенной инфраструктуры (дороги, трубопровода, населённого пункта и т. п.).
    3. Лес должен находиться на расстоянии не более 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 Кб).

    О проекте | Копирайт | E-mail