В QGIS 1.8 я использовал плагин openstreetmap для запроса данных с сервера или открытия XML-файла .osm, который создал 3 слоя (многоугольники, полилинии и точки) в QGIS.
Это было здорово (дайте или возьмите 64-битную ошибку, которая сильно влияет на только что отображенную область, над которой я работаю), но как мне это сделать в QGIS 2.x?
Я не могу найти обновленную документацию об этом.
В векторном меню я попытался импортировать с серверов osm, я получил файл .osm, но потом я застрял. Есть пункт меню для загрузки XML-файла, но он выдает пространственную базу данных, которая, очевидно, имеет только негеометрические таблицы, когда я пытаюсь добавить его в качестве пространственного слоя. Если я открою таблицу атрибутов, я смогу увидеть идентификаторы узлов, пути и так далее, но я не могу понять, как на самом деле их использовать.
Я также попытался добавить векторный слой из файла .osm XML. Я получаю окно gpsbabel, которое ничего не показывает, и, наконец, сообщение о недействительном источнике данных в QGIS.
источник
Ответы:
Обновление для QGIS 3.x : старый импортер OSM из QGIS 2 был удален в QGIS 3 из-за большого количества неразрешенных ошибок. Плагин QuickOSM также позволяет читать файлы osm raw. Вместо этого вы можете использовать пользовательский слой - Добавить слой - Добавить векторный слой. В этом случае данные OSM открываются с помощью GDAL, как описано в http://gdal.org/drv_osm.html.
В QGIS 2.x есть 3 шага
Слой добавляется на карту, если вы хотите, чтобы все узлы, таким образом, вы можете повторить шаг 3 с другими параметрами.
http://wiki.openstreetmap.org/wiki/QGIS#QGIS2_OpenStreetMap_Vectors
источник
Я нашел, что загрузка данных OSM с помощью плагина и прохождение операций импорта и экспорта очень утомительны. Вот почему я написал другое решение: http://anitagraser.com/2014/05/31/a-guide-to-googlemaps-like-maps-with-osm-in-qgis/
Резюме:
Необработанные файлы OSM могут быть довольно большими. Вот почему определенно предпочтительнее загружать сжатый двоичный формат .pbf вместо формата XML .osm. В качестве источника загрузки я бы порекомендовал Geofabrik .
Для первого этапа предварительной обработки: извлекая интересующую область, мы можем использовать Осмос:
C:\Users\anita_000\Geodata\OSM_Noirmoutier>..\bin\osmosis.bat --read-pbf pays-de-la-loire-latest.osm.pbf --bounding-box left=-2.59 bottom=46.58 right=-1.44 top=47.07 --write-xml noirmoutier.osm
Хотя QGIS также может загружать файлы .osm, я обнаружил, что производительность и доступ к атрибутам значительно улучшаются, если файл .osm конвертируется в пространственный.
C:\Users\anita_000\Geodata\OSM_Noirmoutier>ogr2ogr -f "SQLite" -dsco SPATIALITE=YES noirmoutier.db noirmoutier.osm
В QGIS мы можем загружать точки, линии и мультиполигоны, используя Добавить слой SpatiaLite. Когда мы загружаем таблицы пространственных объектов, возникают некоторые проблемы:
Создание пропущенных речных полигонов не имеет большого значения:
Создание наземного полигона (или морского полигона, если вы предпочитаете это по какой-то причине) немного сложнее, так как большую часть времени береговая линия не будет закрыта по той простой причине, что мы часто вырезаем кусок земли из основного континента. , Поэтому, прежде чем мы сможем использовать инструменты Polygonize, мы должны закрыть область. Чтобы сделать это, я предлагаю сначала выбрать береговую линию, используя "other_tags" LIKE '% "natural" => "coastline"%', создать новый слой из этого выделения (сохранить выделение как…) и отредактировать его (не забудьте чтобы включить привязку!), чтобы добавить линии, чтобы закрыть область. Тогда полигонизируйте.
источник
--config OGR_SQLITE_SYNCHRONOUS OFF
.Если вам не нравится плагин, извлеките необходимые данные OSM с помощью Overpass API и добавьте результат в QGIS с помощью
Add Vector Layer
(включающегоAll files
фильтра).QGIS 2.0 использует импортер OSM из ogr2ogr из GDAL 1.10, который хорошо работает.
Поддержка отношений, кажется, лучше, чем плагин в настоящее время.
Просто убедитесь, что вы загружаете пути и отношения полностью , то есть все узлы путей и все члены отношений со всеми их узлами.
источник
Вы знаете, вам не нужно помещать данные в SpatialLite. Вы можете просто:
источник