gdal 1.9, shp и encoding

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

gdal 1.9, shp и encoding

Сообщение Slinger » 14 май 2013, 09:44

Не так давно игрался с опцией 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

Сообщение Дмитрий Барышников » 14 май 2013, 10:47

Да - создать cpg файл test.cpg с таким содержимым
utf-8
Это для кодировки UTF8.
Для остальных по аналогии

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

Re: gdal 1.9, shp и encoding

Сообщение Slinger » 14 май 2013, 12:29

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

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

2) Допустим кодировка мне неизвестна и она везде разная у шейпов. Может ли огр сам понять кодировку и сформировать файл cpg ?

trir
Гуру
Сообщения: 5292
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: gdal 1.9, shp и encoding

Сообщение trir » 14 май 2013, 12:39

2) у shp - нет "кодировки", она есть у dbf - может стоит поискать инструменты для dbf?

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

Re: gdal 1.9, shp и encoding

Сообщение Slinger » 14 май 2013, 12:55

А толку. Надо менять всё сразу. И шейп и shx и саму семантику в .dbf. Даже если перекодирую руками через hex-редактор или с помощью dbf редактора в другую кодировку, shx и shp об этом знать не будут. Так что нужен именно инструмент, работающий с шейпами и соответственно со всеми остальными файлами.

trir
Гуру
Сообщения: 5292
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: gdal 1.9, shp и encoding

Сообщение trir » 14 май 2013, 13:08

Я как то менял кодировку в DBFNavigator, проблем не возникало...

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

Re: gdal 1.9, shp и encoding

Сообщение Александр Мурый » 14 май 2013, 13:15

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 » 14 май 2013, 20:51

Стало быть огр бессилен и нужно или программить или найти уже готовый велосипед. Печально.

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

Re: gdal 1.9, shp и encoding

Сообщение doujin » 15 май 2013, 01:31

Александр Мурый писал(а): - средствами питона определяем кодировку текста в строке;
А какие у python есть средства для определения кодировки текста?

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

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
Редактор материалов, модератор форума

Ответить

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

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

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