gdal 1.9, shp и encoding

Ответить
Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

gdal 1.9, shp и encoding

Сообщение Slinger »

Не так давно игрался с опцией lco на установку кодировки при формировании шейпа. Изначально шейп был в windows-1251. И необходимо было перекодировать его в UTF-8 через ogr2ogr.

Использовал самый примитив:

ogr2ogr test_utf-8.shp test.shp -lco "ENCODING=UTF-8"

На выходе получил левую кодировку, которая не является ни 1251, ни полученным utf. Видимо из-за того, что ogr2ogr не в курсе, какая кодировка была у выбранного файла. Вопрос - можно ли как-то задать это огру? То бишь задать ему, в какой кодировке открывать файл.
Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: gdal 1.9, shp и encoding

Сообщение Дмитрий Барышников »

Да - создать cpg файл test.cpg с таким содержимым
utf-8
Это для кодировки UTF8.
Для остальных по аналогии
Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Re: gdal 1.9, shp и encoding

Сообщение Slinger »

Получилось, благодарю. Тогда два вопроса в догонку.

1) Могу ли я с помощью ogr2ogr только задать кодировку (сформировать файл .cpg) ? При этом она мне известна и нужно фактически просто создать файл одного и того же содержания. Шейпов у меня будет много, но это думаю можно справить пакетным батником.

2) Допустим кодировка мне неизвестна и она везде разная у шейпов. Может ли огр сам понять кодировку и сформировать файл cpg ?
trir
Гуру
Сообщения: 5354
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: gdal 1.9, shp и encoding

Сообщение trir »

2) у shp - нет "кодировки", она есть у dbf - может стоит поискать инструменты для dbf?
Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Re: gdal 1.9, shp и encoding

Сообщение Slinger »

А толку. Надо менять всё сразу. И шейп и shx и саму семантику в .dbf. Даже если перекодирую руками через hex-редактор или с помощью dbf редактора в другую кодировку, shx и shp об этом знать не будут. Так что нужен именно инструмент, работающий с шейпами и соответственно со всеми остальными файлами.
trir
Гуру
Сообщения: 5354
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: gdal 1.9, shp и encoding

Сообщение trir »

Я как то менял кодировку в DBFNavigator, проблем не возникало...
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: gdal 1.9, shp и encoding

Сообщение Александр Мурый »

trir писал(а):2) у shp - нет "кодировки", она есть у dbf - может стоит поискать инструменты для dbf?
К.О.: здесь имеется в виду кодировка шейпфайла как совокупности файлов нескольких форматов (хотя да, по сути важна именно кодировка текста в DBF).

Slinger, можно попробовать написать Python-скрипт с исп-ем OGR (статья по теме):
- открываем шейп;
- начинаем просматривать его атрибуты (первую строку, например);
- средствами питона определяем кодировку текста в строке;
- создаём файл .cpg, вписываем туда нужную кодировку;
- переходим к другому шейпу, повторяем в цикле то же.

Или исп-ть ещё что-то для определения кодировки DBF и создания соотв-х файлов .cpg.
Редактор материалов, модератор форума
Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Re: gdal 1.9, shp и encoding

Сообщение Slinger »

Стало быть огр бессилен и нужно или программить или найти уже готовый велосипед. Печально.
doujin
Активный участник
Сообщения: 163
Зарегистрирован: 28 июн 2012, 01:02
Репутация: 84
Откуда: Vladivostok

Re: gdal 1.9, shp и encoding

Сообщение doujin »

Александр Мурый писал(а): - средствами питона определяем кодировку текста в строке;
А какие у python есть средства для определения кодировки текста?
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: gdal 1.9, shp и encoding

Сообщение Александр Мурый »

doujin писал(а): А какие у python есть средства для определения кодировки текста?
Есть, например, chardet.

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


>>> import chardet
>>> f1 = open('file1.txt', "r").read()
>>> enc = chardet.detect(f1)
>>> enc1 = enc['encoding']
>>> print enc1
windows-1251
>>> print f1.decode(('%s') % enc1)
файл в CP1251
Редактор материалов, модератор форума
Ответить

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

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

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