Страница 1 из 1

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

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

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']

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

Добавлено: 21 сен 2015, 19:17
nickleb
Александр Мурый писал(а):В 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-вариант - должен для меня подойти, Александр!