Страница 1 из 1

Загрузка osm.pbf в MS SQL Server (open street map)

Добавлено: 08 июл 2022, 15:56
Kuper
Нахожусь в процессе разработки скрипта, автоматизирующего загрузку данных в формате osm.pbf в СУБД MS SQL Server. Нужно, используя ogr2ogr и python:
- Собрать все файлы в каталоге с расширением osm.pbf (входные файлы)
- Выбрать во входных файлах точечную геометрию (не знаю как)
- Вырезать точки по полигону с границами городов (вроде бы использовать похожую команду -clipsrc clipbound.shp output.shp input.shp)
- Загрузить в выходную таблицу в СУБД MS SQL Server.

Есть похожий опыт по созданию скрипта по загрузке из shape в MS SQL Server, может кому-то пригодится.
Но с osm.pbf не работал и команды ogr2ogr знаю на базовом уровне. Поэтому буду благодарен за помощь и обратную связь по своему запросу.

Скрипт для запуска процесса по обновлению базы OSM из shape
#1 шаг: открыть cmd из папки C:\QGIS 3.24.3\bin, т.к в ней лежат библиотеки, к которым обращается скрипт (я пока не могу установить нужные библиотеки в систему по своим причинам),
#запустить команду C:\QGIS 3.24.3\bin>python
#2 шаг: изменить необходимые параметры в переменных
#3 шаг: скопировать скрипт в командную строку

#импорт библиотек
import os
import subprocess
from subprocess import call

#установка входных параметров
in_file = r'C:\Users\*******\Documents\название.shp'
out_schema = 'схема'
out_nln = 'выходная_таблица'
host = 'ip адрес сервера, на котором расположена база данных'
port = '1433' #порт
db = 'база_данных'
yes = 'yes'
no = 'no'

#сборка строчки для вызова в командной строке
command = fr'ogr2ogr -progress -f "MSSQLSpatial" "MSSQL:server={host},{port};database={db};trusted_connection={yes}" -lco SCHEMA={out_schema} -append -update -nln {out_schema}.{out_nln} "{in_file}" -lco "GEOM_TYPE=geography" -a_srs "EPSG:4326" --config MSSQLSPATIAL_USE_GEOMETRY_COLUMNS NO'
print(command)
call(command)

Re: Загрузка osm.pbf в MS SQL Server (open street map)

Добавлено: 11 июл 2022, 14:46
trir
я в своё время не смог разобраться как подключится к MS SQL Server из python'а