Замечательная штука, реально выручила.
- После серии попыток использования шейпов в проекте на Топобейс, мы решили загрузить шейпы в Oracle-евую БД. Ибо ни так (напрямую) ни сяк (загрузив в репозиторий проекта в SDF) ни жопой об косяк (перекодировки) — вместо русских буков одни закорючки.
- Полдня грузили шейпы в базу Топобейсовым булкопи (есть такая функция в ем — bulk copy). Вроде загрузилось, трупобейс клянется, что загрузил всё. Проверяем — половина таблиц пустая, половина прогружена наполовину :)
- Сраньгосподня.
-
- После чего взяли FDO Toolbox и за час-другой все залили в базу. По ходу проблема была ровно одна — в одном из шейпов попытались залить строковое поле в поле числового типа (трабла типа «самдурак»). Понятно — не получилось. Поправили и как по маслу, вжик и готово. Хотя про «вжик» это я погорячился, тулза тормозная, сотню тысяч записей грузить может более часу. И не использует многопроцессорность.
-
- Первая из серии статей про работу с растрами в ГИС. Фактически — учебник.
-
Уважаемый автор, подскажите, пожалуйста, нужно ли перекодировать данные перед заливкой их в БД посредством FDO Toolbox(у меня PostGIS c кодировкой UTF-8)? И как это сделать? У меня есть догадка, что надо написать скрипт IronPython-ом и заставить FDO Toolbox его исполнять в момент экспорта данных.
ОтветитьУдалить> нужно ли перекодировать данные перед заливкой их в БД посредством FDO Toolbox(у меня PostGIS c кодировкой UTF-8)?
ОтветитьУдалитьУ меня нет опыта заливки данных в PostGIS, поэтому могу только общие соображения выдать.
Как бы сделал я: сначала попробовал бы по простому, не заморачиваясь, с настройками по умолчанию, залить одну небольшую табличку (фичекласс). По результатам уже смотреть.
Если кракозябры, то оценить, что проще - переконвертировать текст в исходниках или добавить шаг трансформации при загрузке. И попробовать еще пару раз. Если на тестовом кусочке все хорошо, можно приступать к полной загрузке.
В Python перекодировка текста выполняется обычно в два шага:
str = 'text'.decode('utf8') # на выходе юникод, сделанный из ютф8
str = str.encode('cp1251') # на выходе виндовая кодировка, сделанная из юникода
Огромное спасибо за оперативность! Как это "юникод, сделанный из ютф8"?
ОтветитьУдалитьИ вопрос-то как раз в том, КАК добавить шаг трансформации при загрузке? дело в том, что у меня маловато опыта. Буду признательна, если подскажете! )
Дополнительная информация:
FDO Tools при попытке загрузить что-либо в базу ругается, что invalid byte "символ" at position 2 of 3-byte sequence (Occured in an unknown entity, at line 1, column 1) и далее многа букаф. При этом прочими общепризнанными средствами все дивно в базу заливается (эти средства заливают каждое свой формат данных и не заливают автокад, поэтому мне не подходят). И FDO спокойно читает уже залитые таблицы этой базы.
> Как это "юникод, сделанный из ютф8"?
ОтветитьУдалитьЭто просто, на входе строка в кодировке utf8 а на выходе строка в юникод.
> FDO Tools при попытке загрузить что-либо в базу ругается
Видимо, тулбокс не понимает, в какой кодировке исходные данные. Когда я грузил из шейпов (атрибутика в DBF), строки в дбф-ках были в кодировке cp1251, что указывалось в доп.файлах с расширением CPG.
Какой у Вас формат исходных данных, я не знаю. Если бы Вы прислали небольшую выборку тестовых данных, я бы мог предметно покрутить тулбокс. Если захотите, пишите на vasnake@gmail.com