Как правильно обновить карту?

Есть БД gis в ней хранится карта РФ, её нужно обновить, как Вы это делаете? Я пробовал разные варианты, интересует самый безболезненный!

огром

Пожалуй,

:slight_smile: обычно я удаляю БД и создаю новую, закачиваю туда данные, но попутно появляется много проблем, есть ведь команда добавления данных в БД, чтобы добавить новый регион, а чтобы заменить данные на новые?

В отсутствие хоть какой-нибудь конкретики и с неоднозначными вопросами (где-то пропущено «не»), видимо, ответить на вопросы невозможно. Напиши полный програмный стек, чем больше конкретики — тем лучше.

Да, Вы правы, я просто уже столько вожусь с этим, что мне кажется что все вокруг в курсе процесса :slight_smile:

Вот схема по которой я сейчас обновляю данные:
Удаляю БД gis - в которой хранится информация для построения тайлов
su - postgres -c “createdb -E UTF8 -O osm gis”
su - postgres -c “psql -d gis -c ‘CREATE EXTENSION postgis;’”
su - postgres -c “psql -d gis -c ‘ALTER TABLE geometry_columns OWNER TO osm;’”
su - postgres -c “psql -d gis -c ‘ALTER TABLE spatial_ref_sys OWNER TO osm;’”
su - postgres -c “psql -d gis -c ‘CREATE EXTENSION hstore;’”

psql -d gis -p 5432 -f /usr/share/postgresql/9.1/contrib/postgis-2.1/legacy.sql

sudo -u osm osm2pgsql -r pbf -s -d gis -C 40000 --cache-strategy dense /home/osm/Downloads/russia-latest.osm.pbf

Подскажите пожалуйста какая ещё информация требуется?

С заполнением Nominatim БД я поступаю таким образом, удаляю её и просто запускаю скрипт:

utils/setup.php --osm-file /home/osm/Downloads/planet-latest.osm.pbf --all

Соответственно вопрос, правильно ли я всё делаю и оптимально ли это?

Удалять базу данных ни к чему, osm2pgsql сам очищает нужные таблицы и пишет их начисто.
Если на сервере больше 1 ядра, хорошо бы добавить к вызову --number_processes.

С номинатимом я не знаю, как оно там. Но запускать его на всей большой планете странно, наверняка там где-то есть способ обновить из ежедневного диффа.

Коллеги, как запускать osm2pgsql под правами пользователя с паролем, например user:postgres pass:osm, соответственно при запуске команды на обновление спрашивает пароль, что неудобно для работы по расписанию. ОС Windows 10 x64

osm2pgsql\osm2pgsql --style my.style --hstore --merc --append --slim --host localhost --database gis --user postgres --password dump.pbf

Каковы вообще минимальные удобные настройки безопасности для базы ? Сейчас у меня всё под одной учеткой с полными правами, полагаю такие права для рендеринга не нужны, достаточно readonly, а полный доступ только на обновление базы. Поделитесь своим опытом.

Пользователя и пароль надо положить в переменные окружения PGUSER / PGPASS. Но правда я не проверял.
Или как более безопасное создать файлик C:\Users****\AppData\Roaming\postgresql\pgpass.conf . Это проверил, работает, содержимое такое.

localhost:5432:uly_geocoder:render:render

Спасибо, работает, не смог сразу нагуглить.

PS: скрещиваю “ужа с ежом” Windows 10 WSL + тулчейны для убунту в bash. В разы всё упростилось по сравнению с обычной Windows - не надо искать или компилировать нативные бинарники, всё устанавливается ровно так как описано в вики для ubuntu.

Звучит круто, если это ещё и работать будет, вот вообще хорошо.

Без каких-либо проблем запустил Furry под WSL
https://github.com/Komzpa/furry-sansa

однако импорт osm2pgsql был ровно в 2 раза медленнее, чем виндовым бинарником. Оказалось что в репозитарии Ubuntu 14 лежит старая версия 0.82.

Собрал последнюю версию osm2pgsql 0.91 и скорость импорта стала абсолютно идентичной что из WSL, что из Windows. Все 4 ядра загружаются полностью.

Объем “линуксовой файловой подсистемы” составил 1Gb, это с установленным gcc, всеми зависимостями и библиотеками для osm2pgsql и пр. (midnight commander само собой ))

Теперь осталось поставить запуск в планировщик задач со стартом системы. Потратил целый день, не удается запустить скрипт в фоне. Перепробовал vbs-скрипты, обычные батники, перерыл “весь” гугл. В самом планировщике уже ловить нечего, как-то связано с правами пользователей, настройками окружения и т.д. Отложил задачу как второстепенную. Ключевая фраза для поиска “Windows scheduler Tasks not running when user not logged in”

может порыть в сторону автозапуска при стартесистемы тут? HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

Хм… первый раз слышу. Не знаю как там в 10-ке, в 7-ке вот есть пункт “Выполнять вне зависимости от регистрации пользователя” и если он не работает, снимаю шляпу.