Страница 1 из 1
проблема с созданием полей в 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, я ещё не выкладывал изменения в репозиторий
Re: проблема с созданием полей в GeoTools
Добавлено: 14 ноя 2016, 11:54
trir
Ты пытаешься записать BigInteger в dbf -
серьёзно? 
Re: проблема с созданием полей в GeoTools
Добавлено: 14 ноя 2016, 12:00
Филиппов Владислав
builder.add("sunumb", Integer.class);
Re: проблема с созданием полей в GeoTools
Добавлено: 14 ноя 2016, 12:06
trir
Файл, в котором записывается атрибутивная информация, геометрических объектов, описанных в .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'а его поддерживает? А кто об этом знает?
Re: проблема с созданием полей в GeoTools
Добавлено: 14 ноя 2016, 13:52
Филиппов Владислав
я сам шейп не пишу, я использую Geotools. собственно и вопрос по этой библиотеке, что в ней не так?
Re: проблема с созданием полей в GeoTools
Добавлено: 14 ноя 2016, 14:04
Филиппов Владислав
проблема решена. это не geotools виноват
Re: проблема с созданием полей в GeoTools
Добавлено: 14 ноя 2016, 14:04
trir
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
Re: проблема с созданием полей в GeoTools
Добавлено: 14 ноя 2016, 14:09
gamm
про библиотеку не в курсе, но в самом dBase, насколько я помню, были только числа с фиксированной точкой в символьном виде. Нужно смотреть исходник библиотеки, чего они туда умеют вставлять, в том же Fox много чего добавили.
Re: проблема с созданием полей в GeoTools
Добавлено: 22 ноя 2016, 08:13
Филиппов Владислав
чтоб окончательно закрыть вопрос.
Всё было хорошо, но в своё время другим разработчиком был добавлен метод, который для каждого поля определял максимальную дину и усекал размер до этого максимума, я про него забыл. А все поля до этого, кроме геометрии, были строками, вот этот метод и превращал новое поле в строку.
Вот и вся магия.