ogr2ogr проблемы c русскими символами в MS SQL Server

Ответить
Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

ogr2ogr проблемы c русскими символами в MS SQL Server

Сообщение Филиппов Владислав » 20 май 2015, 12:21

Доброго дня.
Нужно загрузить данные из шейпа в БД MS SQL Server 2008.
БД эта имеет кодировку Cyrillic_General_CI_AS
Использовал исходный шейп как в UTF-8 так и в CP1251. Русских символов в БД не имею.
есть файлик lesnich.cpg и в нём строчка UTF-8.
Пробовал параметры Regional и AutoTranslate

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

ogr2ogr -overwrite -skipfailures -f MSSQLSpatial "MSSQL:server=SRV\SQL2008;database=ForGis;trusted_connection=yes;Regional=yes" "C:\usr\lesnich.shp" -a_srs EPSG:4326 -lco PRECISION=FALSE --config CPL_DEBUG ON
Запускаю всё в OSGeo4W От QGIS 2.8.2
Что делаю не так?

Аватара пользователя
paleogis
Модератор
Сообщения: 1112
Зарегистрирован: 22 мар 2009, 08:54
Репутация: 200
Ваше звание: Модератоо

Re: ogr2ogr проблемы c русскими символами в MS SQL Server

Сообщение paleogis » 20 май 2015, 12:35

Я чайник в этих вопросах, но попробовал бы загрузить SHP на винде с русской локалью.

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: ogr2ogr проблемы c русскими символами в MS SQL Server

Сообщение Филиппов Владислав » 20 май 2015, 13:07

победа! аж сам не ожидал. реально часа 4 гуглил...
лучше всего подходит формат MID/MIF в кодировке CP1251

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

ogr2ogr -overwrite -skipfailures -f MSSQLSpatial "MSSQL:server=SRV\SQL2008;database=ForGis;trusted_connection=yes;Regional=yes" "C:\usr\lesnich.mif" -a_srs EPSG:4326 -lco PRECISION=FALSE --config CPL_DEBUG ON

MichaelK
Новоприбывший
Сообщения: 14
Зарегистрирован: 19 июн 2012, 23:28
Репутация: 5

Re: ogr2ogr проблемы c русскими символами в MS SQL Server

Сообщение MichaelK » 25 май 2015, 15:17

Можно было взять shp с CP1251 и добавить параметр --config SHAPE_ENCODING UTF-8

Дело в том что с версии gdal 1.9 (если не ошибаюсь), разработчики добавили систему внутреннего перекодирования текста.
Текст из драйвера-источника перекодируется в промежуточную кодировку (UTF-8), затем отравляется в драйвер-получатель.
Например: из "ESRI Shapefile" читается cp1251 -> перекодируется в UTF-8 -> отправляется в "Mapinfo File"
Самое интересное тут, что перекодировка реализована не во всех драйверах.
В "ESRI Shapefile" она есть, в "Mapinfo File" и MSSQLSpatial её нет.

Т.е. если вы подаете на вход C:\usr\lesnich.shp, не важно в CP1251 или UTF-8, драйвер MSSQLSpatial все равно получит UTF-8 (ну или то что получилось после попытки прекодировать текст в UTF-8).
Трюк в том, чтобы убедить gdal что у нас уже UTF-8, и тогда не происходит никаких перекодировок и текст отправляется как есть.

У вас сработал такой способ потому что в "Mapinfo File" и MSSQLSpatial нет никаких перекодировок и текст отправился как есть.

Ответить

Вернуться в «GDAL/OGR»

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

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