Найти расстояние от пиксела до границы полигона

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Voin
Интересующийся
Сообщения: 42
Зарегистрирован: 13 сен 2013, 12:05
Репутация: 3
Откуда: Berlin

Найти расстояние от пиксела до границы полигона

Сообщение Voin » 13 сен 2013, 12:11

Добрый день!

Проблема:

допустим есть растр и есть шейп с полигонами. Надо найти расстояние от каждого пиксела до ближайшей границы полигона внутри которого этот пиксел.

Вариант конвертации растра в точечный шейп не желателен, так как довольно большой набор данный.

Заранее благодарен

Аватара пользователя
novia
Гуру
Сообщения: 2261
Зарегистрирован: 29 апр 2011, 15:06
Репутация: 489
Откуда: Тель-Авив

Re: Найти расстояние от пиксела до границы полигона

Сообщение novia » 13 сен 2013, 12:32

вряд ли вы решите эту задачу без генерации точечного слоя.

тем более что задача будет сильно упрощена, когда вы исключите из поиска точки, которые не покрыты полигонами.

как вариант, можно перед конвертацией в точки, извлечь растр по маске из этих полигонов.
понравилось? жми палец вверх :!:

Voin
Интересующийся
Сообщения: 42
Зарегистрирован: 13 сен 2013, 12:05
Репутация: 3
Откуда: Berlin

Re: Найти расстояние от пиксела до границы полигона

Сообщение Voin » 13 сен 2013, 12:53

novia писал(а):вряд ли вы решите эту задачу без генерации точечного слоя.

тем более что задача будет сильно упрощена, когда вы исключите из поиска точки, которые не покрыты полигонами.

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

Задача состоит в расчете веса каждого пиксела в зависимости от его удаления от границы. Допустим есть растровая маска застройки города (urban footprint) и векторная граница этого города. Есть условные зоны удаления от границы (500 м, 1 км, 5 км и т.д.), вес пиксела должен расчитываться исходя от его попадания в какую-либо зону.

Может есть идеи другого подхода?

Аватара пользователя
novia
Гуру
Сообщения: 2261
Зарегистрирован: 29 апр 2011, 15:06
Репутация: 489
Откуда: Тель-Авив

Re: Найти расстояние от пиксела до границы полигона

Сообщение novia » 13 сен 2013, 13:07

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

Voin
Интересующийся
Сообщения: 42
Зарегистрирован: 13 сен 2013, 12:05
Репутация: 3
Откуда: Berlin

Re: Найти расстояние от пиксела до границы полигона

Сообщение Voin » 13 сен 2013, 14:51

не получается... города у меня в виде набора полигонов. Когда загружаю его в Euclidean Distance - весь набор городов воспринимается как один объект, и выходной растр - просто одноцветная картинка перекрывающую всю область полигонального шейпа

Аватара пользователя
novia
Гуру
Сообщения: 2261
Зарегистрирован: 29 апр 2011, 15:06
Репутация: 489
Откуда: Тель-Авив

Re: Найти расстояние от пиксела до границы полигона

Сообщение novia » 13 сен 2013, 14:58

значит что-то вы не так настроили... давайте, рассказывайте по пунктам
какая СК у данных векторных и растровых?
какие параметры указали для инструмента?
понравилось? жми палец вверх :!:

Maka
Активный участник
Сообщения: 121
Зарегистрирован: 23 ноя 2005, 16:57
Репутация: 6
Откуда: Москва

Re: Найти расстояние от пиксела до границы полигона

Сообщение Maka » 13 сен 2013, 14:59

Voin писал(а): Есть условные зоны удаления от границы (500 м, 1 км, 5 км и т.д.), вес пиксела должен расчитываться исходя от его попадания в какую-либо зону.

Может есть идеи другого подхода?
так у вас зоны? т.е для всех пикселов в зоне 1 км вес будет одинаков или в формуле важно индивидуальное расстояние от пиксела до границы?
просто зоны сильно все упрощают

Voin
Интересующийся
Сообщения: 42
Зарегистрирован: 13 сен 2013, 12:05
Репутация: 3
Откуда: Berlin

Re: Найти расстояние от пиксела до границы полигона

Сообщение Voin » 13 сен 2013, 15:05

Maka писал(а):
Voin писал(а): Есть условные зоны удаления от границы (500 м, 1 км, 5 км и т.д.), вес пиксела должен расчитываться исходя от его попадания в какую-либо зону.

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

Maka
Активный участник
Сообщения: 121
Зарегистрирован: 23 ноя 2005, 16:57
Репутация: 6
Откуда: Москва

