Задача: расчет расстояния
-
- Завсегдатай
- Сообщения: 324
- Зарегистрирован: 14 фев 2010, 20:42
- Репутация: 0
Задача: расчет расстояния
Есть точечный слой с уникальным ID.
Есть полигональный слой с уникальным ID.
Необходимо рассчитать расстояние от точечного объекта до ближайшего полигонального с одинаковым с ним ID.
Если точка лежит внутри полигона с таким же ID то расстояние равно 0.
Как бы это расстояние рассчитать в QGIS?
Есть полигональный слой с уникальным ID.
Необходимо рассчитать расстояние от точечного объекта до ближайшего полигонального с одинаковым с ним ID.
Если точка лежит внутри полигона с таким же ID то расстояние равно 0.
Как бы это расстояние рассчитать в QGIS?
-
- Завсегдатай
- Сообщения: 324
- Зарегистрирован: 14 фев 2010, 20:42
- Репутация: 0
Re: Задача: расчет расстояния
Пока приходит в голову только 1 вариант: загнать 2 шейпа в SpataiLihgt и там сотворить запрос с Distance(). Вот только не соображу синтаксис.
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Задача: расчет расстояния
"SpataiLihgt" улыбнуло
Мне вот пришёл в голову грассовский модуль v.distance. Но по умолчанию (просто от точек к полигонам) не выйдет считать, т.к. надо выполнить условия -- "до ближ-го с таким же ID + если внутри полигона с таким же ID, то расстояние == 0". Похоже, тут нужен будет лёгкий (?) скриптинг.

Мне вот пришёл в голову грассовский модуль v.distance. Но по умолчанию (просто от точек к полигонам) не выйдет считать, т.к. надо выполнить условия -- "до ближ-го с таким же ID + если внутри полигона с таким же ID, то расстояние == 0". Похоже, тут нужен будет лёгкий (?) скриптинг.
Редактор материалов, модератор форума
-
- Завсегдатай
- Сообщения: 324
- Зарегистрирован: 14 фев 2010, 20:42
- Репутация: 0
Re: Задача: расчет расстояния
Получилось таки.
Сначала считаем у точек Х Y
потом join точек к полигонам
потом из X Y делаем калькулятором поле wkt
потом запрос
видимо все шаги можно гораздо изящнее объединить в 1 запросе, но знания SQL не хватает.
Сначала считаем у точек Х Y
потом join точек к полигонам
потом из X Y делаем калькулятором поле wkt
потом запрос
Код: Выделить всё
SELECT Distance("fr2".'Geometry', PointFromText("wkt")) AS Geometry1 FROM "fr2"
-
- Завсегдатай
- Сообщения: 324
- Зарегистрирован: 14 фев 2010, 20:42
- Репутация: 0
Re: Задача: расчет расстояния
ага, вот так можно:
Код: Выделить всё
SELECT Distance("fr2".'Geometry',"fr_lpt".'Geometry') AS Dist
FROM "fr2" INNER JOIN "fr_lpt" ON "fr_lpt".'ID'="fr2".'ID2'
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость