Страница 1 из 1
Задача: расчет расстояния
Добавлено: 25 сен 2011, 22:03
kryl
Есть точечный слой с уникальным ID.
Есть полигональный слой с уникальным ID.
Необходимо рассчитать расстояние от точечного объекта до ближайшего полигонального с одинаковым с ним ID.
Если точка лежит внутри полигона с таким же ID то расстояние равно 0.
Как бы это расстояние рассчитать в QGIS?
Re: Задача: расчет расстояния
Добавлено: 25 сен 2011, 23:06
kryl
Пока приходит в голову только 1 вариант: загнать 2 шейпа в SpataiLihgt и там сотворить запрос с Distance(). Вот только не соображу синтаксис.
Re: Задача: расчет расстояния
Добавлено: 25 сен 2011, 23:15
Александр Мурый
"SpataiLihgt" улыбнуло
Мне вот пришёл в голову грассовский модуль
v.distance. Но по умолчанию (просто от точек к полигонам) не выйдет считать, т.к. надо выполнить условия -- "до ближ-го с таким же ID + если внутри полигона с таким же ID, то расстояние == 0". Похоже, тут нужен будет лёгкий (?) скриптинг.
Re: Задача: расчет расстояния
Добавлено: 26 сен 2011, 00:54
kryl
Получилось таки.
Сначала считаем у точек Х Y
потом join точек к полигонам
потом из X Y делаем калькулятором поле wkt
потом запрос
Код: Выделить всё
SELECT Distance("fr2".'Geometry', PointFromText("wkt")) AS Geometry1 FROM "fr2"
видимо все шаги можно гораздо изящнее объединить в 1 запросе, но знания SQL не хватает.
Re: Задача: расчет расстояния
Добавлено: 26 сен 2011, 01:03
kryl
ага, вот так можно:
Код: Выделить всё
SELECT Distance("fr2".'Geometry',"fr_lpt".'Geometry') AS Dist
FROM "fr2" INNER JOIN "fr_lpt" ON "fr_lpt".'ID'="fr2".'ID2'