Re: Найти расстояние от пиксела до границы полигона

Сообщение Maka » 13 сен 2013, 15:13

Voin писал(а):
Maka писал(а):
Voin писал(а): Есть условные зоны удаления от границы (500 м, 1 км, 5 км и т.д.), вес пиксела должен рассчитываться исходя от его попадания в какую-либо зону.

Может есть идеи другого подхода?
так у вас зоны? т.е для всех пикселов в зоне 1 км вес будет одинаков или в формуле важно индивидуальное расстояние от пиксела до границы?
просто зоны сильно все упрощают
да, пока в каждой конкретной зоне вес одинаков, но количество зон варьируется в зависимости от размера города
ну тогда бы я пошла таким путем:
- построила зоны командой multiple ring buffer
- удалила ненужные по весу города
- конвертнула в грид
- и далее через spatial analyst tool\math рассчитывала

Voin
Интересующийся
Сообщения: 42
Зарегистрирован: 13 сен 2013, 12:05
Репутация: 3
Откуда: Berlin

Re: Найти расстояние от пиксела до границы полигона

Сообщение Voin » 13 сен 2013, 15:19

novia писал(а):значит что-то вы не так настроили... давайте, рассказывайте по пунктам
какая СК у данных векторных и растровых?
какие параметры указали для инструмента?
СК одинакова, Deutsches_Hauptdreiecksnetz_Transverse_Mercator. Данные дасположены в персональной базе геоданных PGDB.

полигон населенных пунктов, в каждом НП предполагается данное "зонирование". Регионы извлечены путем векторизации растра, это необходимо так как каждый регион тоже имеет свой вес в зависимости от размера и расположения.
scr1.png
scr1.png (46.98 КБ) 11677 просмотров
То что я получил на выходе Euclidean Distance
scr2.png
scr2.png (187.15 КБ) 11677 просмотров

Voin
Интересующийся
Сообщения: 42
Зарегистрирован: 13 сен 2013, 12:05
Репутация: 3
Откуда: Berlin

Re: Найти расстояние от пиксела до границы полигона

Сообщение Voin » 13 сен 2013, 15:24

Как видно, Euclidean Distance считает расстояние до города, а мне нужно внутри каждого конкретного до его границы

Voin
Интересующийся
Сообщения: 42
Зарегистрирован: 13 сен 2013, 12:05
Репутация: 3
Откуда: Berlin

Re: Найти расстояние от пиксела до границы полигона

Сообщение Voin » 13 сен 2013, 15:34

грубо говоря деление должно быть таким
zones.png
zones.png (12.53 КБ) 11672 просмотра
Maka писал(а): ну тогда бы я пошла таким путем:
- построила зоны командой multiple ring buffer
- удалила ненужные по весу города
- конвертнула в грид
- и далее через spatial analyst tool\math рассчитывала
наверное в этом направлении и пойду. Сначала классифицировать и сделать выборку по площади/кол-ву зон, потом multiple ring buffer

gamm
Гуру
Сообщения: 4048
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

Re: Найти расстояние от пиксела до границы полигона

Сообщение gamm » 13 сен 2013, 17:48

Voin писал(а):так и сделал... но расчеты идут часами... и это только на одну область/регион, а в будущем нужно считать на всю Европу. Думал может есть вариант работы напрямую с растром.
конечно есть, причем тривиальный, и именно для этого случая. Просто переносите ваши контура на растр, и делаете дистанционное преобразование (кнопку найдете, оно там должно быть, в ArcView 3.1 даже было). После чего получаете растр с ответом. Начальное значение на контуре положите половине размера ячейки, не сильно ошибетесь.

Maka
Активный участник
Сообщения: 121
Зарегистрирован: 23 ноя 2005, 16:57
Репутация: 6
Откуда: Москва

Re: Найти расстояние от пиксела до границы полигона

Сообщение Maka » 13 сен 2013, 18:42

а дистанционное преобразование это arctoolbox\spatial analyst tools \distаnce \euclidean distance?

gamm
Гуру
Сообщения: 4048
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

Re: Найти расстояние от пиксела до границы полигона

Сообщение gamm » 14 сен 2013, 06:39

Maka писал(а):а дистанционное преобразование это arctoolbox\spatial analyst tools \distаnce \euclidean distance?
по картинке похоже, нужно доки читать. Если ячейки слишком крупные, и мелкие контура обрабатываются неверно, то растр можно сгустить в 3 раза, а потом взять значения в центрах (для надежности можно еще забить NA вне контуров).

Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя