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

Не знаете, где задать вопрос? Задавайте здесь.
Intruder
Новоприбывший
Сообщения: 14
Зарегистрирован: 14 мар 2024, 17:42
Репутация: 0
Откуда: Нижегородская область

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

Сообщение Intruder » 18 мар 2024, 09:30

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 - накроет ваши правки :)
А порекомендуйте ПО, которое сможет поднять такую карту оффлайн?
А можно как-то те обновления, которые были сделаны, сохранить, а потом их применить для обновленной версии?

Intruder
Новоприбывший
Сообщения: 14
Зарегистрирован: 14 мар 2024, 17:42
Репутация: 0
Откуда: Нижегородская область

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

Сообщение Intruder » 18 мар 2024, 09:31

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
Спасибо! Методом научного тыка уже сделал.

Intruder
Новоприбывший
Сообщения: 14
Зарегистрирован: 14 мар 2024, 17:42
Репутация: 0
Откуда: Нижегородская область

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

Сообщение Intruder » 18 мар 2024, 09:41

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

AlexRomantsov
Завсегдатай
Сообщения: 316
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 137
Ваше звание: хм, сам не знал
Откуда: Томск

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

Сообщение AlexRomantsov » 18 мар 2024, 10:46

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

Intruder
Новоприбывший
Сообщения: 14
Зарегистрирован: 14 мар 2024, 17:42
Репутация: 0
Откуда: Нижегородская область

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

Сообщение Intruder » 18 мар 2024, 11:03

Буду пробовать. Тему пока не закрываю, потому что будет еще куча вопросов )))
Спасибо!

AlexRomantsov
Завсегдатай
Сообщения: 316
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 137
Ваше звание: хм, сам не знал
Откуда: Томск

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

Сообщение AlexRomantsov » 18 мар 2024, 11:32

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

AlexRomantsov
Завсегдатай
Сообщения: 316
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 137
Ваше звание: хм, сам не знал
Откуда: Томск

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

Сообщение AlexRomantsov » 18 мар 2024, 11:37

Отдельные поля из тегов, по каждому чиху, можно не плодить, теги достаются запросами, и в PG, и в карто-стилях, и в ГИС

AlexRomantsov
Завсегдатай
Сообщения: 316
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 137
Ваше звание: хм, сам не знал
Откуда: Томск

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

Сообщение AlexRomantsov » 18 мар 2024, 13:55

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

Intruder
Новоприбывший
Сообщения: 14
Зарегистрирован: 14 мар 2024, 17:42
Репутация: 0
Откуда: Нижегородская область

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

Сообщение Intruder » 19 мар 2024, 10:29

Можно еще помочь с вопросом отключения отображения границ?

AlexRomantsov
Завсегдатай
Сообщения: 316
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 137
Ваше звание: хм, сам не знал
Откуда: Томск

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

Сообщение AlexRomantsov » 19 мар 2024, 10:49

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

Intruder
Новоприбывший
Сообщения: 14
Зарегистрирован: 14 мар 2024, 17:42
Репутация: 0
Откуда: Нижегородская область

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

Сообщение Intruder » 19 мар 2024, 11:04

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.
И еще такой вопрос, нужно ли потом пересоздавать БД?

AlexRomantsov
Завсегдатай
Сообщения: 316
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 137
Ваше звание: хм, сам не знал
Откуда: Томск

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

Сообщение AlexRomantsov » 19 мар 2024, 11:18

Нет, все объекты с admin-level > 1 не будут подхвачены стилем. А в базе данных - пусть себе лежат.

Intruder
Новоприбывший
Сообщения: 14
Зарегистрирован: 14 мар 2024, 17:42
Репутация: 0
Откуда: Нижегородская область

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

Сообщение Intruder » 19 мар 2024, 13:33

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

AlexRomantsov
Завсегдатай
Сообщения: 316
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 137
Ваше звание: хм, сам не знал
Откуда: Томск

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

Сообщение AlexRomantsov » 19 мар 2024, 13:42

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

Intruder
Новоприбывший
Сообщения: 14
Зарегистрирован: 14 мар 2024, 17:42
Репутация: 0
Откуда: Нижегородская область

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

Сообщение Intruder » 19 мар 2024, 21:49

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

Ответить

Вернуться в «Я новичок!»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 24 гостя