Połącz prywatne dane shapefile z danymi OSM

11

tło

Pobrałem dane Alberta OSM z Geofabrik i uruchomię je na prywatnym serwerze Linux przy użyciu PostgreSQL 9.1, PostGIS 2.0, Mapnik 2.1.0, osm2pgsql, Apache 2, mod_tile, renderd i OpenLayers:

Dane zostały zaimportowane osm2pgsqlw następujący sposób:

osm2pgsql -W -K -S /usr/local/share/osm2pgsql/default.style -d osm alberta.osm.bz2

Problem

Dane OSM dla Alberty są niekompletne. Dostałem zestaw plików kształtów, który poprawia dane OSM:

City.dbf, City.prj, City.sbn, City.sbx, City.shp, City.shp.xml, City.shx

Plus dodatkowe pliki kształtów dla wiosek, obszarów miejskich, granic dzielnic miejskich i tak dalej. Pomyślnie zaimportowałem pliki shapefiles do PostgreSQL przy użyciu wtyczki pgAdmin . City.prjPlik opisuje jej rzut w następujący sposób:

GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]

Dane shapefile i dane OpenStreetMap (OSM) mają własną bazę danych, ale sądzę, że chcę zaimportować dane pliku shapefile do bazy danych OSM. (Jest to prywatny serwer i lokalna kopia danych OSM; danych pliku kształtu nie można legalnie udostępniać).

Aktualizacja nr 1

Dla jasności, pliki kształtów nie zawierają dróg: tylko granice gmin (które zdecydowanie nie są częścią danych OSM), miasta (niektóre z nich są częścią danych OSM) i granice miast dla większych miast (niektóre z nich mogą konflikt z danymi OSM).

Pytanie

Jak scalić dane pliku kształtu z danymi OSM, aby nowe miasta pojawiły się na mapie?

Uwaga: Moją główną troską jest rozwiązywanie zduplikowanych danych (np. Edmonton jest wymieniony zarówno w OSM, jak i pozyskanych plikach kształtowych).

powiązane linki

Dziękuję Ci!

Dave Jarvis
źródło
Załaduj swoje pliki shapefile do postgis przy użyciu tagów osm - wiki.openstreetmap.org/wiki/Canadian_tagging_guidelines#Naming, a następnie odśwież serwer kafelków, aby załadował wszystkie nowe funkcje jako dane w stylu osm.
Mapperz

Odpowiedzi:

5

Wprowadzenie

Będzie to prawdopodobnie wymagać znacznej ilości pracy ręcznej w celu wykrycia i usunięcia zduplikowanych danych. Kiedy wykrywasz i rozwiązujesz zduplikowane dane; będziesz chciał, aby oba źródła miały ten sam format geograficzny: plik kształtu, bazy danych PostGIS lub dane OSM.

Przepływ pracy

Poniższy przepływ pracy opiera się na posiadaniu obu źródeł danych jako OSM przed scaleniem i rozwiązaniem zduplikowanych danych.

Istnieje kilka opcji konwersji danych do OSM:

ZA]

  1. Konwertuj dane pliku kształtu do OSM, jak chcesz. Wersje ogr2ogr wydane w 2013 roku lub później (wersja 1.10 lub nowsza, IIRC) mogą również konwertować SHP na OSM. Jest też, ogr2osmjak zauważyłeś: istnieje kilka różnych wersji ogr2osm, bez względu na to, z której korzystasz - wolę pnormana , jest on najbardziej aktualny. Niezależnie od tego, upewnij się, że pliki tłumaczeń są zgodne z wersją ogr2osm, której używasz (dla uproszczenia te, z którymi się łączyłem, powinny być kompatybilne z wersją ogr2osm). Zobacz tutaj jako przykłady plików tłumaczeń zgodnych z pnorman's ogr2osm.

Upewnij się, że plik tłumaczenia jest kompletny ze wszystkimi informacjami, które chcesz w swoim pliku kształtu. Plik tłumaczenia przekonwertuje Twoje typy i atrybuty pliku shapefile na to, co OSM nazywa Tagami , które składają się z kluczy i wartości.

