Я пытаюсь использовать QGIS 2.14 для привязки дорожной сети к шестиугольной сетке, но у меня появляются странные артефакты.
Я создал шестнадцатеричную сетку с MMQGIS , ячейки размером около 20 х 23 м. Я забуферен дорожной сетью на 1 м и уплотнил ее, чтобы через каждые несколько метров находился узел. Вы можете увидеть то, что я пытаюсь достичь ниже. Как видите, я могу заставить его работать в некоторых случаях:
- синий - уплотненная дорога (буферизованная линия)
- красный - это «шестнадцатеричная» версия - это то, что я хочу найти
- серый - это шестнадцатеричная сетка
Затем я использовал новую функцию привязки геометрии, чтобы привязать узлы к ближайшему шестиугольному углу. Результаты многообещающие, но, похоже, существуют некоторые крайние случаи, когда линия расширяется, чтобы заполнить шестиугольник (или его часть):
Причиной для буфера является то, что привязка геометрий не позволяет привязываться к слою, геометрия которого отличается. Например, вы не можете привязать узлы на слое LINE к точкам на слое POINT). Кажется, это самый счастливый привязать POLYGON к POLYGON.
Я подозреваю, что дороги расширяются, когда одна сторона буферизованной дорожной линии переходит на одну сторону гекс-ячейки, а другая - на другую сторону гекс-ячейки. В моем примере дороги, которые пересекают запад-восток под острым углом, кажутся худшими.
Вещи, которые я пытался без успеха: -
- буферизует дорожную сеть незначительным количеством, поэтому она остается многоугольником, но очень тонкой.
- уплотнение шестнадцатеричных ячеек (так что по краям есть узлы, а не только по углам)
- изменение максимального расстояния привязки (это имеет самый большой эффект, но я не могу найти идеальное значение)
- используя слои LINE, а не многоугольники
Я обнаружил, что если я перехожу к использованию только слоев LINE, он работает некоторое время, а затем падает. Кажется, он сохраняет свою работу, поскольку некоторые строки были частично обработаны.
Кто-нибудь знает какой-либо другой способ привязки точек на линии к ближайшей точке на другом слое линий / полигонов, в идеале без необходимости использовать postgres / postgis (хотя решение с postgis также будет приветствоваться)?
РЕДАКТИРОВАТЬ
Для тех, кто хотел бы попробовать, я разместил стартовый проект QGIS здесь, на Dropbox . Это включает в себя слои Hex Grid и Densified lines. (Дорожная сеть основана на OSM, поэтому ее можно загрузить с помощью QuickOSM, например, если вам нужно получить оригинал для определения дороги).
Обратите внимание, что в OSGB (epsg: 27700) локализованный UTM для Великобритании с единицами измерения в метрах.