Страница 2 из 3

Re: Замена названий улиц и прочих объектов

Добавлено: 18 мар 2024, 09:30
Intruder
AlexRomantsov писал(а):
18 мар 2024, 04:56
При помощи параметров файлов openstreetmap-carto.style и openstreetmap-carto.lua (или их эквивалентов для osmium) можно назначить, как именно разложить структуру источника OSM на более удобную расширенную структуру таблиц в Postgres. Команда
"node,way name:ru text polygon" позволит сохранить тег name:ru (если он есть!) как поле для точечного, линейного и полигонального слоев. Но.. Чуда может не случится. Дополнительные теги типа name:ru встречаются далеко не во всех объектах. Столицы государств, крупные города, страны мира - да, их наименования есть в тегах для множества языков. А вот реки, улицы и другие "локальные" топонимы - часто только в оригинальном языке. Если Вам нужна вся карта мира на русском - без многомесячного допиливания поля name:ru не обойтись :).
Вот здесь не гладко все. Объекты OSM, в таблицах Postgres, создаются без уникальных ключевых полей. И очень сложно корректно модифицировать нужные записи, например sql запросами. А то что измените - может подломать реляции, таблицы и по итогу - рендер тайлов. А обновления базы свежим OSM - накроет ваши правки :)
А порекомендуйте ПО, которое сможет поднять такую карту оффлайн?
А можно как-то те обновления, которые были сделаны, сохранить, а потом их применить для обновленной версии?

Re: Замена названий улиц и прочих объектов

Добавлено: 18 мар 2024, 09:31
Intruder
AlexRomantsov писал(а):
18 мар 2024, 05:42
Intruder писал(а):
15 мар 2024, 12:42
Получается, что нужно заново импортировать данные в БД?
Еще мне не понятен момент вот с чем. В файле openstreetmap-carto.style есть строка:

Код: Выделить всё

node,way   name	text         linear
Я заменил ее на:

Код: Выделить всё

node,way   name:ru		text         linear
Правильно ли я сделал? Если заново импортировать данные в БД данные будут браться отсюда?

Не правильно. Надо не заменять, а добавить еще строчку в конфигуратор, т.е. в таблице postgres оставить поле с оригинальным name и добавить еще одно name:ru. Заново импортировать. И подпиливать стили, для отображения на карте значений из name:ru
Спасибо! Методом научного тыка уже сделал.

Re: Замена названий улиц и прочих объектов

Добавлено: 18 мар 2024, 09:41
Intruder
Intruder писал(а):
15 мар 2024, 13:20
trir писал(а):
15 мар 2024, 13:16
может надо запустить перегенерацию тайтлов
Перегенерация - это render_list? Если да, то результата перегенерация не дала. Буду пробовать заново. Исправил стиль, посмотрим что получится.
По результату напишу.
В целом, как уже написали коллеги, исправил файл стиля и в БД появился тег "name:ru". Теперь чтобы отображались русские названия нужно править стили в каталоге "/style"? Я правильно понимаю?

Re: Замена названий улиц и прочих объектов

Добавлено: 18 мар 2024, 10:46
AlexRomantsov
Не в курсе, какой библиотекой пользуетесь для рендера, есть mapnik (openstreetmap-carto), есть еще несколько. Но так то да, разбираетесь в коде, меняете нужные стили. Никто не запрещает в стиле дублировать подписи из двух полей, как то так:
du_name.PNG
du_name.PNG (16.62 КБ) 3186 просмотров
Соответственно, если на кирилице нет, останется хотя бы оригинальное. Ну и сравнивать поля, если name=name:ru - не выводить второе название.

Re: Замена названий улиц и прочих объектов

Добавлено: 18 мар 2024, 11:03
Intruder
Буду пробовать. Тему пока не закрываю, потому что будет еще куча вопросов )))
Спасибо!

Re: Замена названий улиц и прочих объектов

Добавлено: 18 мар 2024, 11:32
AlexRomantsov
А по поводу своих творческих изменений. В зависимости от ширины замысла - несколько стратегий.
Например, можно сделать в PG свои реплики ОСМ таблиц (которые не будут накрываться OSM-загрузчиками), менять и обновлять их в полуручном режиме, скриптами-запросами.
Можно расширить средствами PG таблицы OSM, к примеру добавить свое поле name_ru (обновляться будет name:ru), и все что нужно - хранить там. Рекомендую также создать уникальное автоинкрементное ключевое поле, сильно упростит модификацию данных, например из ГИС систем.