1a. uruchom ogr2osm.

  1. Otwórz josm , pobierz wtyczkę do konfuzji

  2. Twoje dane rządowe są teraz plikiem OSM. Otwórz josm, Plik> otwórz Twoje dane są tam jako warstwa.

  3. Jeśli masz już dane OSM przechowywane lokalnie na twoim komputerze, otwórz je w josm, otworzy się również jako nowa warstwa.

  4. Połączenie tych dwóch źródeł danych razem i rozwiązywania jest znany jako duplikaty danych conflation . Uruchom wtyczkę do konfuzji i rozwiąż wszystkie konflikty.

Jeśli w JOSM zabraknie pamięci (np. Przy użyciu dużych plików), rozdziel typy atrybutów i zakończ ten przepływ pracy wiele razy, każdy z innym rodzajem danych (np. Granice i wykorzystanie terenu; autostrady; budynki), a następnie w końcu scal pliki osm razem za pomocą osmium lub innego narzędzia.

B. JOSM może również czytać pliki shapefile, chociaż obsługa SHP nie jest doskonała i ta metoda zakłada, że ​​plik shapefile można załadować całkowicie do pamięci ...

  1. Uruchom JOSM.
  2. Otwórz plik kształtu (np filename.shp.).
  3. Zaznacz wszystko.
  4. W JOSM edytuj atrybuty i właściwości zaimportowane z SHP i zmień je, aby każdy atrybut odpowiadał znacznikowi OSM.
  5. Zapisz jako format OSM.
  6. Kontynuuj od A4 i połącz

Importuj jako OSM

Zaimportuj dane OpenStreetMap do systemu w następujący sposób:

  1. Przejdź do katalogu zawierającego pliki OpenStreetMap (OSM) przekonwertowane za pomocą JOSM.
  2. Wykonaj następujące polecenia w bazie danych:
    UTWÓRZ PRZEDŁUŻENIE hstore;
    osm2pgsql -j -W \
              -d osm nazwa_pliku.osm

-jOpcja jest kluczem jak to instrukcje osm2pgsql importować tagi na w hstorekolumnie, to konserwujący pod spodem konstrukcji danych i zaimportuje wszystkie znaczniki do bazy danych.

Utwórz warstwę Mapnik

Aby dane pojawiły się na mapie, dodaj warstwę i styl dla tej warstwy. Może to być tak proste, jak to:

  1. Edit mapnik-stylesheets/osm.xml.
  2. Wstaw następujący kod XML przed </Map>tagiem zamykającym ...

...

<Layer name="prefix_zone" status="on" srs="&osm2pgsql_projection;">
  <StyleName>zones</StyleName>
  <Datasource>
    <Parameter name="table">
    (select way from prefix_line order by tags desc, z_order) as zones
    </Parameter>
    &datasource-settings;
  </Datasource>
</Layer>

Utwórz styl Mapnik

Kontynuując od poprzedniej sekcji:

  1. Znajdź ostatni </Style>tag (około linii 3350).
  2. Wstaw następujący kod XML przed &layer-shapefiles;dyrektywą:

...

<Style name="zones">
  <Rule>
    &maxscale_zoom1;
    &minscale_zoom19;
    <LineSymbolizer stroke="#0065BD" stroke-width="2.5" />
  </Rule>
</Style>

Roadmatcher

roadmatcher to kolejne narzędzie, które może być pomocne

Wola.
źródło
OpenJUMP 1.5.1 nie jest kompatybilny z RoadMatcher 1.4. OpenJUMP 1.3.1, który może korzystać z RoadMatcher 1.4, nie jest kompatybilny z PostGIS 2.0 (ponieważ wywołuje find_extentraczej OpenJUMP st_find_extent). W bazie danych zainstalowano PostGIS 2.0.
Dave Jarvis
Wtyczka OpenData JOSM odczytuje pliki kształtów: wiki.openstreetmap.org/wiki/JOSM/Plugins/OpenData
Dave Jarvis