В osm2pgsql как заполняется таблица planet_osm_roads?

11

Я использую osm2pgsql для заполнения базы данных OSM в Северной Америке из planet.osm.

Мне нравится, насколько проста полученная схема PostGIS, но меня немного смущает ее содержание.

У меня есть две таблицы planet_osm_roadsи planet_osm_line. Я предположил, что planet_osm_roads содержит все данные о шоссе, но потом обнаружил, что он содержит только часть дорог в некоторых типах «шоссе».

Например, у planet_osm_line более 12 000 000 линий со значением «шоссе», равным «жилой». Тем не менее, planet_osm_roads имеет только 2000. Для сравнения, обе таблицы имеют одинаковое количество «автомагистралей». Глядя на данные, я не могу сказать, почему некоторые функции были бы в одной таблице, а не в другой.

Мне бы очень хотелось увидеть правила, которые osm2pgsql использует для направления линейных объектов в каждую таблицу.

Я попытался просмотреть исходный код osm2pgsql, чтобы пролить свет на тайну, но до сих пор не нашел то, что мне нужно.

Любые предложения очень приветствуются.

tomfumb
источник

Ответы:

9
  • planet_osm_line: содержит все импортированные пути
  • planet_osm_point: содержит все импортированные узлы с тегами
  • planet_osm_polygon: содержит все импортированные полигоны. Кажется, отношения для этого решены.
  • planet_osm_roads: содержит подмножество, planet_osm_lineподходящее для рендеринга при низких уровнях масштабирования. planet_osm_lineсодержит слишком много элементов для отображения на обзорных картах.

использовать osm_line

Для хорошего примера посетите - http://www.opencyclemap.org/?zoom=5&lat=39.98469&lon=-99.18887&layers=B00, где показаны маршруты / пути, согласованные по цвету.

источник http://wiki.openstreetmap.org/wiki/Osm2pgsql/schema#Tables_Created

Mapperz
источник
4

planet_osm_roads содержит только способы, используемые для рендеринга с низким уровнем масштабирования, такие как автомагистрали, реки и т. д. Он не содержит таких деталей, как жилые дороги, ручьи и различные другие функции, которые обычно отображаются только при высоком увеличении.

По умолчанию определения преобразования тега C для добавления в таблицу дорог - tagtransform.cpp.

Если вы хотите настроить это, вам лучше всего написать преобразование тега lua . Например, вы можете увидеть style.lua , пример преобразования тега lua.

Пол Норман
источник