Pobieranie danych OpenStreetMap

43

Czy istnieje prosty sposób pobierania danych z OpenStreetMap (OSM)?

Na przykładzie Ameryki Północnej zdaję sobie sprawę, że Cloudmade (Cloudmade nie zapewnia już pobierania OSM) i Geofabrik ( http://download.geofabrik.de/osm/north-america/ ) oba zapewniają pobieranie, ale pliki są ogromne (0,5 GB - 4 GB). Próbowałem również użyć paska narzędzi QGIS-OSM, ale nie miałem szczęścia, ponieważ podobnie jak w przypadku strony internetowej OSM obszar, który możesz wybrać, jest bardzo mały. Ilość danych, które chcę pobrać, jest na poziomie miasta.

Wreszcie, czy łatwo jest korzystać z danych OSM? Jeśli zdecyduję się pobrać, OpenStreetMap XML Datanie mogę otworzyć plików osm.xml przy użyciu QGIS (nawet przy użyciu funkcji importu paska narzędzi QGIS-OSM). Zastanawiam się, czy brakuje mi bardziej oczywistego sposobu radzenia sobie z danymi.


Chcę tylko wskazać bardzo przydatny klon StackExchange, aby uzyskać pomoc w kwestiach związanych z OSM! http://help.openstreetmap.org/

djq
źródło
1
ale pliki są ogromne? (0,5 gb - 4 gb) nie w świecie GIS - 5 TB + robi się normalnie
Mapperz
przepraszam - ogromny jak na moją chudą maszynę. Nie tyle 0,5 GB, ale 4 GB jest dla mnie niemożliwe do zarządzania!
djq
Zbadałem to trochę więcej, uważam, że dane dostarczone przez geofabrik są bardziej wyczerpujące niż w chmurze.
djq
1
@Nathanus Przyznaję, że właśnie się zarejestrowałem ... To prawda, ale tak naprawdę koncentruje się na każdym drobnym szczególe na temat OSM, z których wiele jest związanych z programowaniem, a nie specyficznych dla GIS. Chociaż gdyby istniały podwitryny, byłoby idealnie. Czcionki tutaj są o wiele wyraźniejsze!
djq
1
@djq witryna pobierania CloudMade zwraca teraz 404 - być może została wycofana ?
Stephen Lead

Odpowiedzi:

33

JOSM

Być może najłatwiejszą odpowiedzią na obie części pytania jest użycie JOSM. Edytor Java OpenStreetMap . Łatwo jest pobierać dane i „używać” danych.

Do pobierania JOSM zapewnia prosty interfejs, który pozwala wybrać prostokątny obszar do pobrania, jednak pobiera go za pośrednictwem interfejsu API edycji. Spowoduje to odrzucenie każdego żądania, które jest o wiele za duże, a jeśli będzie trochę za duże, będzie długo o tym myśleć. Zasadniczo całe miasto jest o wiele za duże, ale możesz uzyskać sporą część danych, żądając kilku prostokątnych obszarów.

W przypadku „używania” danych JOSM pozwala zobaczyć dane i porządnie przeszukać wszystkie tagi. Funkcja wyszukiwania jest dość potężna, umożliwiając wybieranie elementów z określonymi znacznikami, ale poza tym tak naprawdę zależy od tego, jaki rodzaj „użycia” masz na myśli. Możesz do pewnego stopnia skonfigurować sposób, w jaki JOSM wyświetla dane, ale dla ładnie wyglądających map prawdopodobnie chciałbyś spojrzeć na narzędzia do renderowania zaprojektowane do pracy z plikami OSM. Możesz także spojrzeć na konwersję, np. Na plik kształtu , ale pamiętaj, że dane są ... inne ... od tego, do czego możesz być przyzwyczajony, więc ta konwersja jest zawsze nieco stratna.

Na marginesie ... Chociaż jest to dość przyjemna przeglądarka danych, głównym celem JOSM jest bycie edytorem OpenStreetMap . Wystarczy kliknąć „Prześlij”, aby odesłać zmiany z powrotem do OpenStreetMap (musisz utworzyć konto OpenStreetMap). Jeśli jeszcze nie próbowałeś edytować OpenStreetMap, naprawdę powinieneś . Każdy, kto choć trochę interesuje się mapami, powinien spróbować. Dodaj swoją lokalną restaurację do mapy lub coś w tym stylu. Jest to jedyny sposób na właściwe zrozumienie OpenStreetMap i jest fajny!

Większe pliki

Co jeśli miasto jest zbyt duże, aby załadować je do JOSM? Istnieją inne opcje (jak poniżej), ale kiedy masz do czynienia z taką ilością danych, nie można uniknąć faktu, że będzie to trochę trudne do „użycia”. Naprawdę nie jesteś w sferze zabawy z małymi narzędziami GUI i korzystasz z GIS dla dużych zbiorów danych. Najłatwiejszym wejściem do tego (co nie jest wcale takie łatwe) byłoby prawdopodobnie załadowanie dużego pliku .osm do bazy danych PostGIS przy użyciu osm2pgsql , a następnie użycie narzędzi komputerowych GIS, aby go wyświetlić.

Wyciągi z miasta

Ta usługa download.bbbike.org oferuje gotowe pliki do pobrania dla niektórych miast na świecie.

Osmoza

Jeśli potrzebujesz innego miasta lub innej ramki granicznej, musisz zdobyć jedno z wymienionych wyżej masowych plików do pobrania ( wyciąg z kraju lub cała planeta ), a następnie wyciągnąć z niego kawałek.

Osmoza jest najczęściej stosowanym narzędziem do tego. Jest to narzędzie wiersza polecenia Java, które pozwala wyodrębnić ramkę ograniczającą w wierszu polecenia unix za pomocą czegoś takiego:

bzcat downloaded.osm.bz2 | osmosis\
  --read-xml enableDateParsing=no file=-\
  --bounding-box top=49.5138 left=10.9351 bottom=49.3866 right=11.201 --write-xml file=-\
  | bzip2 > extracted.osm.bz2

To pokazuje, jak zwykle uniknąłbyś zapełnienia dysku rozdętymi danymi XML, rozpakowując plik .bz2, przesyłając dane wyjściowe do osmozy, a następnie ponownie przesyłając wynikowy plik XML do pliku bzip.

Być może więc nie jest to zgodne z twoją definicją „łatwego”, ale osmoza jest przydatnym narzędziem do zrozumienia, jeśli chcesz manipulować dużymi plikami .osm. Musisz tylko znaleźć właściwe polecenie! (chyba dobry temat na inne pytanie)

Harry Wood
źródło
Użyłem JOSM - to bardzo miłe. Jednak interesują mnie duże ilości danych, zwykle całe miasto, którego nie mogę w nim zrobić.
djq,
Rozszerzyłem odpowiedź, aby przejść do niektórych opcji pracy z większymi plikami. Niestety nie tak łatwe, ale mam nadzieję, że to pomoże.
Harry Wood,
Dzięki @Harry. Skończyło się osmosisna Linuksie i działało dobrze. Obecnie chcę użyć tej konfiguracji w Win 7 i jestem podekscytowany widząc, że jest .exebzcat. Ostatni raz sprawdziłem, że nie ma. Niestety wydaje się, że nie ma łatwego sposobu korzystania osm2pgsqlz systemu Windows, w przeciwnym razie byłby to mój idealny wybór.
djq
24

Pobieranie OSM z QGIS na żądanie

wprowadź opis zdjęcia tutaj

http://mapperz.blogspot.com/2009/11/openstreetmap-data-on-demand-with.html

Mapperz
źródło
2
+1 Wow, to było prorocze! Odpowiedzieliście na to pytanie 16 miesięcy, zanim się pojawiło :-).
whuber
Tylko uwaga na ten temat - działa w bieżącej wersji QGIS, której używam (1.7), ale pozwala tylko na pobieranie bardzo małych obszarów.
djq
cytat z bloga Mapperz „Dane zostały pobrane bezpośrednio z Open Street Map Servers [najbardziej aktualne dane]. ** Istnieją ograniczenia obszarowe kontrolowane przez OpenStreetMap Servers, wtyczka ostrzeże Cię o tym problemie, jeśli będzie to wymagane”
Mapperz
@celenius: istnieje limit rozmiaru, ponieważ ta usługa sieciowa OSM jest przeznaczona do celów mapowania (tj. pobierania małych obszarów, edytowania ich i przesyłania z powrotem). Używanie go tylko do celów tylko do odczytu jest na ogół marne, ponieważ obciąża już przeciążoną infrastrukturę OSM.
Igor Brejc,
15

