W jaki sposób w osm2pgsql jest zapełniana tabela planet_osm_roads?

11

Używam osm2pgsql do wypełnienia bazy danych OSM w Ameryce Północnej z planet.osm.

Podoba mi się, jak prosty jest wynikowy schemat PostGIS, ale jestem nieco zdezorientowany jego zawartością.

Mam dwie stoły planet_osm_roadsi planet_osm_line. Zakładałem, że planet_osm_roads zawiera wszystkie dane o drogach, ale potem odkryłem, że zawiera tylko ułamek dróg w niektórych typach „autostrad”.

Na przykład planet_osm_line ma ponad 12 000 000 linii o wartości „autostrady” „mieszkaniowej”. Jednak planet_osm_roads ma tylko 2000. Dla porównania obie tabele mają tę samą liczbę funkcji „autostrady”. Patrząc na dane, nie wiem, dlaczego niektóre funkcje byłyby w jednej tabeli, a nie w drugiej.

Naprawdę chciałbym zobaczyć zasady, których używa osm2pgsql do kierowania elementów linii do każdej tabeli.

Próbowałem przejrzeć kod źródłowy osm2pgsql, aby rzucić światło na tajemnicę, ale jak dotąd nie znalazłem tego, o co mi chodzi.

Wszelkie sugestie bardzo mile widziane.

tomfumb
źródło

Odpowiedzi:

9
  • planet_osm_line: zawiera wszystkie importowane sposoby
  • planet_osm_point: zawiera wszystkie zaimportowane węzły ze znacznikami
  • planet_osm_polygon: zawiera wszystkie importowane wielokąty. Relacje wydają się w tym celu rozwiązane.
  • planet_osm_roads: zawiera podzbiór planet_osm_lineodpowiedni do renderowania przy niskim powiększeniu. planet_osm_linezawiera zbyt wiele elementów do renderowania na mapach poglądowych.

użyj osm_line

Przykładowa wizyta - http://www.opencyclemap.org/?zoom=5&lat=39.98469&lon=-99.18887&layers=B00, która pokazuje koordynację kolorów tras / dróg.

źródło http://wiki.openstreetmap.org/wiki/Osm2pgsql/schema#Tables_Created

Mapperz
źródło
4

planet_osm_roads zawiera tylko sposoby renderowania przy niskim powiększeniu, takie jak autostrady, rzeki itp. Nie zawiera szczegółów, takich jak drogi mieszkalne, strumienie i różne inne funkcje normalnie renderowane tylko przy dużym powiększeniu.

Domyślne definicje transformacji znaczników C tego, co należy dodać do tabeli dróg, to tagtransform.cpp

Jeśli chcesz to dostosować, prawdopodobnie najlepiej jest napisać transformację tagu lua . Na przykład możesz zobaczyć style.lua , przykładową transformację znacznika lua.

Paul Norman
źródło