gdal 1.9, shp и encoding
-
- Гуру
- Сообщения: 879
- Зарегистрирован: 17 июн 2010, 23:14
- Репутация: 207
- Откуда: Москва
gdal 1.9, shp и encoding
Не так давно игрался с опцией lco на установку кодировки при формировании шейпа. Изначально шейп был в windows-1251. И необходимо было перекодировать его в UTF-8 через ogr2ogr.
Использовал самый примитив:
ogr2ogr test_utf-8.shp test.shp -lco "ENCODING=UTF-8"
На выходе получил левую кодировку, которая не является ни 1251, ни полученным utf. Видимо из-за того, что 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 с таким содержимым
Для остальных по аналогии
Это для кодировки UTF8.utf-8
Для остальных по аналогии
-
- Гуру
- Сообщения: 879
- Зарегистрирован: 17 июн 2010, 23:14
- Репутация: 207
- Откуда: Москва
Re: gdal 1.9, shp и encoding
Получилось, благодарю. Тогда два вопроса в догонку.
1) Могу ли я с помощью ogr2ogr только задать кодировку (сформировать файл .cpg) ? При этом она мне известна и нужно фактически просто создать файл одного и того же содержания. Шейпов у меня будет много, но это думаю можно справить пакетным батником.
2) Допустим кодировка мне неизвестна и она везде разная у шейпов. Может ли огр сам понять кодировку и сформировать файл cpg ?
1) Могу ли я с помощью ogr2ogr только задать кодировку (сформировать файл .cpg) ? При этом она мне известна и нужно фактически просто создать файл одного и того же содержания. Шейпов у меня будет много, но это думаю можно справить пакетным батником.
2) Допустим кодировка мне неизвестна и она везде разная у шейпов. Может ли огр сам понять кодировку и сформировать файл cpg ?
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: gdal 1.9, shp и encoding
2) у shp - нет "кодировки", она есть у dbf - может стоит поискать инструменты для dbf?
-
- Гуру
- Сообщения: 879
- Зарегистрирован: 17 июн 2010, 23:14
- Репутация: 207
- Откуда: Москва
Re: gdal 1.9, shp и encoding
А толку. Надо менять всё сразу. И шейп и shx и саму семантику в .dbf. Даже если перекодирую руками через hex-редактор или с помощью dbf редактора в другую кодировку, shx и shp об этом знать не будут. Так что нужен именно инструмент, работающий с шейпами и соответственно со всеми остальными файлами.
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: gdal 1.9, shp и encoding
Я как то менял кодировку в DBFNavigator, проблем не возникало...
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: gdal 1.9, shp и encoding
К.О.: здесь имеется в виду кодировка шейпфайла как совокупности файлов нескольких форматов (хотя да, по сути важна именно кодировка текста в DBF).trir писал(а):2) у shp - нет "кодировки", она есть у dbf - может стоит поискать инструменты для dbf?
Slinger, можно попробовать написать Python-скрипт с исп-ем OGR (статья по теме):
- открываем шейп;
- начинаем просматривать его атрибуты (первую строку, например);
- средствами питона определяем кодировку текста в строке;
- создаём файл .cpg, вписываем туда нужную кодировку;
- переходим к другому шейпу, повторяем в цикле то же.
Или исп-ть ещё что-то для определения кодировки DBF и создания соотв-х файлов .cpg.
Редактор материалов, модератор форума
-
- Гуру
- Сообщения: 879
- Зарегистрирован: 17 июн 2010, 23:14
- Репутация: 207
- Откуда: Москва
Re: gdal 1.9, shp и encoding
Стало быть огр бессилен и нужно или программить или найти уже готовый велосипед. Печально.
-
- Активный участник
- Сообщения: 163
- Зарегистрирован: 28 июн 2012, 01:02
- Репутация: 84
- Откуда: Vladivostok
Re: gdal 1.9, shp и encoding
А какие у python есть средства для определения кодировки текста?Александр Мурый писал(а): - средствами питона определяем кодировку текста в строке;
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: gdal 1.9, shp и encoding
Есть, например, chardet.doujin писал(а): А какие у python есть средства для определения кодировки текста?
Код: Выделить всё
>>> 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
Редактор материалов, модератор форума
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 30 гостей