Prosta odpowiedź brzmi: nie, nie ma szybkiego i łatwego sposobu na zrobienie tego. Jeśli potrzebujesz danych na poziomie miasta dla całej Ameryki Północnej, będzie to ogromny plik. Jeśli chcesz mieć mniejszy obszar, CloudMade wykonuj stan według plików stanu. Moje notatki na temat tego procesu można zobaczyć na stronie http://ian01.geog.psu.edu/geoserver_docs/data/openstreetmap/osm.html, ale nie bawiłem się dobrze. Zacząłem patrzeć na Osmosis (http://wiki.openstreetmap.org/wiki/Osmosis), ale zabrakło mi czasu, zanim dostałem wiele do zrobienia, ale może to być rozwiązanie twojego problemu.

Jeśli chodzi o korzystanie z danych OSM, możesz albo wybrać ich niestandardowe / neogeogrpahy i użyć mapnik itp. Lub zaimportować dane do PostGIS i sprawić, by działało w niektórych odpowiednich narzędziach GIS.

Ian Turton
źródło
6

Sugerując Echoing @ iant, jeśli szukasz tylko danych z USA, zastanów się nad pobraniem warstwy stanu dla danego obszaru zainteresowań z Cloudmade ? A jeśli twoim obszarem zainteresowań może być tylko kilka danych o stanie, najprostszym sposobem wykorzystania tych danych byłoby pobranie wyciągów z plików shapefile ( przykład stanu Oregon ), których możesz użyć w praktycznie dowolnym popularnym programie GIS.

