Як встановити локальну копiю сайту OpenStreetMap?

Вiтаю.
Менi потрiбно налаштувати локальний сервер з картою Украiни, i щоб була можна було редагувати карту (наприклад, змiнити назву вулицi).

Я знайшов дуже гарну iнструкцiю по налаштуванню тайлового сервера.

Але ж менi потрiбно редагувати карту.
Я так зрозумiв, що треба доустановити компонент API. А як це зробити?

Тут ви можете отримати інструкцію як запустити API за допомогою Docker - https://github.com/openstreetmap/openstreetmap-website/blob/master/DOCKER.md

aбо, як розгорнути API на власному інстансі - https://github.com/openstreetmap/openstreetmap-website/blob/master/INSTALL.md

Проблема полягає в тому, що як тільки ви почнете вносити зміни в власну ДБ їх буде майже неможливо (або дуже важко) повернути в upstream DB.

Також раджу ознайомитись з Uk:Legal FAQ - OpenStreetMap Wiki

2 Likes

Якщо потрібен лише тайловий сервер ви можете скористатись - https://tile.openstreetmap.org.ua

1 Like

а чому не надсилати зміни на основний сервер OSM?

3 Likes

Дуже дякую. Всього вам найкращого.

Не знаю. Керiвництво так захотiло.
Гарне питання.
Та я не став поки що керiвництво допитувати, нащо розгортати локальну копiю.

Я встановив локальну копiю OpenStreetMap на корпоративний сервер за цим мануалом:

Внизу, у мануалi, був роздiл:

Configuration

After installing this software, you may need to carry out some configuration steps, depending on your tasks.

Я вiдкрив документ CONFIGURE.md.

У документi було сказано, що в установку OpenStreetMap не включаються географiчнi данi, i цi данi потрiбно iмпортувати.

Я правильно розумiю, що пiд географiчними даними маються на увазі назви міст, вулиць і подібних об’єктів на даний момент?

Такою командою мені вдалося імпортувати Liechtenstein:

osmosis --read-pbf liechtenstein-latest.osm.pbf  --write-apidb host="localhost" database="openstreetmap"  user="openstreetmap" password="" validateSchemaVersion="no"

Але карта Liechtenstein візуально нiяк не змінилась після цієї команди (так і повинно бути?)

Після цієї команди було написано:

To be able to edit the data you have loaded, you will need to use this yet-to-be-written script.

Тобто, щоб мати можливість редагувати дані, що я завантажив, необхідно використати скрипт yet-to-be-written script

Цей скрипт вже існує чи ні? Я не зрозумів.
Якщо скрипта не існує, то як мені обійтись без нього?

Ну, цей пункт я пропустив зі скриптом.
Просто потім (за інструкцією) створив користувача і налаштував роботу ID-редактора.

Потiм я перемістився по карті на Liechtenstein, відкрив ID-редактор.
Але в редакторі відображається тільки картинка місцевості, і ніяких ліній доріг нема.
Просто картинка місцевості, яку можна переміщати курсором-рукою.

Що я роблю не так?
Я хочу редагувати назви вулиць i міст.

Від модератора :point_down:


Прохання,

  • створювати нові теми у просторі Української спільноти :ukraine:
  • не створювати кілька топіків, що стосуються однієї теми
1 Like

Перевірте звідки ви берете тайли мапи, з власного інстансу чи глобального.

З власного інстансу беру тайли мапи.

Вибачте, мабуть мені потрібно було довше почекати, щоб з’явилися об’єкти на мапі Liechtenstein.
Тобто, з’явилися дороги і інші об’єкти після, приблизно, трихвилинного очікування.

А не підкажете, як назви міст у Криму перекласти на українську мову?

Потрібно в значення name=* перенести значення з name:uk, якщо вони є.

Робіть як вам зручніше, або напряму в БД міняйте після заливання даних, або під час першого заливання даних.

Про перетворення теґів див тут - Osmosis/TagTransform - OpenStreetMap Wiki

1 Like

Велике вам спасибі!

Вибачте, в мене ще одне питання.
От встановив я openstreetmap-website за цією інструкцією https://github.com/openstreetmap/openstreetmap-website/blob/master/INSTALL.md

Запускаю команду

bundle exec rails server

і бачу карту всього світу.

Потім я виконав команду:

osmosis --read-pbf ukraine-latest.osm.pbf \
  --write-apidb host="localhost" database="openstreetmap" \
  user="openstreetmap" password="" validateSchemaVersion="no"

БД openstreetmap наповнилась, команда відпрацювала успішно.
Я зайшов у веб-інтерфейс свого openstreetmap (знову показується всесвітня карта, не тільки Україна), відкрив ID редактор, і зробив зміну назви населеного пункта, але на мапі нічого не змінилось.
Ось скрін:

А в інструкції INSTALL.md є таке речення:

Note that the OSM map tiles you see aren’t created from your local database - they are just the standard map tiles.

Тобто, після запуску команди

bundle exec rails server

я бачу не свою карту з бази openstreetmap ?

А як мені побачити тільки дані з моєї БД openstreetmap?