Re: Замена названий улиц и прочих объектов

Добавлено: 18 мар 2024, 11:37
AlexRomantsov
Отдельные поля из тегов, по каждому чиху, можно не плодить, теги достаются запросами, и в PG, и в карто-стилях, и в ГИС

Re: Замена названий улиц и прочих объектов

Добавлено: 18 мар 2024, 13:55
AlexRomantsov
Intruder писал(а):
18 мар 2024, 09:30
А порекомендуйте ПО, которое сможет поднять такую карту оффлайн?
ПО - QGIS. Меню - Слой - Добавить слой - Добавить слой Postgis. Ну а дальше - придется по разбираться, как фильтровать, как стили настроить, как с таблицей работать, как теги доставать, как модифицировать одну или множество записей, как по выражениям это делать, как на карте и т.д.:). Затрудняют, на первом этапе, тяжелые слои-таблицы OSM, без фильтров или символизации по уникальным значениям - медленно и тоскливо.

Re: Замена названий улиц и прочих объектов

Добавлено: 19 мар 2024, 10:29
Intruder
Можно еще помочь с вопросом отключения отображения границ?

Re: Замена названий улиц и прочих объектов

Добавлено: 19 мар 2024, 10:49
AlexRomantsov
В стилях (или в фильтрах слоя для стиля) отключить:
1. Сами границы, смотрите стили admin-low-zoom-..,admin-mid-zoom-.., admin-high-zoom-..
2. Подписи (в т.ч. вдоль границ), смотрите стили state-names, country-names, county-names, admin-text

Re: Замена названий улиц и прочих объектов

Добавлено: 19 мар 2024, 11:04
Intruder
AlexRomantsov писал(а):
19 мар 2024, 10:49
В стилях (или в фильтрах слоя для стиля) отключить:
1. Сами границы, смотрите стили admin-low-zoom-..,admin-mid-zoom-.., admin-high-zoom-..
2. Подписи (в т.ч. вдоль границ), смотрите стили state-names, country-names, county-names, admin-text
Если я правильно нашел вот тут https://wiki.openstreetmap.org/wiki/RU: ... dmin_level, то для того, чтобы границы не рендерились нужно admin-level установить в значение "1". Это файл style/admin.mss.
И еще такой вопрос, нужно ли потом пересоздавать БД?

Re: Замена названий улиц и прочих объектов

Добавлено: 19 мар 2024, 11:18
AlexRomantsov
Нет, все объекты с admin-level > 1 не будут подхвачены стилем. А в базе данных - пусть себе лежат.

Re: Замена названий улиц и прочих объектов

Добавлено: 19 мар 2024, 13:33
Intruder
При изменении значений ничего не происходит.
Я изменял и ширину линий, ставил им значение 0 и изменял opacity, ставил значение в 1.
Результат остается неизменным. Границы отображаются.
Что я делаю не так?
Нужно ли перезапускать контейнер после изменения стилей или сделать еще какие-нибудь действия?

Re: Замена названий улиц и прочих объектов

Добавлено: 19 мар 2024, 13:42
AlexRomantsov
У себя, после изменения стилей, перепускаю сервис renderd (не знаю, насколько это нужно, на всякий).
renderd и render_list создают растровый кэш тайлов, и этот кэш отдается по запросам (пока apache не решит, что тайлы устарели, или если тайл отсутсвует). Если меняете стиль - повторите render_list. Render_list затрет старые тайлы. Как вариант, на период отладки, удалите все тайлы, после этого будете получать в клиенте свежеиспеченные (но с задержкой)

Re: Замена названий улиц и прочих объектов

Добавлено: 19 мар 2024, 21:49
Intruder
AlexRomantsov писал(а):
19 мар 2024, 13:42
У себя, после изменения стилей, перепускаю сервис renderd (не знаю, насколько это нужно, на всякий).
renderd и render_list создают растровый кэш тайлов, и этот кэш отдается по запросам (пока apache не решит, что тайлы устарели, или если тайл отсутсвует). Если меняете стиль - повторите render_list. Render_list затрет старые тайлы. Как вариант, на период отладки, удалите все тайлы, после этого будете получать в клиенте свежеиспеченные (но с задержкой)
А можете привести пример того, как изменить стиль не отображения границы? Может я не там меняю?