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

Типы полей атрибутов

Добавлено: 07 сен 2016, 21:38
alphart
Добрый день.
1. Вопрос про типы полей.
в Qgis был сделан shape. Основной тип для полей - integer/double.
Открываю этот shape параллельно в ArcGIS - половина полей стала float.
Это разные подходы к описанию полей в Qgis и ArcGIS?
2. Имеется слой с полями float, short, long integer в ArcGIS в базе данных.
При редактировании для части полей значения не заполняются. Выгружаем данные из БД в shape - в результате для всех ячеек незаполненных числовых полей значение стало 0. При попытке удалить и сохранить - ругается и ссылается, что поле не может быть пустым без значений.
Открываем этот shape в Qgis - поля из float превращаются в integer. Значение "0" спокойно удаляется и сохраняется (становится NULL).
В итоге этот shape в ArcMap открывается со значением 0, в Qgis - NULL.

Собственно проблема: данные редактируются в ArcMAP и выгружаются из БД в shape для передачи заказчику, который работает в Qgis. Значение 0 и NULL - не одинаковы, это критично! Для ячеек, где отсутствуют данные, должен стоять NULL.
Вижу вариант - выгружаю в shp и через калькулятор полей удаляю 0. Но слоев больше 20 и в каждом с 1-2 десятка полей (поля разные для слоев). Много лишней работы.
Может у кого-нибудь есть идеи, как обойти проблему.
Спасибо.

Re: Типы полей атрибутов

Добавлено: 07 сен 2016, 22:44
trir
не используйте shp'ы

Re: Типы полей атрибутов

Добавлено: 08 сен 2016, 09:48
alphart
Не вариант. Конечный результат должен быть в .shp.

Re: Типы полей атрибутов

Добавлено: 08 сен 2016, 10:08
trir
а чем выгружаете?
Конечный результат должен быть в .shp.
Почему? Если Заказчик работает в QGIS, то там есть куча более удобных форматов, например SpatiaLite.

Работайте с БД из QGIS.

Re: Типы полей атрибутов

Добавлено: 08 сен 2016, 16:10
Monstria
alphart писал(а):Не вариант. Конечный результат должен быть в .shp.
Тут такое дело - формат sрape не подразумевает значение NULL как таковое, так как в структуре файла ЗАРЕЗЕРВИРОВАНО место под хранимый тип данных для КАЖДОЙ ячейки строки (т.е. пустое значение все равно должно быть чем то заполнено - по умолчанию это 0, для строки - строка указанной длины с пустым значением char).
Т.е. разные программы могут по разному интерпретировать работу с шейпами, но ESRI, являясь родительницей как формата shp, так и программы ArcGis - работает наиболее корректно. Все остальные интерпретируют свою работу с шейпами в задуманном для себя виде.

Re: Типы полей атрибутов

Добавлено: 08 сен 2016, 19:41
alphart
Видимо придется заменять значения в Qgis.
Всем спасибо за участие.

Re: Типы полей атрибутов

Добавлено: 08 сен 2016, 23:11
Дмитрий Барышников
2alphart Я думаю это самый правильный вариант или скриптом через gdal

2Monstria Вы не правы. За атрибуты в формате ESRI Shape отвечает dbf - формат dBase IV к которому никакого отношения ESRI не имеет и даже не совсем корректно с ним работает. Кроме того, спецификация части формата shape file открыта и эталонная реализация, по моему мнению у gdal. А вот ESRI в 10-й версии уже поменяло поведение и сейчас кодировка по-умолчанию вместо системной - UTF8. Так что ESRI довольно небрежны с этим форматом.

Re: Типы полей атрибутов

Добавлено: 09 сен 2016, 05:32
Monstria
Дмитрий Барышников писал(а):2alphart Я думаю это самый правильный вариант или скриптом через gdal

2Monstria Вы не правы. За атрибуты в формате ESRI Shape отвечает dbf - формат dBase IV к которому никакого отношения ESRI не имеет и даже не совсем корректно с ним работает.
О да... лоханулся :).
Именно для хранения атрибутов используется dbf, но суть то не меняется - ну нельзя в dbf хранить пустые значения :). Показать структуру файла?

Re: Типы полей атрибутов

Добавлено: 09 сен 2016, 13:53
Ariki
Изначально NULL в DBF не предусмотрено, потому Esri их и не поддерживает. А вот shapelib пользуется тем, что в DBF значения полей хранятся в текстовом виде, и поддерживает специальные значения, обозначающие NULL (для каждого типа данных свои).