проблема с созданием полей в GeoTools

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

проблема с созданием полей в GeoTools

Сообщение Филиппов Владислав » 14 ноя 2016, 11:48

Доброго дня.
GeoTools версии 8.5

программно создаю атрибутивное поле в feature:

Код: Выделить всё

SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
builder.setCRS(crs);
builder.setName("CharacterPoint");
builder.add("Geometry", Point.class);
builder.length(30).add("name", String.class);
builder.length(40).add("cadnum", String.class);
builder.length(20).add("ordnumb", String.class);
builder.length(20).add("numgeopt", String.class);
builder.length(5).add("delta", String.class);
builder.length(150).add("pointhold", String.class);
// builder.length(10).add("sunumb", BigInteger.class); и так пробовал
builder.add("sunumb", Integer.class);  <<<------ вот это поле
в получаемом шейпфайле, открываемом в QGIS, поле "sunumb" имеет тип String
Что не так?
Полная версия кода тут - https://bitbucket.org/filippov70/landpr ... ew-default
но там это поле ещё String, я ещё не выкладывал изменения в репозиторий

trir
Гуру
Сообщения: 5292
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: проблема с созданием полей в GeoTools

Сообщение trir » 14 ноя 2016, 11:54

Ты пытаешься записать BigInteger в dbf - серьёзно? :?

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: проблема с созданием полей в GeoTools

Сообщение Филиппов Владислав » 14 ноя 2016, 12:00

builder.add("sunumb", Integer.class);

trir
Гуру
Сообщения: 5292
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: проблема с созданием полей в GeoTools

Сообщение trir » 14 ноя 2016, 12:06

Файл, в котором записывается атрибутивная информация, геометрических объектов, описанных в .SHP — файле. Представляет собой базу данных в формате dBase II.
https://ru.wikipedia.org/wiki/Shapefile#.dbf
В январе 1981 г. по всей стране началась шумная реклама этой системы, очень скоро ставшей новым «бестселлером». И почти столь же стремительно Рэтлифф, Лашли и Тейт пополнили все возрастающие ряды миллионеров, сделавших состояния на программном обеспечении.
https://ru.wikipedia.org/wiki/DBase#dBase_II
The following are extended field data types available in DBF tables. The extended data types are non-standard DBF extensions. Non-Advantage applications that read DBF tables may not be able to open and read tables that have extended data types. Visual FoxPro will recognize double, integer, general, and picture fields.
http://devzone.advantagedatabase.com/dz ... ations.htm

В стандартном dbf числа это Numeric в виде строки, Integer это расширение - спецификация shp'а его поддерживает? А кто об этом знает?

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: проблема с созданием полей в GeoTools

Сообщение Филиппов Владислав » 14 ноя 2016, 13:52

я сам шейп не пишу, я использую Geotools. собственно и вопрос по этой библиотеке, что в ней не так?

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: проблема с созданием полей в GeoTools

Сообщение Филиппов Владислав » 14 ноя 2016, 14:04

проблема решена. это не geotools виноват

trir
Гуру
Сообщения: 5292
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: проблема с созданием полей в GeoTools

Сообщение trir » 14 ноя 2016, 14:04

ADJUST_TYPE=YES/NO: Set to YES (default is NO) to read the whole .dbf to adjust Real->Integer/Integer64 or Integer64->Integer field types when possible. This can be used when field widths are ambiguous and that by default OGR would select the larger data type. For example, a numeric column with 0 decimal figures and with width of 10/11 character may hold Integer or Integer64, and with width 19/20 may hold Integer64 or larger integer (hold as Real)
http://www.gdal.org/drv_shapefile.html

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: проблема с созданием полей в GeoTools

Сообщение gamm » 14 ноя 2016, 14:09

про библиотеку не в курсе, но в самом dBase, насколько я помню, были только числа с фиксированной точкой в символьном виде. Нужно смотреть исходник библиотеки, чего они туда умеют вставлять, в том же Fox много чего добавили.

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: проблема с созданием полей в GeoTools

Сообщение Филиппов Владислав » 22 ноя 2016, 08:13

чтоб окончательно закрыть вопрос.
Всё было хорошо, но в своё время другим разработчиком был добавлен метод, который для каждого поля определял максимальную дину и усекал размер до этого максимума, я про него забыл. А все поля до этого, кроме геометрии, были строками, вот этот метод и превращал новое поле в строку.
Вот и вся магия.

Ответить

Вернуться в «Общий - ПО»

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

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