JOIN обрезка длины строки при сохранении в SHP

Здесь нужно сообщать об ошибках в QGIS, с подробным описанием шагов и версии ПО.
Ответить
bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Репутация: 236
Откуда: Ханты-Мансийск
Контактная информация:

JOIN обрезка длины строки при сохранении в SHP

Сообщение bolotoved » 13 дек 2011, 07:03

Тоже пожалуюсь на JOIN: При прикреплении таблицы с длинными строками, в самой синтезированной таблице длинные поля отображаются адекватно, а вот при экспорте в шейп, обрезаются до 80-ти символов (кодировка CP-1251). Вроде бы это не ограничение dbf, т.к. мне попадались более длинные названия в атрибутивных стоблцах шейп-файлов.
Вложения
vegetation_legend.7z
(8.09 КБ) 338 скачиваний

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

Re: JOIN обрезка длины строки при сохранении в SHP

Сообщение Александр Мурый » 13 дек 2011, 08:33

Читаем на странице GDAL-драйвера ESRI Shapefile:
String fields without an assigned width are treated as 80 characters.
Дело в этом? Как в QGIS при сохранении в шейп из файла с разделителем задать количество символов в строке в атрибут. таблице?
Редактор материалов, модератор форума

bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Репутация: 236
Откуда: Ханты-Мансийск
Контактная информация:

Re: JOIN обрезка длины строки при сохранении в SHP

Сообщение bolotoved » 13 дек 2011, 10:14

Видимо да, дело в этом. Тогда это скорее всего касается не только JOIN.

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: JOIN обрезка длины строки при сохранении в SHP

Сообщение Voltron » 20 дек 2011, 17:14

Тэкс... В эфире передача «Скандалы, интриги, расследования» :-).

На первый взгляд, все выглядит так, как описано в стартовом посте. Загружаем слой и CSV, соединяем их, экспортируем и получаем поле Name1 в 80 символов. Беда...

Прозвучало предположение о том, что причина всех бед — GDAL. Так ли это? Проверим. Для начала откроем в QGIS любой шейп с длинным атрибутивным полем, символов на 100-200. И сохраним его еще раз как shape-файл. А теперь сравним эти два файла. Сюрприз! Разработчики QGIS тоже не дураки, и на умолчательное поведение драйвера не полагаются. Все на месте, обвинение несостоятельно и снимается.

Тогда почему мы имеем то, что имеем? Ответ находится на странице описания драйвера CSV и в диалоге свойств слоя на вкладке «Поля». Читаем описание драйвера
The OGR CSV driver returns all attribute columns with a type of string if no field type information file (with .csvt extension) is available.
Теперь смотрим свойства слоя. Упс... длина всех полей неопределена, что равносильно использованию значений по умолчанию при записи (те самые 80 символов, да). Решение простое — создать файл с описанием полей, где и указать тип и размерность каждого поля. Тогда все экспортируется (с учетом ограничения на длину строки в 255 символов).

Ответить

Вернуться в «Ошибки QGIS»

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

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