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 osm2pgsql
w 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.prj
Plik 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
- http://wiki.openstreetmap.org/wiki/Shapefiles
- http://wiki.openstreetmap.org/wiki/Import/Shapefile
- http://wiki.openstreetmap.org/wiki/Convert_shp_to_osm_using_grass_and_gpsbabel
- https://github.com/wavded/js-shapefile-to-geojson
- http://redmine.yellowbkpk.com/projects/list_files/geo
- http://www.gdal.org/ogr2ogr.html
- http://wiki.openstreetmap.org/wiki/Ogr2osm
- https://github.com/andrewguertin/ogr2osm
- http://svn.openstreetmap.org/applications/utils/import/shp2osm/
- http://crschmidt.net/blog/archives/354/polyshp2osm/
- http://www.mail-archive.com/[email protected]/msg12487.html
Dziękuję Ci!
źródło
Odpowiedzi:
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]
ogr2osm
jak 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.
Otwórz josm , pobierz wtyczkę do konfuzji
Twoje dane rządowe są teraz plikiem OSM. Otwórz josm, Plik> otwórz Twoje dane są tam jako warstwa.
Jeśli masz już dane OSM przechowywane lokalnie na twoim komputerze, otwórz je w josm, otworzy się również jako nowa warstwa.
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 ...
filename.shp
.).Importuj jako OSM
Zaimportuj dane OpenStreetMap do systemu w następujący sposób:
-j
Opcja jest kluczem jak to instrukcje osm2pgsql importować tagi na whstore
kolumnie, 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:
mapnik-stylesheets/osm.xml
.</Map>
tagiem zamykającym ......
Utwórz styl Mapnik
Kontynuując od poprzedniej sekcji:
</Style>
tag (około linii 3350).&layer-shapefiles;
dyrektywą:...
Roadmatcher
roadmatcher to kolejne narzędzie, które może być pomocne
źródło
find_extent
raczej OpenJUMPst_find_extent
). W bazie danych zainstalowano PostGIS 2.0.