Некоторые из приведенных здесь ответов больше не являются опциями для 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, и это сработало отлично.
-gcp <ungeoref_x1> <ungeoref_y1> <georef_x1> <georef_y1> -gcp <ungeoref_x2> <ungeoref_y2> <georef_x2> <georef_y2>
Существует множество способов, которыми можно изменить точки опорных точек в нужный формат. Я импортировал их в Excel в виде CSV-файла и создал столбец для вывода правильного формата для каждой точки. Затем я вставил этот столбец в TextEdit и заменил концы строк пробелами.
Векторный файл, к которому вы хотите привязать геопривязку, должен быть импортирован в вашу рабочую область с использованием того же SRS, который вы хотите использовать для конечного файла с привязкой по координатам, который должен быть той же SRS, что и ваша рабочая область. Это может быть далеко от того места, где он должен быть, если он первоначально использовал другой SRS, но преобразование переместит его в правильное местоположение.
Доступ к ogr2ogr осуществляется через «Панель инструментов обработки: GDAL: Преобразование вектора: Формат преобразования». Это позволяет вам выбрать векторный файл, который вы хотите привязать, и ваш выходной файл. В поле «Дополнительные параметры создания», добавьте команду, указав, какой тип преобразования вы хотите, и тогда линию со всеми точками GCP.
Команды для разных типов преобразования включают в себя:
- «-порядок 1» для линейного
- «порядок 2» для многочлена второго порядка
- «3-й порядок» для полинома третьего порядка
- «-tps» для тонкой пластины сплайна.
Например, код, добавленный в поле «Дополнительные параметры создания», может выглядеть следующим образом:
-order 2 -gcp <ungeoref_x1> <ungeoref_y1> <georef_x1> <georef_y1> -gcp <ungeoref_x2> <ungeoref_y2> <georef_x2> <georef_y2>