Страница 1 из 1
gdal 1.9, shp и encoding
Добавлено: 14 май 2013, 09:44
Slinger
Не так давно игрался с опцией lco на установку кодировки при формировании шейпа. Изначально шейп был в windows-1251. И необходимо было перекодировать его в UTF-8 через ogr2ogr.
Использовал самый примитив:
ogr2ogr test_utf-8.shp test.shp -lco "ENCODING=UTF-8"
На выходе получил левую кодировку, которая не является ни 1251, ни полученным utf. Видимо из-за того, что ogr2ogr не в курсе, какая кодировка была у выбранного файла. Вопрос - можно ли как-то задать это огру? То бишь задать ему, в какой кодировке открывать файл.
Re: gdal 1.9, shp и encoding
Добавлено: 14 май 2013, 10:47
Дмитрий Барышников
Да - создать cpg файл test.cpg с таким содержимым
utf-8
Это для кодировки UTF8.
Для остальных по аналогии
Re: gdal 1.9, shp и encoding
Добавлено: 14 май 2013, 12:29
Slinger
Получилось, благодарю. Тогда два вопроса в догонку.
1) Могу ли я с помощью ogr2ogr только задать кодировку (сформировать файл .cpg) ? При этом она мне известна и нужно фактически просто создать файл одного и того же содержания. Шейпов у меня будет много, но это думаю можно справить пакетным батником.
2) Допустим кодировка мне неизвестна и она везде разная у шейпов. Может ли огр сам понять кодировку и сформировать файл cpg ?
Re: gdal 1.9, shp и encoding
Добавлено: 14 май 2013, 12:39
trir
2) у shp - нет "кодировки", она есть у dbf - может стоит поискать инструменты для dbf?
Re: gdal 1.9, shp и encoding
Добавлено: 14 май 2013, 12:55
Slinger
А толку. Надо менять всё сразу. И шейп и shx и саму семантику в .dbf. Даже если перекодирую руками через hex-редактор или с помощью dbf редактора в другую кодировку, shx и shp об этом знать не будут. Так что нужен именно инструмент, работающий с шейпами и соответственно со всеми остальными файлами.
Re: gdal 1.9, shp и encoding
Добавлено: 14 май 2013, 13:08
trir
Я как то менял кодировку в DBFNavigator, проблем не возникало...
Re: gdal 1.9, shp и encoding
Добавлено: 14 май 2013, 13:15
Александр Мурый
trir писал(а):2) у shp - нет "кодировки", она есть у dbf - может стоит поискать инструменты для dbf?
К.О.: здесь имеется в виду кодировка шейпфайла как совокупности файлов нескольких форматов (хотя да, по сути важна именно кодировка текста в DBF).
Slinger, можно попробовать написать Python-скрипт с исп-ем OGR (
статья по теме):
- открываем шейп;
- начинаем просматривать его атрибуты (первую строку, например);
- средствами питона определяем кодировку текста в строке;
- создаём файл .cpg, вписываем туда нужную кодировку;
- переходим к другому шейпу, повторяем в цикле то же.
Или исп-ть ещё что-то для определения кодировки DBF и создания соотв-х файлов .cpg.
Re: gdal 1.9, shp и encoding
Добавлено: 14 май 2013, 20:51
Slinger
Стало быть огр бессилен и нужно или программить или найти уже готовый велосипед. Печально.
Re: gdal 1.9, shp и encoding
Добавлено: 15 май 2013, 01:31
doujin
Александр Мурый писал(а):
- средствами питона определяем кодировку текста в строке;
А какие у python есть средства для определения кодировки текста?
Re: gdal 1.9, shp и encoding
Добавлено: 15 май 2013, 09:24
Александр Мурый
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