RyanDalton
źródło
Aktualizacja: Cloudmade już dawno minęło, ale obecnie usługa pobierania geofabrik oferuje pobieranie stanowe dla USA tutaj: download.geofabrik.de/north-america.html
Harry Wood
4

Prawdopodobnie najłatwiejszym i najczystszym sposobem pobierania danych OSM dla dowolnego obszaru mapy byłoby użycie jednego z serwerów OSMXAPI . Interfejs API OSMXAPI przeznaczony jest do dostępu tylko do odczytu do geo. dane (w przeciwieństwie do podstawowego API OSM, który jest zorientowany na edycję ). Umożliwia także pobieranie większych obszarów niż podstawowy interfejs API.

Jednym ze sposobów uzyskania dostępu do OSMXAPI jest użycie karty Eksport na stronie http://www.openstreetmap.org/ (wybierz przycisk „Dane XML OpenStreetMap” ).

Igor Brejc
źródło
Czy masz zalecany serwer? Próbowałem kilka i dostałem błędy przekroczenia limitu czasu (tak myślę). Od tamtej pory pracuję z kopią całego globu na lokalnym komputerze.
djq
Zwykle używam tego: open.mapquestapi.com/xapi/api/0.6 .
Igor Brejc
1
OSMXAPI zawsze było trochę dziwne i obecnie nie istnieje już jako działająca usługa. Najbliższym odpowiednikiem jest mocniejszy Overpass_API , ale jest kilka innych stron internetowych, które robią to zbyt extract.bbbike.org i export.hotosm.org
Harry Wood
3

Firma WeoGeo umożliwia teraz bezpłatne pobieranie danych OpenStreetMap. Możesz naszkicować kontur obszaru, dla którego chcesz uzyskać dane, i zostanie wygenerowany plik.

djq
źródło