Вычислите кратчайшее расстояние от точки к линии, используя QGIS?

12

Каков наилучший метод для расчета расстояния от ближайшей дороги для ряда точек адреса в QGIS, имеющих очень большой набор данных? (QGIS 2.0.1, Win XP)

Я читаю ответы на предыдущие подобные вопросы:

Измерение расстояния между линиями и точками в QGIS

Рисование перпендикулярных линий в PyQGIS?

Вычислить минимальное расстояние между точками и полигонами в QGIS?

/programming/16448402/distance-of-point-feature-to-nearest-polygon-in-r

тем не менее:

  1. Плагин MMQGIS находит расстояние до ближайшего узла линейной сети, а не самое короткое (перпендикулярное) расстояние до линии.

  2. Предлагаемые сценарии R и Python корректно работают для небольших наборов данных и могут быть реализованы в моделировщике, однако для моей работы у меня есть 530 точек и слой региональной улицы с примерно 135 000 объектов, с циклическим циклом прохождения всех объектов и затем наименьшее расстояние для все точки займут огромное количество времени

  3. У меня проблемы с работой GRASS в QGIS 2.0.1 ( GRASS в QGIS не работает (Windows XP) ).

mic_cord
источник
1
Мне удалось вычислить минимальное расстояние в QGIS 1.8.0 с помощью плагина GRASS и инструмента v.distance . Выполнение занимает около 15 минут (плюс время, потраченное на правильную настройку GRASS и импорт слоев ...). Почему ArcGIS (если объединить по пространственному местоположению) все еще так быстр по сравнению?
mic_cord
1
Это вопрос наличия пространственного индекса и кода, оптимизированного для этой задачи. Я только что проверил с нашей библиотекой маршрутизации (RW Net 4), и она может делать 2000 таких вычислений в секунду для уличной сети приложения. такой же размер как у тебя. Сделать это примерно в 4000 раз быстрее, чем ваш плагин GRASS.
Уффе Коусгаард
3
Постгис должен сделать это быстро
Никлас Авен
1
@mic_cord Можете ли вы дать подробное объяснение вашего метода расширения GRASS v.distance? Я успешно получил v.distance для работы с использованием GRASS вне QGIS, но не могу заставить его работать в наборе инструментов Processing (QGIS 2.6).
user25976

Ответы:

6

Мы решали похожую проблему. Лучший и самый быстрый способ для нас это:

  1. Растеризация слоя линии (Растр / Преобразование / Растеризация ...)
  2. Преобразовать в близость (растр / анализ / близость ...)
  3. Используйте плагин Инструмент для выборки точек, чтобы получить значения для всей вашей точки из растра
Miro
источник
5

В некоторых ответах на Измерение расстояния между линиями и точками в QGIS рекомендуется подключить плагин NNJoin QGIS ( http://arken.nmbu.no/~havatv/gis/qgisplugins/NNJoin/ ). Он выполнит пространственное объединение ближайшего соседа и включит расстояние в результат. NNJoin плагин использует пространственный индекс, поэтому он должен обрабатывать достаточно большие массивы данных.

Ховард Твите
источник
Твите, я поддерживаю ваше предложение. Я был очень удивлен, что этот плагин работал быстрее, чем рекомендуемый пакет в R (т.е. geosphere :: dist2Line).
Йоханнесс