RU:Osm2pgsql/schema
Исходная статья: Osm2pgsql/schema. Вы можете закончить перевод.
Если вы знаете английский, то можете помочь нам, переведя часть оригинальной статьи. Общие сведения о переводе статей на русский язык можно найти здесь.
Эта страница описывает структуру базы данных PostgreSQL, создаваемой osm2pgsql. Информация в основном добыта реверс-инженерингом скрипта osm2pgsql пользователем Stanton 22:37, 26 January 2011 (UTC)
Создаваемые таблицы
Обрабатываемые данные
Эти таблицы содержат данные, которые Mapnik использует для рендеринга:
- planet_osm_line: содержит все импортированные линии
- planet_osm_point: содержит все импортированные точки, имеющие теги
- planet_osm_polygon: содержит все импортированные полигоны. Отношения для этого должны быть решены.
- planet_osm_roads: содержит подмножество `planet_osm_line`, предназначенное для рендеринга на низких уровнях зума. `planet_osm_line` имеет слишком много элементов для рендеринга на обзорных картах. Выборка производится по определённым тегам (FIXME: highway? railway? other?)
Каждая таблица имеет столбец way, содержащий геометрию для объекта в выбранной проекции. Для каждой таблицы созданы два индекса: один для столбца way и один - для osm_id. Геометрия использует координаты в EPSG:900913, также известной как проекция G00GlE, и легко может использоваться, например, в OpenLayers на JavaScript.
Заметьте, что отношения не импортируются напрямую. Линии, являющиеся участниками отношений, импортируются особым образом (смотрите описание для planet_osm_line), но нет простого пути установить связи между отношением и его участниками, или найти теги, принадлежащие отношению (unless they have ways as members).
planet_osm_line
Эта таблица содержит все импортированные незамкнутые линии. Дополнительные строки создаются для линий, являющихся участниками отношений:
- В каждом отношении линии делятся на "части" непрерывных линий
- Для каждой части создаётся строка (одна и более для каждого отношения, имеющего в себе линии в качестве участников)
- osm_id это отрицательный ID отношения
- Столбцы тегов заполняются тегами отношения
Получается, что может быть несколько частей для отношения, отрицательные ID не обязательно уникальны.
Столбец | Тип | Описание |
---|---|---|
osm_id | ID в OSM | |
tag | тот, что указан в файле стиля | Один столбец на каждый тег, указанный в файле стиля вместе в флагом line, содержит значение тега |
z_order | порядок по оси Z (если указан в файле стиля), рассчитывается автоматически | |
way_area | Область (если указан в файле стиля), рассчитывается автоматически | |
way | LINESTRING | Геометрия линии (координаты всех точек) |
planet_osm_point
Эта таблица содержит все импортированные точки, имеющие теги. Точки без тегов (их единственная цель - обозначение позиции линии) не импортируются.
Учтите, что механизм создания дополнительных строк для каждого участника отношения, с тегами отношения, не применяется к точкам. Поэтому, в данной схеме, нет способа найти родительское отношение для данной точки.
Столбец | Тип | Описание |
---|---|---|
osm_id | ID в OSM | |
tag | тот, что указан в файле стиля | Один столбец на каждый тег, указанный в файле стиля вместе в флагом line, содержит значение тега |
z_order | ||
way | POINT | Геометрия линии (координаты) |
Пример использования: список всех городов между указанными координатами:
select name, place, ST_XMin(way), ST_YMin(way) from planet_osm_point where place='city' order by name; - name | place | st_xmin | st_ymin ---------------------+-------+------------------+------------------ Aachen | city | 677005.568925713 | 6581465.51491323 Bielefeld | city | 949707.775300959 | 6803595.76136763 Bochum | city | 803356.018491145 | 6707233.31587142 Bonn | city | 790360.302837211 | 6574460.70904846 ...
По умолчанию возвращаются координаты в 900913 (G00GlE) проекции и легко могут быть использованы, например, в OpenLayers на JavaScript. `min` или `max` в этом случае безразлично, поскольку точки не имеют размеров.
planet_osm_polygon
Эта таблица содержит все импортированные полигоны (замкнутые линии). Для полигонов, состоящих в одном и более отношениях, создадутся несколько строк: одна для собственных ID и тегов полигона, другие для каждого его отношения. Данные дополнительные строки содержат теги отношения и отрицательный ID отношения в столбце osm_id (поскольку одно отношение может включать в себя несколько полигонов, отрицательные ID необязательно уникальны).
Столбец | Тип | Описание |
---|---|---|
osm_id | ID в OSM | |
tag | тот, что указан в файле стиля | Один столбец на каждый тег, указанный в файле стиля вместе в флагом line, содержит значение тега |
z_order | порядок по оси Z (если указан в файле стиля), рассчитывается автоматически | |
way_area | Область (если указан в файле стиля), рассчитывается автоматически | |
way | GEOMETRY | Геометрия линии (координаты всех точек) |
planet_osm_roads
Как и в planet_osm_ways, для каждого участия в отношении будут созданы дополнительные строки.
Столбец | Тип | Описание |
---|---|---|
osm_id | ID в OSM | |
tag | тот, что указан в файле стиля | Один столбец на каждый тег, указанный в файле стиля вместе в флагом line, содержит значение тега |
z_order | порядок по оси Z (если указан в файле стиля), рассчитывается автоматически | |
way_area | Область (если указан в файле стиля), рассчитывается автоматически | |
way | LINESTRING | Геометрия линии (координаты всех точек) |
Промежуточные таблицы
Я заметил, что эти таблицы присутствуют после импорта в режиме slim. Видимо, они нужны на первом этапе импорта; геометрия по прежнему в формате OSM (lat/lon для точек, node references for ways) и присутствует минимальная конвертация из формата OSM.
- planet_osm_nodes: импортированные точки в сыром виде
- planet_osm_rels: импортированные отношения в сыром виде
- planet_osm_ways: импортированные линии в сыром виде
planet_osm_nodes
Столбец | Тип | Описание |
---|---|---|
id | ID в OSM | |
lat | Широта | |
lon | Долгота | |
tags | Массив тегов и значений, формат: {tag1, value1, tag2, value2, ...} |
planet_osm_rels
Столбец | Тип | Описание |
---|---|---|
id | ID в OSM | |
way_off | Смещение первого id линии в частях | |
rel_off | Смещение первого id отношения в частях | |
parts | Список ID точек, линий и отношений для данного отношения. | |
members | Массив участников и ролей, формат: {member1, role1, member2, role2, ...}. Участники представлены буквой, указывающей на тип плюс их ID | |
tags | Массив тегов и значений, формат: {tag1, value1, tag2, value2, ...} | |
pending | Ожидание обновления данной строки? Принимает значение "t", пока osmosis выполняет ежеминутное обновление, и значение "f" при завершении. Такие обновления должны проходить в транзакции, так что отловить строку с "t" должно быть непросто. |
planet_osm_ways
Столбец | Тип | Описание |
---|---|---|
id | ID в OSM | |
nodes | Массив, содержащий ID точек линии | |
tags | Массив тегов и значений, формат: {tag1, value1, tag2, value2, ...} | |
pending |