W QGIS 1.8 użyłem wtyczki openstreetmap do żądania danych z serwera lub otworzyłem plik .osm XML, który wytworzył 3 warstwy (wielokąty, polilinie i punkty) w QGIS.
To było świetne (daj lub weź 64-bitowy błąd, który ma duży wpływ na świeżo zmapowany obszar, nad którym pracuję), ale jak to zrobić w QGIS 2.x?
Nie mogę znaleźć żadnej zaktualizowanej dokumentacji na ten temat.
W menu wektorowym próbowałem importować z serwerów osm, otrzymuję plik .osm, ale utknąłem. Istnieje opcja menu służąca do ładowania pliku XML, ale tworzy on przestrzenną bazę danych, która najwyraźniej ma tabele inne niż geometria, gdy próbuję dodać go jako warstwę przestrzenną. Jeśli otworzę tabelę atrybutów, zobaczę identyfikatory węzłów, sposoby i tak dalej, ale nie jestem w stanie wymyślić, jak z nich korzystać.
Próbowałem także dodać warstwę wektorową z pliku XML .osm. Dostaję okno gpsbabel, które nic nie pokazuje, a na koniec komunikat o nieprawidłowym źródle danych w QGIS.
źródło
Odpowiedzi:
Aktualizacja dla QGIS 3.x : Stary importer OSM z QGIS 2 został upuszczony w QGIS 3 z powodu wielu nierozwiązanych błędów. Wtyczka QuickOSM umożliwia również odczytanie plików surowych OSM. Zamiast tego możesz użyć warstwy użytkownika - Dodaj warstwę - Dodaj warstwę wektorową. W takim przypadku dane OSM są otwierane za pomocą GDAL zgodnie z dokumentacją http://gdal.org/drv_osm.html
W QGIS 2.x są 3 kroki
Warstwa zostanie dodana do mapy, jeśli chcesz wszystkie węzły, możesz powtórzyć krok 3 z innymi opcjami.
http://wiki.openstreetmap.org/wiki/QGIS#QGIS2_OpenStreetMap_Vectors
źródło
Zauważyłem, że pobieranie danych OSM za pomocą wtyczki i przeprowadzanie importu i eksportu jest bardzo uciążliwe. Dlatego napisałem inne rozwiązanie: http://anitagraser.com/2014/05/31/a-guide-to-googlemaps-like-maps-with-osm-in-qgis/
Podsumowanie:
Surowe pliki OSM mogą być dość duże. Dlatego zdecydowanie lepiej jest pobrać skompresowany binarny format .pbf zamiast formatu XML .osm. Jako źródło pobierania polecam Geofabrik .
W pierwszym etapie wstępnego przetwarzania: wyodrębnieniu interesującego nas obszaru, możemy użyć Osmozy:
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
Chociaż QGIS może również ładować pliki .osm, zauważyłem, że wydajność i dostęp do atrybutów znacznie się poprawią, jeśli plik .osm zostanie przekonwertowany na spatialite.
C:\Users\anita_000\Geodata\OSM_Noirmoutier>ogr2ogr -f "SQLite" -dsco SPATIALITE=YES noirmoutier.db noirmoutier.osm
W QGIS możemy ładować punkty, linie i wieloboki za pomocą Add Layer SpatiaLite. Podczas ładowania tabel przestrzennych pojawiają się pewne problemy:
Tworzenie brakujących wielokątów rzecznych nie jest wielkim problemem:
Tworzenie wielokąta lądowego (lub wielokąta morskiego, jeśli wolisz, z jakiegoś powodu) jest nieco bardziej zaangażowane, ponieważ przez większość czasu linia brzegowa nie będzie zamknięta z tego prostego powodu, że często wycinamy kawałek ziemi z głównego kontynentu . Dlatego zanim będziemy mogli korzystać z narzędzi Poligonizowania, musimy zamknąć obszar. Aby to zrobić, sugeruję najpierw wybrać linię brzegową za pomocą „other_tags” LIKE '% „natural” => „coastline”% ”i utworzyć nową warstwę z tego wyboru (zapisz wybór jako…) i edytuj ją (nie zapomnij aby włączyć przyciąganie!), aby dodać linie, aby zamknąć obszar. Następnie poligonizuj.
źródło
--config OGR_SQLITE_SYNCHRONOUS OFF
.Jeśli nie podoba ci się wtyczka, pobierz potrzebne dane OSM za pomocą Overpass API i dodaj wynik do QGIS za pomocą
Add Vector Layer
(All files
filtr enabeling ).QGIS 2.0 korzysta z importera ogr2ogr OSM GDAL 1.10, który wykonuje dobrą robotę.
Obsługa relacji wydaje się obecnie lepsza niż wtyczka.
Po prostu upewnij się, że pobierasz całkowicie sposoby i relacje , czyli wszystkie węzły tych dróg i wszystkich członków relacji ze wszystkimi ich węzłami.
źródło
Wiesz, nie musisz umieszczać danych w SpatialLite. Możesz po prostu:
źródło