У меня есть векторный слой без географической привязки, который мне нужен для географической привязки. С растровыми слоями задача проста и понятна, но я понятия не имею, что мне делать с моим векторным слоем. У меня есть несколько контрольных точек с известными координатами, которые должны послужить основой для трансформации. Итак, допустим, я знаю, что точки с идентификаторами 1, 2 и 3 должны иметь координаты x1, y1; х2, у2; x3, y3. Там может быть некоторое вращение и преобразование масштаба в дополнение к простому сдвигу.
Любые идеи?
Ответы:
Чтобы привязать векторный слой, попробуйте плагин qgsAffine.
Больше информации в разделе Где найти qgsaffine в меню?
источник
Учитывая тот факт, что у вас есть некоторые точки контроля, вы должны иметь возможность использовать аффинное преобразование для смещения ваших векторных данных. Посмотрите на этот рецепт . Процесс состоит из двух частей:
Если вы поместите свои контрольные точки в CSV-файл (old_x, old_y, new_x, new_y), вы можете просто вырезать и вставить команды R из ссылки, чтобы решить часть коэффициентов.
источник
Я рекомендую плагин Vector Bender для QGIS. Я попробовал это, и это работает отлично и удобно для пользователя. В зависимости от количества пары точек, которые вы определяете, вы можете сделать:
Вы найдете короткое видео здесь, и я советую вам прочитать справку Vector Bender, как только вы установите плагин.
источник
С выпуском GDAL 1.10 это стало возможным.
Это делается путем выполнения базового преобразования в ogr2ogr и предоставления контрольных точек в теге -gcp. http://www.gdal.org/ogr2ogr.html
Для руководства, пожалуйста, смотрите: http://gisforthought.com/georeferencing-vector-data-using-qgis-and-ogr2ogr/
источник
Я просто должен был сделать это, и в итоге сделал это:
gcps.points
файлСледующий скрипт вычисляет матрицу аффинного преобразования с использованием сохраненных опорных точек:
источник
Посмотрите мой ответ на Сцепление двух полигонов вместе и попробуйте бесплатный openjump.
Я думаю, что его аффинное преобразование намного удобнее, чем плагин qgis.
источник
Следуя моим комментариям к ответу Рейнера, GRASS v.transform, который можно запустить из набора инструментов Sextante, можно использовать для вычисления параметров преобразования и применения их к векторному слою для выполнения аффинного преобразования. Требуется текстовый файл, содержащий контрольные точки, в формате, показанном здесь .
Он очень прост в использовании и хорошо работает.
источник
Некоторые из приведенных здесь ответов больше не являются опциями для QGIS 3 и / или допускают только линейные преобразования векторного файла с географической привязкой. Это может ответить на вопрос OP, но другим, кто просматривает этот пост, могут потребоваться другие варианты преобразования для векторных файлов с географической привязкой.
Проблемы с некоторыми решениями для векторных файлов с географической привязкой:
Плагин qgsAffine допускает только линейные преобразования. Это означает, что он может масштабировать, вращать и перемещать векторный файл, но он не может согнуть или деформировать векторный файл. Georeferencer для растровых файлов предоставляет больше возможностей и позволяет выполнять различные преобразования, включая полином второго порядка и сплайн тонкой пластины. Также не похоже, что плагин qgsAffine все еще доступен в QGIS 3.
Модуль GRASS v.transform аналогичен плагину qgsAffine и допускает только линейные преобразования.
Плагин Vector Bender выглядит хорошим вариантом, но он не был полностью перенесен в QGIS 3, поэтому в настоящее время его нельзя выбрать. Это не похоже, что это поддерживается больше.
Использование ogr2ogr, как предлагается в посте HeikkiVesanto, является хорошим вариантом. Это позволяет использовать опорные точки (Ground Control Points) и указать, какой тип трансформации вы бы хотели. Я не мог найти инструкции где-нибудь, как это сделать, поэтому я включил некоторые инструкции ниже:
Создайте набор пар опорных точек, при этом одна точка будет исходным местоположением в файле векторов без привязки, а другая точка - желаемым местоположением в вашем рабочем пространстве с географической привязкой.
Существует множество способов создания опорных точек. Я использовал плагин Georeferencer GDAL в QGIS. Это доступно в раскрывающемся меню Растр после его установки с помощью диспетчера плагинов. Он работает только с растровыми файлами, поэтому сначала необходимо преобразовать векторный файл в растровый файл. Это возможно с помощью «Инструментария обработки: GDAL: Преобразование вектора: Растеризация (вектор в растр)». Установите разрешение на число, которое все еще позволяет вам видеть особенности векторного файла.
Georeferencer имеет приятный интерфейс, который позволяет вам добавлять множество точек опорных точек. Вы также можете проверить различные преобразования и посмотреть, какие из них работают лучше всего. И вы можете увидеть, если какие-либо из ваших точек опорных точек могут быть ошибочными, посмотрев их остатки. После того как вы добавили все свои точки опорных точек и проверили, что вам нравятся выходные данные, вы можете экспортировать файл GCP из Georeferencer, чтобы использовать его для географической привязки к исходному векторному файлу.
Файл GCP необходимо изменить, чтобы он имел следующий формат. Вы можете добавить столько точек опорных точек, сколько пожелаете, каждая из которых начинается с -gcp и разделяется пробелом. Я запустил это с более чем 800 очками GCP, и это сработало отлично.
Существует множество способов, которыми можно изменить точки опорных точек в нужный формат. Я импортировал их в Excel в виде CSV-файла и создал столбец для вывода правильного формата для каждой точки. Затем я вставил этот столбец в TextEdit и заменил концы строк пробелами.
Векторный файл, к которому вы хотите привязать геопривязку, должен быть импортирован в вашу рабочую область с использованием того же SRS, который вы хотите использовать для конечного файла с привязкой по координатам, который должен быть той же SRS, что и ваша рабочая область. Это может быть далеко от того места, где он должен быть, если он первоначально использовал другой SRS, но преобразование переместит его в правильное местоположение.
Доступ к ogr2ogr осуществляется через «Панель инструментов обработки: GDAL: Преобразование вектора: Формат преобразования». Это позволяет вам выбрать векторный файл, который вы хотите привязать, и ваш выходной файл. В поле «Дополнительные параметры создания», добавьте команду, указав, какой тип преобразования вы хотите, и тогда линию со всеми точками GCP.
Команды для разных типов преобразования включают в себя:
Например, код, добавленный в поле «Дополнительные параметры создания», может выглядеть следующим образом:
источник