org.opengis.feature.simple.SimpleFeature
本文最后更新于 2025-10-16,文章内容可能已经过时。
当使用GeoTools读取Shapefile时,通过org.opengis.feature.simple.SimpleFeature对象可以访问所有从shp文件中读取的属性数据,因为这些属性在解析过程中会被完整映射到该对象的属性集合中。 Shapefile的属性信息主要存储在.dbf文件中,读取时GeoTools会将几何数据(来自.shp文件)和属性数据(来自.dbf文件)整合到SimpleFeature实例中,确保每个要素的属性值(如字段值或空间坐标)均可通过getProperties()或getAttribute()方法获取。
例如,在代码实现中,通过FeatureIterator遍历SimpleFeature并调用feature.getProperties()可直接访问所有属性键值对,包括几何信息和非空间属性。
遍历SimpleFeature对象访问属性可通过以下两种核心方式实现,具体选择取决于是否需要同时获取属性名或仅需属性值:
-
通过属性描述符获取名称和值
调用getFeatureType()获取元数据,再遍历AttributeDescriptor列表,结合getLocalName()和getAttribute()实现键值对访问。示例代码如下:SimpleFeatureType featureType = feature.getFeatureType(); for (AttributeDescriptor descriptor : featureType.getAttributeDescriptors()) { String attrName = descriptor.getLocalName(); Object attrValue = feature.getAttribute(attrName); System.out.println(attrName + ": " + attrValue); } -
直接遍历属性集合
使用getProperties()返回的Collection<Property>,通过Property.getName()和Property.getValue()快速提取数据。例如:for (Property prop : feature.getProperties()) { System.out.println(prop.getName() + " = " + prop.getValue()); }
若需过滤特定属性,可在遍历时添加条件判断,例如跳过几何字段(如the_geom)或仅处理数值型属性。对于Shapefile数据,所有.dbf文件中的属性字段均会被加载到SimpleFeature中,包括几何和非几何属性。
- 感谢你赐予我前进的力量

