Завантаження даних OpenStreetMap у QGIS?


36

У QGIS 1.8 я використовував плагін openstreetmap для запиту даних із сервера або відкрив .osm XML-файл, який створив 3 шари (полігони, полілінії та точки) у QGIS.

Це було чудово (надайте або візьміть 64-бітову помилку, яка сильно впливає на свіжовизначену область, над якою я працюю), але як це зробити в QGIS 2.x?

Я не можу знайти оновлену документацію про це.

У векторному меню я намагався імпортувати з OSM-серверів, отримую файл .osm, але потім я застряг. Існує параметр меню для завантаження XML-файлу, але він створює просторовий db, який, мабуть, має лише таблиці негеометрії, коли я намагаюся додати його як шар простору. Якщо я відкрию таблицю атрибутів, я можу побачити ідентифікатори вузлів, способи тощо, але я не можу зрозуміти, як реально їх використовувати.

Я також спробував додати векторний шар із XML-файлу .osm. У мене з’являється вікно gpsbabel, яке нічого не показує, а потім нарешті недійсне повідомлення джерела даних у QGIS.


2
Томе, я написав покрокові інструкції, щоб отримати дані OSM в QGIS. Сподіваюся, що це просто дотримуватися новачкам. qgistutorials.com/uk/docs/downloading_osm_data.html
spatialthoughts

Ось гідний стиль (з приємними інструкціями щодо налаштування): github.com/yannos/Beautiful_OSM_in_QGIS Призначений для PostGIS (а не Spatialite).
kontextify

Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться. - З огляду
csk

Відповіді:


40

Оновлення для QGIS 3.x : старий імпортер ОСМ з QGIS 2 був скинутий у QGIS 3 через безліч невирішених помилок. Плагін QuickOSM також дозволяє читати ОСМ-сировинні файли. Ви можете використовувати користувальницький шар - Додати шар - Додати замість векторного шару. У цьому випадку дані OSM відкриваються за допомогою GDAL, як це документально підтверджено http://gdal.org/drv_osm.html


У QGIS 2.x , 3 етапи

  1. Отримайте файл OSM, його можна отримати за допомогою josm, overpass або будь-якого іншого джерела. Він повинен бути дійсним xml. Ви також можете завантажити його з qgis Vector> OpenStreetMap> Завантажити меню даних OSM , але іноді це не дає результату. Я б рекомендував використовувати турбонаддув .
  2. Вектор> OpenStreetMap> Імпорт топологія з XML , це як ви сказали , буде виробляти SpatiaLite бази даних з таблицями без геометрії. Я думаю, це топологія.
  3. Нарешті, ви можете отримати дані за допомогою Vector> OpenStreetMap> Експорт топології в Spatialite , тут вам потрібно надати db-файл, зроблений вище, і так само, як у qgis 1.8, ви будете мати можливість вибору точок, ліній чи багатокутників . Нижче в розділі експортованих тегів ви можете завантажити всі теги, що містяться у файлі, та вибрати лише ті, які вам потрібні. Це додаткова функція, ніж у 1.8.

Шар додається до карти, якщо вам потрібні всі вузли, способи повторити крок 3 з іншими параметрами.

http://wiki.openstreetmap.org/wiki/QGIS#QGIS2_OpenStreetMap_Vectors


4
Це відчувається неймовірно складно, але це працює. Для наочності після кроку 3 вам все-таки потрібно додати шар простору, підключитися до створеного вами db та вибрати шар (и), створений на кроці 3, щоб нарешті побачити результат. Спасибі за вашу допомогу!
Лоран S

Для мене шари були автоматично створені та додані. З'єднання з базою даних було встановлено на кроці 2 (якщо ви не зняли це з нього).
AndreJ

15

Я виявив, що завантажувати дані 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 ми можемо завантажувати точки, лінії та мультиполігони за допомогою Add SpatiaLite Layer. Коли ми завантажуємо просторові таблиці, виникають деякі проблеми:

  • Сухого полігону немає. Натомість є "лінії берегової лінії".
  • Більшість річкових багатокутників відсутні. Натомість є функції лінії «берега річки».

Створення відсутніх річкових багатокутників не є великою справою:

  1. виберіть усі лінії, де водний шлях = берег річки.
  2. використовуйте інструмент «Полігонізація» з набору інструментів для обробки, щоб автоматично створювати багатокутники з областей, огороджених вибраними лініями берега річки. (Зверніть увагу, що Обробка за замовчуванням працює лише на обраних функціях, але це налаштування можна змінити в налаштуваннях Обробки.)

Створення сухопутного полігону (або морського полігону, якщо ви хочете, що з якихось причин) є дещо більше, тому що більшість часу берегова лінія не буде закрита з тієї простої причини, що ми часто вирізаємо шматок землі з головного континенту . Тому, перш ніж ми зможемо скористатись інструментами Полігонізація, нам доведеться закрити область. Для цього я пропоную спершу вибрати берегову лінію за допомогою "other_tags" LIKE '% "natural" => "берегова лінія"% "та створити новий шар із цього вибору (збережіть вибір як…) та відредагуйте його (не забувайте щоб увімкнути оснащення!), щоб додати лінії для закриття області. Потім полігонізуйте.


Якщо ви працюєте з досить надійним комп'ютером і хочете, щоб етап ogr2ogr завершився до наступного льодового періоду, додайте --config OGR_SQLITE_SYNCHRONOUS OFF.
scruss

6

Якщо плагін вам не подобається, заберіть потрібні дані OSM за допомогою API Add Vector LayerOverpass і додайте результат до QGIS за допомогою ( All filesфільтр емалювання ).

QGIS 2.0 використовує імпорт OSG-програми Ogr2ogr GDAL 1.10, який робить хорошу роботу.

Підтримка відносин здається кращою, ніж плагін на даний момент.

Просто переконайтеся, що ви завантажуєте шляхи та відносини повністю , тобто всі вузли способів та всіх членів відносин, з усіма їх вузлами.


4

Знаєте, вам не потрібно вносити дані в SpatialLite. Ви можете просто:

  1. Завантажте дані (Вектор> OpenStreetMap> Завантажити дані, створює .osm файл)
  2. Завантажте дані (.osm файл) у вигляді векторного шару (Шар> Додати векторний шар). Після вибору файла він запитає, які шари ви хочете додати (оскільки GDAL створює окремі файли для кожного типу: Point, Line, MultiLine, MultiPolygon, GeomCollection). Виберіть те, що вам потрібно, і завантажте його.

Це працює певним чином, але, схоже, не розділяти шари на основі тегів. Тому в основному дороги та річки опиняються в одному шарі лінії, що не дуже корисно, якщо ви хочете провести аналіз на отриманих даних.
Лоран S

З вашого запитання не було зрозуміло, що ви робите з даними, коли вони були імпортовані. Звичайно, ви можете вибрати будь-які функції, які ви хочете, з даних QGIS. Як було сказано вище, якщо ви знаєте, що хочете лише певних даних (і це не занадто велика область), завантаження даних за допомогою Overpass було б, мабуть, краще, оскільки ви можете попередньо вибрати лише певні функції. Я вважаю, що Overpass Turbo є зручним для користувача способом розробки запитів. Ось приклад усіх автомобільних доріг у обмежувальній коробці: overpass-turbo.eu/s/2VX
neuhausr
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.