Вітаю, ви розгорнули та запустили API. Однак рендерінг тайлів здійснюється за допомогою іншого сервісу - тайлового сервера (Як встановити локальну копiю сайту OpenStreetMap?). Вам потрібно замінити тайловий сервер tile.openstreetmap.org на власний в налаштуваннях.

PS. Налаштуйте у себе в оглядачі українську мову замість російської, тоді інтерфейс ОСМ буде показуватись українською :wink:

1 Like

Дякую за відповідь.
Гаразд, я зрозумів.

Моя основна задача – потрібно перекласти на укр. мову назви населених пунктів в Криму.
Тобто, потрібно зробити якісь перетворення з цією БД:
https://download.geofabrik.de/europe/ukraine-latest.osm.pbf
Щоб значення name=* містило в собі значення з name:uk.

Я побачив ваше повідомлення про те, що цю задачу можна вирішити, як мінімум, 2-ма способами:

  1. Спочатку залити БД на сервер, а вже потім вносити зміни в базу, припустимо, через редактор iD;
  2. Попрацювати з БД перед її заливанням на сервер;

Мене зацікавив варіант 2).
Але в інтернеті я не можу знайти більш-менш свіжих інструкций для втілення варіанту 2).

Я детально ознайомився з цим документом Osmosis/TagTransform - OpenStreetMap Wiki.

Потім знайшов на хабрі статтю про русифікацію карти Китаю:

Та коли у статті діло дійшло до роботи з Mapnik – то таких файлів у свіжій версії Mapnik я не бачу…

Отже, не могли б ви хоча б попунктно написати, які треба зробити кроки, щоб змініти вміст тегів name БД до імпорту БД на сервер?

Також я буду щасливий, якщо ви підкажете де замінити тайловий сервер tile.openstreetmap.org на власний в налаштуваннях?
Я так зрозумів, треба змінити якийсь конфіг?

Бо на ці питання я ніде не знайшов відповіді, вибачте.

Для варіанту 2, потрібно розширити вашу :point_down: команду інструкціями для перетворення значень ключів відповідно до пояснень у Вікі (Osmosis/TagTransform - OpenStreetMap Wiki). Тобто перетворення буде виконуватись під час заливання даних в БД.

Або ж залити дані в БД як є, а потім вже за допомогою SQL та прямого доступу до БД внести зміни.

З приводу додавання власних тайлів можете глянути тут приклад Add CyclOSM layer by frodrigo · Pull Request #2994 · openstreetmap/openstreetmap-website · GitHub та Add OPNVKarte by pnorman · Pull Request #2670 · openstreetmap/openstreetmap-website · GitHub

1 Like

Доброго дня.
А не підкажете по такому питанню.

От спочатку в мене пуста БД gis.
Я виконую команду, щоб заповнити БД gis даними України

osm2pgsql -d gis --create --slim  -G --hstore --tag-transform-script ~/src/openstreetmap-carto/openstreetmap-carto.lua -C 2500 --number-processes 1 -S ~/src/openstreetmap-carto/openstreetmap-carto.style ~/data/ukraine-latest.osm.pbf

І дані завантажуються досить швидко.

Після того, як Україна завантажилась в БД gis, я хочу додати ще й сусідні країни.
Виконую команду, щоб додати Молдову

osm2pgsql -d gis -a --slim  -G --hstore --tag-transform-script ~/src/openstreetmap-carto/openstreetmap-carto.lua -C 2500 --number-processes 1 -S ~/src/openstreetmap-carto/openstreetmap-carto.style ~/data/moldova-latest.osm.pbf

І тут швидкість додавання даних у БД дуже падає.
Чому так?

Я пробував заливати Молдову у пусту БД gis, і на це витратив 15 хвилин.
А коли в базі вже є дані, то Молдова завантажувалась близько години.

На цьому етапі, якщо БД gis пуста, то швидкість Node 200-300k/s.
А зараз Node 4.3k/s (gis містить вже Украіну)
Безымянный

Так і повинно бути, чи треба більш детально якісь мани повивчати?

You’ll want to combine Ukraine and Moldova with something like “osmium” and then load that. There are lots of examples of the sort of command that you can use in this script.

3 Likes

А не підкажете ще по 1 питанню.

От я перевів назви населених пунктів у Криму з російської мови на українську.
(Власне, цим і не влаштовувала оригінальна карта https://www.openstreetmap.org, а також мені дали завдання: налаштувати “свій” тайловий сервер).

Налаштував свій тайловий сервер тільки з Україною (без інших країн, лише Україна).
Але, на оригінальній карті https://www.openstreetmap.org карта усього світу, для якої треба більш потужний сервер, ніж лише для однієї України.

А чи можна так зробити:
Налаштувати свій openstreetmap-website, і в ньому якось налаштувати, щоб основна карта з усіма странами бралася с серверу https://www.openstreetmap.org, а Україна щоб “накладувалася зверху” на оригінальну карту з мого тайлового сервера.

Це, мабуть, схоже на маячню, та все ж у мене виникло таке питання.
А раптом це можливо – подумав я.

Вибачте, я ще не настільки гарно знаю англійську мову, щоб могти писати на ній повідомлення.