Узнать исходную кодировку загружаемого shp-файла

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
nickleb
Гуру
Сообщения: 969
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Узнать исходную кодировку загружаемого shp-файла

Сообщение nickleb » 20 сен 2015, 09:12

Пожалуйста, подскажите как узнать исходную кодировку загружаемого в QGIS - shp-файла? И есть ли таковая функция в Python'е ("внутрях" QGIS 2.8 под Windows)?

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

Re: Узнать исходную кодировку загружаемого shp-файла

Сообщение Александр Мурый » 21 сен 2015, 19:13

В Linux-системе кодировку шейп-файла проще всего определить так (без Питона, нужна утилита enca):

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

ogrinfo -al test.shp | enca
или так

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

ogr2ogr -f CSV test.csv test.dbf
enca test.csv
А вот вариант на Питоне с исп-ем библиотек dbfpy и chardet:

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


from dbfpy import dbf
from chardet import detect

db = dbf.Dbf('test.dbf')

N=0
enc_list = []

for rec in db:
for f in rec.fieldData:
while N < 10:
N = N + 1
enc_list.append(detect(f))

result = [dict(y) for y in set(tuple(x.items()) for x in enc_list)]
print result[0]['encoding']
Редактор материалов, модератор форума

nickleb
Гуру
Сообщения: 969
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Узнать исходную кодировку загружаемого shp-файла

Сообщение nickleb » 21 сен 2015, 19:17

Александр Мурый писал(а):В Linux-системе кодировку шейп-файла проще всего определить так (без Питона, нужна утилита enca):

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

ogrinfo -al test.shp | enca
или так

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

ogr2ogr -f CSV test.csv test.dbf
enca test.csv
А вот вариант на Питоне с исп-ем библиотек dbfpy и chardet:

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


from dbfpy import dbf
from chardet import detect

db = dbf.Dbf('test.dbf')

N=0
enc_list = []

for rec in db:
for f in rec.fieldData:
while N < 10:
N = N + 1
enc_list.append(detect(f))

result = [dict(y) for y in set(tuple(x.items()) for x in enc_list)]
print result[0]['encoding']
Спасибо - Python-вариант - должен для меня подойти, Александр!

Ответить

Вернуться в «QGIS»

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

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