GeoTools 操作 shp 文件

default

GeoTools 中 DataStore 和 FeatureIterator 使用完需要及时释放。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Map<String, Object> map = new HashMap();
map.put("url", shpFile.toURL());
DataStore dataStore = null;
SimpleFeatureIterator features = null;
try {
    dataStore = DataStoreFinder.getDataStore(map);
    String typeName = dataStore.getTypeNames()[0];
    SimpleFeatureSource featureSource = dataStore.getFeatureSource(typeName);
    SimpleFeatureCollection featureCollection = featureSource.getFeatures();
    features = featureCollection.features();
    List<Geometry> geometryList = new ArrayList<>();
    while (features.hasNext()) {
        SimpleFeature feature = features.next();
        Geometry geometry = (Geometry) feature.getDefaultGeometry();
        geometryList.add(geometry);
    }
    Geometry[] geometryArray = geometryList.toArray(new Geometry[0]);
    GeometryFactory factory = GeometryUtils.getGeometryFactory();
    return new GeometryCollection(geometryArray, factory);
} finally {
    if (features != null) {
        features.close();
    }
    if (dataStore != null) {
        dataStore.dispose();
    }
}
Gear(夕照)的博客。记录开发、生活,以及一些不足为道的思考……