添加依赖
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-main</artifactId>
<version>${geotools.version}</version>
</dependency>
获取datastore
public DataStore getDataStore(String shpPath) throws Exception {
File file = new File(shpPath);
Map params = new HashMap();
params.put("url", file.toURI().toURL());
for (Iterator i = DataStoreFinder.getAvailableDataStores(); i.hasNext(); ) {
DataStoreFactorySpi factory = (DataStoreFactorySpi) i.next();
try {
if (factory.canProcess(params)) {
dataStore = factory.createNewDataStore(params);
((ShapefileDataStore) dataStore).setCharset(Charset.forName("GBK"));
typeName = dataStore.getTypeNames()[0];
featureSource = dataStore.getFeatureSource(dataStore.getTypeNames()[0]);
}
} catch (Throwable warning) {
warning.printStackTrace();
}
}
return null;
}
增加
public void addFeature(List<String> dataList) throws IOException {
System.out.println("============addFeature=====start=====");
SimpleFeatureStore store = (SimpleFeatureStore) dataStore.getFeatureSource(typeName);
SimpleFeatureType featureType = store.getSchema();
SimpleFeatureBuilder build = new SimpleFeatureBuilder(featureType);
GeometryBuilder geom = new GeometryBuilder();
List<SimpleFeature> list = new ArrayList<>();
for (String row : dataList) {
String[] rowArr = row.split(",");
SimpleFeature feature = build.buildFeature(rowArr[0]);
feature.setAttribute("ID", rowArr[0]);
feature.setAttribute("NUM", rowArr[1]);
feature.setAttribute("NAME", rowArr[2]);
feature.setAttribute("MANAGER", rowArr[3]);
feature.setAttribute("TYPE", rowArr[4]);
feature.setAttribute("MESHID", rowArr[5]);
feature.setAttribute("JDCODE", rowArr[6]);
list.add(feature);
}
SimpleFeatureCollection collection = new ListFeatureCollection(featureType, list);
Transaction transaction = new DefaultTransaction(handle);
store.setTransaction(transaction);
try {
store.addFeatures(collection);
transaction.commit();
} catch (Exception eek) {
eek.printStackTrace();
transaction.rollback();
}
}
修改要素
public void updateFeature(String id) throws IOException {
System.out.println("========updateFeature====start====");
long currentTimeMillis = System.currentTimeMillis();
Transaction transaction = new DefaultTransaction(handle);
SimpleFeatureStore store = (SimpleFeatureStore) dataStore.getFeatureSource(typeName);
store.setTransaction(transaction);
FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
Filter filter = ff.equals(ff.property("ID"), ff.literal(id));
SimpleFeatureType featureType = store.getSchema();
try {
store.modifyFeatures("ROAD", "xbmchina.cn", filter);
transaction.commit();
System.out.println("========updateFeature====end====");
} catch (Exception eek) {
eek.printStackTrace();
transaction.rollback();
}
long l = System.currentTimeMillis() - currentTimeMillis;
System.out.println("耗时:"+l/1000.0);
}
删除要素
public void removeFeature(Set<String> ids) throws IOException {
System.out.println("======removeFeature== start ========");
long currentTimeMillis = System.currentTimeMillis();
Transaction transaction = new DefaultTransaction(handle);
SimpleFeatureStore store = (SimpleFeatureStore) dataStore.getFeatureSource(typeName);
store.setTransaction(transaction);
FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
List<Filter> match = new ArrayList<>();
for (String id : ids) {
Filter aMatch = ff.equals(ff.property("ID"), ff.literal(id));
match.add(aMatch);
}
Filter filter = ff.or(match);
try {
store.removeFeatures(filter);
transaction.commit();
System.out.println("======removeFeature== done ========");
} catch (Exception eek) {
eek.printStackTrace();
transaction.rollback();
}
long l = System.currentTimeMillis() - currentTimeMillis;
System.out.println("耗时:"+l/1000.0);
}
查看记录
public void getFeaturesByDataID(String id) throws IOException, CQLException {
System.out.println("======getByDataID====start=====");
long currentTimeMillis = System.currentTimeMillis();
FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
Filter filter = CQL.toFilter("ID = 'ef7872a5959448c8bfb24604adc07ada' ");
Filter filter = ff.equals(ff.property("ID"), ff.literal(id));
FeatureCollection<SimpleFeatureType, SimpleFeature> features = featureSource.getFeatures(filter);
System.out.println("features size:" + features.size());
FeatureIterator<SimpleFeature> featureIterator = features.features();
while (featureIterator.hasNext()) {
SimpleFeature feature = featureIterator.next();
Collection<Property> properties = feature.getProperties();
System.out.println(properties);
}
System.out.println("======getByDataID====done=====");
long l = System.currentTimeMillis() - currentTimeMillis;
System.out.println("耗时:"+l/1000.0); }