Не удалось выполнить экспорт в векторный файл qgis
По различным причинам, не все из поддерживаемых форматов могут работать в QGIS. Например, некоторые требуют наличия внешних коммерческих библиотек или библиотеки GDAL/OGR в вашей операционной системе (ОС) скомпилированы без поддержки формата, который вы хотите использовать. При загрузке в QGIS данных векторных или растровых форматов в списке типов файлов будут отображаться только те форматы, которые были проверены. Остальные (непроверенные) форматы могут быть загружены, если выбрать *.* в выпадающем списке «Типы файлов».
Работа с векторными данными в формате GRASS описана в разделе Интеграция с GRASS GIS.
В этой главе описывается, как работать с несколькими наиболее распространёнными форматами: ESRI shape-файлами, слоями PostGIS и SpatiaLite. Большинство функций QGIS (включая идентификацию, выборку, подписывание и работу с атрибутивной информацией) работают одинаково хорошо с различными источниками векторных данных. Это является особенностью QGIS.
Shape-файлы¶
На самом деле, shape-файл состоит из нескольких файлов разных форматов. Из них три обязательны:
.shp файл, содержащий геометрическую информацию об объектах
.dbf файл, содержащий атрибутивную информацию в формате dBase
.shx индексный файл
Добавление shape-файла к карте¶
Чтобы добавить shape-файл, надо использовать кнопку Добавить векторный слой или сочетание клавиш Ctrl+Shift+V . Появится новое диалоговое окно (см. рисунок figure_vector_1).
Figure Vector 1:
Add Vector Layer Dialog
Для выбранного shape-файла можно указать кодировку атрибутивных данных.
Figure Vector 2:
Open an OGR Supported Vector Layer Dialog
Выбор shape-файла из списка и нажатие кнопки [Открыть] загружает файл в QGIS. Рисунок Figure_vector_3 демонстрирует QGIS после открытия файла alaska.shp .
Figure Vector 3:
QGIS with Shapefile of Alaska loaded
Цвет слоя
Каждому вновь добавленному к карте слою присваивается случайный цвет. Если было открыто несколько слоёв, каждому присваивается свой цвет, отличный от других.
Для навигации по открытому shape-файлу можно воспользоваться инструментами с панели навигации. Чтобы изменить символику слоя, следует открыть диалог Свойства слоя двойным щелчком мыши на названии слоя или щёлкнув правой кнопкой мыши на названии слоя в легенде и выбрав пункт Свойства из контестного меню. Дополнительную информацию о символике векторных слоёв можно найти в разделе Стиль.
Добавление слоя или проекта со внешнего носителя в OS X
В OS X подключённые внешние устройства не появляются после выбора Файл ‣ Открыть проект. Мы работаем над разрешением этой проблемы в диалогах открытия и сохранения в OS X. В качестве временного решения можно напечатать /Volumes в поле имени файла и нажать Enter . После этого можно указать путь ко внешним носителям и сетевым дискам.
Улучшение производительности¶
Для увеличения производительности при отрисовке shape-файла можно создать пространственный индекс. Пространственный индекс улучшает скорость отрисовки как при изменении масштаба, так и при панорамировании (перемещении слоя в каком-либо направлении без изменения масштаба). Файл пространственного индекса, используемого QGIS, имеет расширение .qix .
Чтобы создать индекс, необходимо:
Открыть диалог Свойства слоя двойным щелчком по имени shape-файла в легенде или правым щелчком по нему же и выбором Свойства в контекстном меню.
Во вкладке Общие нажмите кнопку [Создать пространственный индекс].
Проблема загрузки shape-файла с файлом .prj¶
Если при открытии shape-файла, в состав которого входит файл с расширением .prj , QGIS не способна определить описанную систему координат, необходимо задать соответствующую проекцию вручную во вкладке Общие диалога Свойства слоя. Эта проблема возникает вследствие того, что файлы .prj часто не содержат всех необходимых параметров проекции, используемых в QGIS и перечисленных в диалоге Выбор системы координат.
Именно поэтому, новые shape-файлы, создаваемые в QGIS, имеют два различных файла проекций: файл .prj с ограниченным набором параметров проекции, совместимый с ПО ESRI, и файл .qpj , полностью описывающий параметры используемой системы координат. Всегда, когда QGIS имеет доступ к файлу .qpj , последний будет использован вместо .prj .
Добавление слоя MapInfo к карте¶
Чтобы открыть слой MapInfo, нажмите кнопку Добавить векторный слой на панели инструментов или воспользуйтесь комбинацией клавиш Ctrl+Shift+V , измените фильтр Тип файлов на «[OGR] MapInfo ( * .mif * .tab * .MIF * .TAB)» и выберите нужный файл.
Добавление на карту покрытия ArcInfo¶
Чтобы открыть покрытие ArcInfo в двоичном формате, нажмите на кнопку Добавить векторный слой на панели инструментов или воспользуйтесь комбинацией клавиш Ctrl+Shift+V , чтобы открыть диалог Добавить векторный слой. В группе Тип источника выберите Каталог. Установите Тип файлов в «Arc/Info Binary Coverage». Укажите путь к каталогу с файлами покрытия.
Аналогично добавляются векторные слои UK National Transfer Format и TIGER Format Бюро переписи населения США (US Census Bureau).
Слои PostGIS¶
Слои PostGIS хранятся в базе данных PostgreSQL. Преимуществами PostGIS являются пространственное индексирование и широкие возможности фильтрации и построения запросов. При использовании PostGIS такие функции, как выбор и идентификация, работают более точно, чем при использовании OGR-совместимых слоёв.
Настройка подключения к базе данных PostGIS (PostgreSQL)¶
Имя: имя для данного соединения. Может совпадать с именем Базы данных
Служба: Этот параметр может использоваться в качестве альтернативы для Узла и Порта (и, теоретически, Базы данных). Настройка выполняется в файле pg_service.conf
Порт: номер порта, который «слушает» сервер базы данных PostgreSQL. По умолчанию используется порт 5432
База данных: имя базы данных
Режим SSL: настройка SSL-режима работы с сервером.Следует отметить, что значительного прироста скорости рендеринга слоя PostGIS можно достигнуть путём отключения SSL в менеджере соединений. Можно выбрать:
запретить: использовать только не зашифрованное SSL-соединение
разрешить: будет произведена попытка установки не SSL-соединения, если она не удастся, будет использовано SSL-соединение
предпочитать (по умолчанию): будет произведена попытка установки SSL-соединения, если она не удастся, будет использовано не SSL-соединение
требовать: использовать только SSL-соединение
Пользователь: имя пользователя, которое используется для доступа к базе данных
Пароль: пароль, используемый вместе с именем пользователя для подключения к базе данных
Также есть возможность активировать дополнительные настройки:
Сохранить пользователя
Сохранить пароль
Искать только в таблице «geometry_columns»
Искать только в схеме «public»
Показать таблицы без геометрии
Использовать расчётные метаданные таблицы
Когда параметры установлены, можно проверить соединение путём нажатия на кнопку [Проверить соединение].
Пользовательские настройки и безопасность
В зависимости от используемой операционной системы и настроек компьютера, хранение пароля в настройках QGIS может создавать угрозу безопасности. QGIS хранит пользовательские настройки:
в «домашнем» каталоге пользователя в каталоге ./qgis
Добавление слоя PostGIS к карте¶
Когда создано одно или более соединение, можно добавлять слои из PostgreSQL. Естественно, в базе данных PostgreSQL должна содержаться информация. См. раздел Импорт данных в PostgreSQL, в котором обсуждается импорт данных в базу данных.
Для открытия слоя PostGIS проделайте следующие шаги:
Если диалог Добавить слои PostGIS ещё не открыт, нажмите кнопку Добавить слой PostGIS на панели инструментов.
Выберите соединение из выпадающего списка и нажмите кнопку [Подключиться]
При необходимости активируйте флажок Показать таблицы без геометрии
Установив флажок Параметры поиска, можно указать условия отбора объектов для загрузки или же можно открыть Конструктор запросов нажатием на кнопку [Запрос]
Найдите слой, который желаете добавить в список доступных слоёв
Щёлкните по нему, чтобы выбрать. Можно выбрать несколько слоёв, если нажать и удерживать клавишу Shift . В разделе Конструктор поисковых запросов можно найти информацию об использовании «Конструктора запросов» при работе с PostgreSQL
Слои PostGIS
Некоторые особенности работы со слоями PostgreSQL¶
Если слой PostgreSQL является представлением, к нему предъявляются те же требования, что были описаны выше, но представления не имеют первичных ключей или колонок с уникальными значениями. В этом случае QGIS попытается самостоятельно найти колонку в представлении, являющуюся производной от колонки, удовлетворяющей необходимым условиям. Это достигается посредством разбора SQL-опеределения представления. Однако, есть элементы SQL, игнорируемые QGIS, например, использование псевдонимов таблиц и колонок, создаваемых SQL-запросами.
Если невозможно найти подходящую колонку, QGIS не откроет слой. В таком случае следует изменить представление таким образом, чтобы оно содержало требуемую колонку (тип int4 и либо являющуюся первичным ключом, либо содержащую уникальные значения, желательно, индексированную).
Импорт данных в PostgreSQL¶
Cуществует несколько способов импорта данных в базу данных PostgreSQL с использованием различных инструментов таких как модуль SPIT или утилиты командной строки shp2pgsql и ogr2ogr .
Модуль SPIT¶
shp2pgsql¶
PostGIS поставляется с утилитой shp2pgsql, которую можно использовать для импорта shape-файлов в базу данных PostGIS. Например для импорта shape-файла lakes.shp в базу данных PostgreSQL, называющуюся gis_data , воспользуйтесь следующей командой:
При этом будет создан новый слой под названием lakes_new в базе данных gis_data . Новый слой будет иметь идентификатор системы координат (SRID) 2964. Более подробную информацию о системах координат и проекциях можно найти в разделе Работа с проекциями.
Экспорт наборов данных из PostGIS
Наряду с инструментом для импорта shp2pgsql существует инструмент для экспорта наборов данных PostGIS в shape-файл: pgsql2shp. Он также входит в поставку PostGIS.
ogr2ogr¶
Для импорта shape-файла в PostGIS проделайте следующее (в ):
Эта команда импортирует файл alaska.shp в базу данных PostGIS postgis на сервере myhost.de, используя в качестве имени пользователя базы данных postgres с паролем topsecret.
Заметьте, что для работы с PostGIS в OGR должна быть включена поддержка PostgreSQL. Проверить её наличие можно с помощью команды (в )
Те, кто предпочитают использовать команду PostgreSQL COPY вместо команды INSERT INTO, используемой по умолчанию, могут экспортировать следующие переменные среды (доступно, по крайней мере, для и ):
ogr2ogr не создаёт пространственный индекс, как это делает shp2pgsl. Его необходимо создать вручную, используя SQL-команду CREATE INDEX после экспорта (смотри описание в следующем разделе Повышение производительности).
Повышение производительности¶
Ниже представлен порядок создания GiST-индекса:
Заметьте, что для больших таблиц создание индекса может занять продолжительное время. После создания индекса следует произвести выполнить команду VACUUM ANALYZE . Дополнительную информацию можно найти в документации к PostGIS (POSTGIS-PROJECT Литература и ссылки на web-ресурсы).
Приведём пример создания GiST-индекса ():
Векторные слои, пересекающие долготу 180°¶
Многие ГИС испытывают трудности при работе с векторными картами в системе координат широта/долгота (lat/lon), пересекающими долготу 180°. При открытии таких карт в QGIS можно наблюдать две разнесённые на большое удаление друг от друга части территории/акватории, которые на самом деле представляют собой единое целое. На рисунке Figure_vector_4 едва заметные точки в левой части карты (архипелаг Чатем), должны находиться внутри сетки, справа от главных островов (Северного и Южного) Новой Зеландии.
Figure Vector 4:
Map in lat/lon crossing the 180° longitude line
Figure Vector 5:
Crossing 180° longitude applying the ST_Shift_Longitude function
Использование¶
Импортируем данные в PostGIS (Импорт данных в PostgreSQL) при помощи модулей «PostGIS Manager» или «SPIT»
Если операция прошла успешно, появится подтверждение о количестве объектов, информация о которых обновлена, после этого будет возможно добавить объекты на карту и увидеть изменения (см. рисунок Figure_vector_5)
Слои SpatiaLite¶
При первой загрузке слоёв из базы данных SpatiaLite воспользуйтесь кнопкой Добавить слой SpatiaLite на панели инструментов или пунктом mActionAddSpatiaLiteLayer Добавить слой SpatiaLite. в меню Слой, либо комбинацией клавиш Сtrl+Shift+L . Появится окно, позволяющее соединиться с базой данных SpatiaLite, которая уже была подключена к QGIS ранее (её можно выбрать в выпадающем списке), или же создать новое подключение. Для создания нового подключения нажмите на кнопку [Создать] и используйте менеджер файлов, чтобы указать путь к нужной базе данных (файлу с расширением .sqlite ).
QGIS также поддерживает обновляемые «представления» (view) в базах данных SpatiaLite.
Создание нового слоя SpatiaLite¶
Процесс создания новых слоёв в базе SpatiaLite описан в разделе Создание нового слоя SpatiaLite.
Модули для работы с данными SpatiaLite
Существует ряд расширений, предназначенных для работы с данными SpatiaLite: «QSpatiaLite», «SpatiaLite Manager» или «DB Manager» (входит в состав QGIS, наиболее предпочтительный вариант). Установить их можно при помощи Установщика модулей.
Слои MSSQL Spatial¶
В QGIS есть «родная» поддержка пространственных данных MS SQL 2008. Для добавления этих данных используется кнопка Добавить слой MSSQL Spatial на панели инструментов, также присутствует отдельный узел в дереве данных Обозревателя и поддержка открытия слоёв путём перетаскивания их на карту.
Несколько лет я занимаюсь рисовкой и поддержанием в актуальном состоянии схем-хребтовок двух горных районов. Джунгарского алатау и Центрального Тянь-Шаня.
Изначально я все рисовал в программе Ocad. Это специльная программа для рисования карт спортивного ориентирования. Проект был разбит на десятки листов. Потом эти листы экспортировались в картинки, сшивались и разрезались на тайлы. Тайлы загружались на ftp.
А вот как было в Ocad
И вот однажды я встретил QGIS.
Программа меня впечатлила. Неплохой рендерер. Не такой выразительный как в OCAD, но качество меня устроило. Возможность работать напрямую с геоданными. Возможность работать со всем проектом целиком, не разбивая его на куски.
Все это побудило перенести весь проект на QGIS.
Но теперь я немного об этом жалею.
Рендерер QGIS не приспособлен для генерации тайлов.
Конечно, есть два плагина QTiles и QMetaTiles для QGIS 2. Я их адаптировал и для QGIS 3.
Расскажу подробнее о неисправимых косяках, которые мешают генерации тайловых карт в QGIS.
Экспорт сделан с помощью плагина QTiles
Косяк №1. Когда рендерер вычисляет какие объекты попадают в его область видимости (в QGIS Это называется canvas), то он не учитывает размер символов объектов.
Пример 1а. Точечный объект
Как видите, значок вершины оказался обрезанным. На нижнем тайле рендерер его вывел, а на верхнем — нет. Потому что центр вершины не попал в границы тайла.
Пример 1б. Линейный объект
Толстая линия проходит рядом с границей тайла. На нижний тайл она попала частично. На верхний тайл вообще не попала.
Линия не обязательно должна проходить по границе тайлов. Еще может быть вот такой артефакт
Косяк №2. Расстановка надписей.
Пример 2а. Короткая надпись на линейном объекте
Рендерер вывел название на каждом тайле.
Пример 2б. Длинная надпись на линейном объекте
Z15
Z16
На Z15 надпись есть, потому что она целиком влезает в границы тайла.
На Z16 надписей уже нет, потому что длинная надпись не влезает в границы тайла.
Представьте, что вы хотите нарисовать карту мира, а на ней на весь континент большими буквами написать «ЕВРАЗИЯ». Ничего не выйдет. Надпись будет появляться только на тех зумах, где она помещается в тайл целиком.
Пример 2в. Надпись на точечном объекте
Я включил опцию «Show partial labels»
Z16
Z15
На Z16 рендерер показывает только часть надписи, влезающую в тайл. При рендеренге соседнего тайла, он, кончено, про нее забывает.
Если опцию «Show partial labels» выключить, то на Z16 вообще не будет надписи.
С указанными проблемами призваны бороться два метода
1. Метаталинг
2. Буфферные зоны
Метатайлинг.
Рендерится не каждый тайл по отдельности, а группа в несколько тайлов. Скажем, 4х4, а потом разрезается на меньшие кусочки.
Буфферные зоны
Рендерится область большая, чем тайл или метатайл, а потом из нее вырезается нужный кусок.
Оба метода не исправляют вышеуказанные косяки, а сдвигают их на несколько уровней зума ниже. Те же самые косяки проявляются уже на на границах тайлов, а на границах метатайлов или буфферных зон.
Пример 2г. Точечный объект
Делаю экспорт плагином QMetaTiles. Размер метатайла 2х2. Это значит, что рендерится область в 2х2 тайла, а потом нарезается на куски.
Z16
Действительно. Надпись теперь не обрезается, потому что целиком влезает в область 2х2 тайла. Но на границе метатайла обрезался сам объект. То же будет и с линейным объектом.
Проблема сдвинулась на один уровень зума ниже.
Косяк №3. Скачущие надписи
Пример 3а
Расстановщик каждый раз выбирает наиболее выгодную позицию для очередной надписи. Причем, расположение надписей зависит от положения canvas. Сдвиньте его на пару миллиметров, и все надписи будут расположены совершенно иначе.
Это значит, что при рендеринге одного метатайла и буферной зоны вокруг него надпись может быть в одном места, а при рендеринге соседнего метатайла — совершенно в другом.
Я делаю экспорт куска карты в тайлы. Надписи занимают один порядок.
Затем я немного сдвигаю canvas и делаю опять экспорт. Надписи уже занимают совершенно другой порядок. При этом появляются вот такие артефакты.
Что же с этим всем делать?
Метатайлинг и буфферные области не решают вышеописаныне проблемы, а отодвигают их на меньшие уровни зума.
1. Когда рендерер вычисляет какие объекты он должен нарисовать, то он должен учитывать не только геоданные объектов, но их их символику.
Например, для всех объектов рендерер должен хранить BBOX, который объект занимает после индивидуального рендеринга. При рендеринге сцены, нужно учитывать пересечение canvas с индивидуальным BBOXами отрендеренных объектов.
При этом желательно, чтобы BBOX вмещал в себя еще и надписи, привязанные к объекту.
2. Расположение надписей не должно зависеть от расположения canvas. Тогда при частичном экспорте фрагменты надписей будут хорошо сшиваться. Отпадет необходимость в метатайлинге и буфферных зонах.
К сожалению, на данный момент экспорт тайлов из QGIs просто ужасен, и когда он будет исправлен не ясно.
Цель задания — знакомство с привязкой и трансформированием растровых геоизображений.
Необходимая теоретическая подготовка: Системы координат и проекции карт, привязка геоизображений, трансформирование геоизображений. Разграфка, номенклатура и проекция топографических карт. Методы трансформации: аффинное, проективное, полиномиальное, метод резинового листа.
Необходимая практическая подготовка: Знание основных компонент интерфейса QGIS (менеджер источников данных, панель слоёв, фрейм карты), умение выполнять масштабирование и перемещение по карте, определять координаты курсора.
Исходные данные: Растровые изображения листов топографических карт и тематических карт, сканированные аэрофотоснимки.
Результат: Привязанные и трансформированные растровые изображения, пригодные для непосредственно использования в ГИС.
5.1.1 Контрольный лист
- Определить систему координат для привязки
- Привязать растровую карту по известным координатам точек
- Оценить точность привязки карты
- Привязать растровую карту путём интерактивного определения положения точек привязки
- Использовать базовые карты из сети Интернет для привязки
5.2 Привязка растра по известным координатам
Скачайте архив с исходными данными и распакуйте его в свою рабочую директорию
Топографические карты на территорию СССР составлялись в проекции Гаусса-Крюгера. Задание проекции позволяет ввести систему плоских прямоугольных координат — соответствующая сетка наносится на лист карты. Когда вы работаете с листом карты в бумажном виде, вы можете определить координаты любой точки, проведя несложные измерения относительно линий сетки, измерить расстояния, углы и площади. Использование ГИС значительно упрощает рутинные операции, поскольку все объекты в ГИС-проекте помещены в некоторую систему координат. Но простые растровые изображения таким функционалом не обладают. Чтобы использовать растр в геоинформационной среде, необходимо выполнить его привязку — то есть задать соотношение между внутренней системой координат растра (связанной с его строками и столбцами) и «внешней» проецированной системой координат.
Для выполнения привязки нам нужно определить несколько пар точек, для которых известны и «внутренние», и «внешние» координаты. Пересечения линий сетки прямоугольных координат идеально подходят в этом качестве, поскольку их «внешние» координаты подписаны вдоль рамок карты.
Определите прямоугольные координаты пересечений линий сетки, ближайших к углам карты. Если какое-то из пересечений читается нечётко, возьмите одно из соседних.
В QGIS запустите инструмент для привязки растров («Растр» — «Привязка растров»)
- В окне привязки по умолчанию активен инструмент добавления опорных точек. С помощью мыши увеличьте изображение северо-западного угла карты, а затем щёлкните левой кнопкой мыши по пересечению линий сетки, координаты которого вы определили раньше. В появившемся окне введите координаты. Обратите внимание на следующие моменты:
- В проекции Гаусса-Крюгера ось X считается направленной на север, ось Y — на восток. В QGIS и большинстве других геоинформационных программ ось X направлена на восток, ось Y — на север. Поменяйте местами координаты при необходимости
- Координаты, подписанные вдоль рамки карты, измеряются в километрах. Координаты, которые вам нужно ввести для привязки, должны быть измерены в метрах.
Сверьтесь с изображением ниже, чтобы убедиться, что вы всё делаете правильно:
Чтобы включить подписи идентификаторов точек, зайдите в «Параметры» — «Настройки привязки растров»
Аналогичным образом добавьте остальные контрольные точки по углам карты.
Добавьте ещё одну опорную точку в центре карты. Координаты определите самостоятельно.
Изучите информацию, которая отображается в таблице внизу. «X источника» и «Y источника» — это координаты точек привязки на исходном растре, измеренные в пикселях растра от левого верхнего угла. «X назначения» и «Y назначения» — координаты на местности. В столбцах «dX», «dY» и «Невязка» будут отображаться несхождения в определении координат. Сейчас там отображаются нули, поскольку мы не задали настройки трансформации.
Откройте интерфейс настроек трансформации растра, нажав на кнопку . Изучите доступные параметры.
Самостоятельно определите значение параметра «Тип трансформации».
Параметр «Метод интерполяции» установите в значение «Линейная»
Чтобы установить целевую систему координат, нажмите кнопку
Нам необходимо выбрать целевую систему координат. Мы помним, что топографические карты составляются в проекции Гаусса-Крюгера, однако для задания системы координат этого недостаточно. Система координат состоит из двух основных элементов: геодезической основы и параметров проектирования. В геодезическую основу входят параметры вспомогательной поверхности, аппроксимирующей земной шар (для эллипсоида: большая полуось и эксцентриситет), а также ряд параметров, определяющих положение этой фигуры в теле Земли. В параметры проектирования входит вид проекции (например, равноугольная поперечно-цилиндрическая) и конкретные параметры проектирования (например, средний меридиан или широта начала отсчёта долгот).
Существуют десятки эллипсоидов и сотни проекций, что в сочетании с конкретными значениями параметров даёт десятки тысяч возможных систем координат. Чтобы систематизировать это множество, существуют базы данных о системах координат. Крупнейшая из открытых баз создана под эгидой European Petroleum Survey Group (EPSG). Системы координат, соответствующие отечественным топографическим картам, также включены в эту базу (причём в нескольких вариантах)
Найдите в списке систем координат две записи: Pulkovo 1942 / Gauss-Kruger zone 8 и Pulkovo 1942 / Gauss-Kruger 8N . Сравните их параметры. В чём различие между двумя этими системами координат? Какую из них следует использовать в нашем упражнении? Выберите нужную систему координат и закройте окно выбора проекции
Закройте окно настроек привязки. Привязка не запустится автоматически: чтобы запустить процедуру, нужно нажать кнопку . Но пока не делайте этого.
Изучите величины ошибок, которые отображаются в таблице внизу. Величины ошибок отображаются в пикселах исходного растра. Обычно в практике привязки стараются добиться, чтобы ошибка не превышала 0,5 пиксела (с рядом оговорок). В нашем же случае исходный картографический материал отсканирован с невысоким разрешением, и такой точности достичь не получится. Для учебного упражнения достаточно добиться точности порядка 1,5 пиксела. Если точность привязки какой-либо из ваших точек значительно превышает это пороговое значение, удалите точку и установите её заново.
Когда вам удастся добиться точной привязки, нажмите кнопку . QGIS выполнит привязку и попытается добавить изображение к карте. Если при этом появится всплывающее окно выбора параметров трансформации, нажмите ОК.
Закройте окно привязки растров. Окно QGIS примет вид, аналогичный представленному ниже:
- Сохраните проект QGIS в рабочую директорию ( Ex01 ). Сделайте снимок экрана и вставьте его в отчёт.
Снимок экрана №1. Привязанная топографическая карта в окне QGIS .
5.3 Добавление базовой карты
Мы успешно привязали растровое изображение топографической карты, и теперь можем определять координаты, измерять расстояния и площади по карте при помощи простого ГИС-инструментария. Однако наша карта пока «висит в воздухе». Давайте сравним её с изображением какой-нибудь популярной Интернет-карты, например, Яндекс.Карт или OpenStreetMap.
Базовые карты из сети интернет могут быть загружены в настольный ГИС-пакет с использованием протокола WMS, WFS или аналогичных. На базовом уровне знакомства с ГИС нас не интересуют технические подробности реализации, поэтому мы воспользуемся простым инструментом загрузки — подключаемым модулем (плагином) QuickMapService. Он позволяет добавлять многие карты из сети интернет «в один клик».
- Модуль QuickMapService не включается в базовую поставку QGIS, его нужно установить отдельно. Для этого откройте меню «Модули» — «Управление и установка модулей…». Дождитесь, пока сведения о модулях загрузятся.
В открывшемся окне управления модулями начните вводить QuickMap. в строке поиска. Модули будут отфильтрованы по названию.
Выберите модуль QuickMapServices в списке и нажмите кнопку «Установить» внизу окна. Дождитесь, пока модуль загрузится и установится.
- После установки модуля его инструменты появляются в меню «Интернет» — «QuickMapServices». По умолчанию доступно небольшое число источников, но его можно увеличить. Для этого перейдите в настройки модуля и на вкладке «Загрузить сервисы» нажмите «Получить дополнительные источники данных». Подождите, пока дополнительные источники будут добавлены к модулю, и закройте настройки
Теперь вы можете добавить какую-нибудь базовую карту из сети Интернет, просто выбрав её в списке. Добавьте карту Яндекса в проект.
Включая и отключая изображение топоографической карты в панели слоёв, оцените, насколько хорошо она ложится на базовую карту Яндекса.
Для любознательных: обратите внимание на настройки прозрачности слоёв, а также на подключаемый модуль MapSwipe Tool.
Удалите из проекта карту Яндекса и загрузите любую другую базовую карту на ваш выбор.
Сохраните проект и сделайте снимок экрана.
Снимок экрана №2. Привязанная топографическая карта на фоне базовой карты из Интернета .
5.4 Оценка точности привязки
В реальных задачах бывает необходимо не только привязать растр, но и оценить точность привязки. Для этого часть опорных точек переводятся в класс контрольных. Эти точки не участвуют в вычислении параметров преобразования, поэтому по ним можно проверять абсолютную точность привязки.
Создайте новый проект QGIS.
Начните выполнять привязку растра o37-111e.jpg . Разместите пять опорных точек, как в предыдущем разделе упражнения. Настройте параметры трансформации. Самостоятельно определите, какую систему координат использовать. Укажите, что результирующий файл должен быть записан в каталог referenced_images .
Теперь добавьте ещё четыре опорные точки между «угловыми» и «центральной». Можно воспользоваться подписями вдоль линий сетки на карте.
Когда вы добавите дополнительные точки, отключите их: снимите галочки в таблице возле их названий.
- Оцените максимальную величину ошибки по контрольным точкам. Запишите её с точность до второго знака после запятой в отдельный текстовый файл.
Обратите внимание, что величина ошибки измеряется в пикселах. Чтобы получить абсолютное значение, нам нужно умножить эту величину на размер пиксела на местности
Запустите привязку растра. Добавьте привязанный растр в проект QGIS, если это не произошло автоматически.
Откройте свойства добавленного растра и выясните (на вкладке «Информация»), каков размер его пикселя в целевой системе координат
Рассчитайте максимальное значение абсолютной ошибки привязки.
Не закрывайте QGIS после окончания этой части упражнения. В следующей части мы будем работать с этой же территорией
5.5 Использование координат с карты
Топографические карты — наиболее удобный материал для привязки, поскольку нужные системы координат известны, а точные значения координат подписаны у линий сетки. Однако в большинстве случаев привязка требуется таким материалам, у которых ни система координат, ни точные их значения не известны наперёд — например, архивные аэрофотоснимки и космические снимки. В таком случае придётся не вводить координаты вручную, а считывать их значения из окна карты.
Добавьте к проекту любую базовую карту, по которой вам удобно ориентироваться, и отключите слой o37-111e_modified .
Переместитесь по карте на юг, в окрестности г. Долгопрудный. Область, с которой вам предстоит работать — район между парком культуры и отдыха (ПКиО) и каналом им. Москвы
Откройте модуль привязки и загрузите в него изображение Долгопрудный 001.jpg . Это фрагмент аэрофотоснимка, полученного приблизительно 20-30 лет назад.
Добавьте или включите мозаику космических снимков в качестве базовой карты.
- Изображение на аэрофотоснимке повёрнуто относительно изображения базовой карты. Чтобы облегчить опознавание опорных точек, мы можем повернуть изображение в основном окне QIGS. Для этого найдите в нижней правой части окна настройку «Угол поворота» и введите значение -38 .
- Начните расстановку контрольных точек. Установите первую точку нажатием левой кнопки мыши. Затем, когда появится окно ввода координат, не вводите координаты вручную, а нажмите кнопку «С карты». Окна привязки и ввода координат будут свёрнуты, давая возможность найти соответственную точку на карте. Найдя точку, кликните по ней левой кнопкой мыши. Координаты точки (в системе координат проекта) будут считаны с карты и подставлены в интерфейс ввода.
Настройте параметры привязки. Используйте проективное преобразование.
Проверьте ошибки положения точек. Отключите точки с самыми большими ошибками. Поскольку референсное изображение имеет более низкое разрешение, в этом упражнении не нужно добиваться высокой точности привязки. Ошибка порядка 10 пикселов может считатсья приемлемой.
Запустите привязку. Когда привязанное изображение добавится в проект, сравните его с базовой картой.
Чтобы убрать чёрные рамки вокруг изображения, можно воспользоваться следующим способом. Откройте настройки слоя привязанного снимка, перейдите на вкладку «Прозрачность» и введите дополнительное значение «нет данных», равное 0. QGIS будет воспринимать пиксели изображения, имеющие нулевую яркость, как «нет данных», и скроет их при визуализации.
Верните угол поворота окна карты в исходное значение (0°)
Сохраните проект QGIS и сделайте снимок экрана
Снимок экрана №3. Привязанный аэрофотоснимок .
5.6 Привязка с использованием линейной трансформации
Обычно, говоря о привязке, мы рассматриваем исторические картографические изображения или материалы дистанционного зондирования. Современные геоинформационные продукты, как правило, поставляются в виде, непосредственно пригодном для использования в ГИС-среде. Но иногда возникает необходимость выполнять привязку и современных материалов — например, схем и эскизов, вычерченных поверх современных материалов. В таком случае для привязки изображения можно обойтись двумя-тремя опорными точками.
Изучите изображение 20_okrugov_27-04-2020_13-32-09.jpg . На какой основе оно составлено?
Откройте проект QGIS с привязкой на окрестности города Кинешма, который вы создавали в первой части этого упражнения.
Добавьте из набора QuickMapServices ту базовую карту, на основе которой составлено изображение из п. 1
Откройте свойства слоя базовой карты и перейдите на вкладку «Источник». Определите, в какой системе координат он поставляется. Запомните или запишите эту систему координат. QGIS использует базу данных о системах координат EPSG, поэтому достаточно запомнить только EPSG-код
Закройте свойства слоя и откройте свойства проекта («Проект» — «Свойства…» или Ctrl+Shift+P ). Перейдите на вкладку «Система координат».
Обратите внимание, что система координат базовой карты отличается от системы координат проекта. Все основные современные ГИС-пакеты поддерживают так называемое «перепроецирование на лету» — если в проект добавлено несколько источников с разными системами координат, то программа автоматически пересчитввает координаты, приводя всё к единой системе.
Измените систему координат проекта на ту систему, которая используется в слое базовой карты. Обратите внимание, как изменилось изображение топографической карты.
Отключите изображение топографической карты.
Запустите модуль привязки растров и добавьте в него файл 20_okrugov_27-04-2020_13-32-09.jpg .
Увеличьте изображение в окне QGIS таким образом, чтобы детализация базовой карты соответствовала детальности основы с привязываемого изображения.
Для самопроверки: такая детальность соотвествует масштабу порядка 1:60 000.
Добавьте две опорные точки в разных углах изображения.
Настройте параметры привязки следующим образом:
- Тип трансформации: линейная
- Метод интерполяции: линейная
- Также включите опцию «Только создать World-файл». В результате применения этой опции привязка не создаст новое изображение, а вместо этого создаст файл с параметрами привязки
- Запустите привязку изображения. Когда изображение будет добавлено в проект, сохраните проект и сделайте снимок экрана.
Снимок экрана №4. Привязанное изображение схемы избирательных округов. .
Примечание: в последующих упражнениях мы не будем указывать вам, когда нужно сохранять проект. Вы будете делать это самостоятельно.
В проводнике Windows перейдите в папку raw_images и найдите файл 20_okrugov_27-04-2020_13-32-09.wld . Это World-файл. Откройте его с помощью блокнота и изучите его содержимое. Самостоятельно найдите и изучите информацию о том, какие коэффициенты в нём представлены.
У меня много файлов .TAB открыто в QGIS, и я хочу сохранить их в .SHP, чтобы я мог работать с ними в ArcMap.
- Ищите OGR2OGR
- Я думал, что это встроено в QGIS? Может я ошибаюсь.
- Возможно, использовать ogr2ogr как текстовый инструмент вместо того, чтобы использовать его в QGIS. Это открывает возможности для преобразования без открытия QGIS - и с возможностью запускать последовательность таких инструкций, конвертируя набор файлов один за другим. Это будет хорошо работать, если у вас есть простой способ получить список имен файлов (например, если они представляют собой какую-то последовательность). Если мы рассмотрим пять или шесть слоев, тогда будет так же легко сделать один за другим с помощью QGIS, но если мы говорим о гораздо большем количестве слоев / файлов, это может стоить усилий. Проверьте файлы bat в Windows, чтобы сохранить последовательность текстовых команд.
Попробуйте эту Фриду:
Создайте папку для хранения ваших шейп-файлов (например, я создал папку /tmp/data/ , Я использую GNU / Linux).
В QGIS откройте консоль QGIS Python.
Напишите следующую строку, отредактировав правую часть, чтобы она соответствовала полному пути к вашей папке (убедитесь, что вы включили завершающую косую черту / обратную косую черту):
Скопируйте следующие строки в консоль QGIS Python:
Пару раз нажмите Enter.
Теперь у вас должны быть шейп-файлы в папке, созданной на шаге 1.
Если у вас возникнут проблемы, сообщите мне свою ОС и полный путь к вашей папке.
- 1 @gcarrillo, тебе стоит! Это очень полезно и избавляет от лишних хлопот.
- Плагин кажется хорошей идеей! Также был бы полезен аналогичный скрипт для растров. Мне кажется, что я могу "сохранить" пространственное расположение растров, предназначенных для MapInfo, только открыв их в QGIS и сохранив как файлы .tif (GeoTIFF). Похоже, что ArcMap не может получить доступ к пространственной информации растров, если я этого не сделаю.
Для растрового слоя используйте QgsRasterFileWriter
€: Вы можете найти более подробный пример в Поваренной книге.
- неужели нет возможности сделать это через графический интерфейс?
- @chrismarx "сохранить как"? не боюсь (или, по крайней мере, я не знаю).
Небольшое дополнение: если вы хотите изменить CRS экспортируемого файла и добавить еще префикс и суффикс, вы можете изменить сценарий следующим образом:
31370 можно заменить на EPSG той CRS, в которой должен быть экспортированный файл.
Читайте также: