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();
}
}
|