Изменение кодировки DBF файла

Обсуждение материалов сайта: вопросы, замечания, предложения
Sergey Astakhov
Активный участник
Сообщения: 218
Зарегистрирован: 21 дек 2012, 01:57
Репутация: 52
Откуда: Питер

Re: Ошибка при запуске

Сообщение Sergey Astakhov » 26 ноя 2014, 15:59

vitte писал(а):Добрый день. При запуске выдает следующую ошибку. Подскажите в чем дело.

ValueError: invalid literal for int() with base 10: '**********'
DBF-ник кривой. Там в одной из строк в числовом поле записаны звёздочки ('**********', обычно такие пишутся при переполнениях), а скрипт на такое коварство не рассчитан. Возможные варианты решения:
  • Увеличьте размерность поля при экспорте (там, где DBF-ка формируется). Самый правильный вариант.
  • Подправить DBF-ку (обнулить эти поля со звёздочками)
  • Подправить скрипт/библиотеку dbfpy, чтобы они корректно обрабатывали такие значения.

vitte
Интересующийся
Сообщения: 23
Зарегистрирован: 16 апр 2012, 04:51
Репутация: 0

Re: Изменение кодировки DBF файла

Сообщение vitte » 27 ноя 2014, 07:49

dbf формируется ogr2ogr, повлиять на него не смогу.
Звездочек в числовых полях dbf не обнаружил.
Еще есть мнение что не все питоновские библиотеки встали.

Sergey Astakhov
Активный участник
Сообщения: 218
Зарегистрирован: 21 дек 2012, 01:57
Репутация: 52
Откуда: Питер

Re: Изменение кодировки DBF файла

Сообщение Sergey Astakhov » 27 ноя 2014, 13:37

vitte писал(а):dbf формируется ogr2ogr, повлиять на него не смогу.
Звездочек в числовых полях dbf не обнаружил.
Еще есть мнение что не все питоновские библиотеки встали.
Тогда выложите куда-нить пример dbf-ки, на которой ломается.

psyhosis
Интересующийся
Сообщения: 22
Зарегистрирован: 05 май 2013, 20:41
Репутация: 1

Re: Изменение кодировки DBF файла

Сообщение psyhosis » 28 ноя 2014, 16:06

Добре!
а сама база то где?
а сам текст ошибки ничего не подсказывает? Система ждет ineger, а ей суют строку char-ов

psyhosis
Интересующийся
Сообщения: 22
Зарегистрирован: 05 май 2013, 20:41
Репутация: 1

Re: Изменение кодировки DBF файла

Сообщение psyhosis » 28 ноя 2014, 16:10

и еще, только dbf, на другой, более свежий и более открытый и продвинутый формат никак не перелезть?

psyhosis
Интересующийся
Сообщения: 22
Зарегистрирован: 05 май 2013, 20:41
Репутация: 1

Re: Изменение кодировки DBF файла

Сообщение psyhosis » 28 ноя 2014, 16:19

Под виндой на питоне? Винда не под вайном ли запущна? :)
DBF командир может попроще будет?
Какой исходный формат то? И какой на выходе?

Sergey Astakhov
Активный участник
Сообщения: 218
Зарегистрирован: 21 дек 2012, 01:57
Репутация: 52
Откуда: Питер

Re: Изменение кодировки DBF файла

Сообщение Sergey Astakhov » 29 ноя 2014, 03:28

vitte писал(а):Звездочек в числовых полях dbf не обнаружил.
Посмотрел на ваш файл, присланный в личку. Ну собственно как я и говорил - у вас там все строки в сплошных звёздочках (например значение поля id_code). Посмотрите содержимое в любом текстовом viewer-е (например в FAR). Типовые просмотрщики DBF обычно молча проглатывают эти значения (подставляют 0), а вот питоновская библиотека более привередлива.

Размеры полей должны определятся в источнике. Вы из какого типа данных конвертите?
Если вы shapefile генерите через OGR, то вроде как последние версии должны уметь автоматом подстраивать размеры полей:
Starting with GDAL/OGR 1.10, the driver knows to auto-extend string and integer fields (up to the 255 bytes limit imposed by the DBF format) to dynamically accomodate for the length of the data to be inserted.
...
Resizing columns of a DBF file to their optimal size (OGR >= 1.10.0) :
% ogrinfo file1.dbf -sql "RESIZE file1"
http://www.gdal.org/drv_shapefile.html

vitte
Интересующийся
Сообщения: 23
Зарегистрирован: 16 апр 2012, 04:51
Репутация: 0

Re: Изменение кодировки DBF файла

Сообщение vitte » 30 ноя 2014, 08:03

Шейпы генерировал ogr2ogr (1.11.0 версии) из данных MS SQL. Смотрел стандартными просмотрщиками, поэтому не видел звездочек.
Вопрос снят.
Спасибо

Ответить

Вернуться в «Материалы сайта»

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

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