//**finder获取对应数据格式的数据源,栅格数据,矢量数据在图层上是一样的,可以叠加
//栅格数据没有feature,只有四至等描述,直接渲染
AbstractGridFormat format = GridFormatFinder.findFormat( rasterFile );
reader = format.getReader(rasterFile);
FileDataStore dataStore = FileDataStoreFinder.getDataStore(shpFile);
SimpleFeatureSource shapefileSource = dataStore
.getFeatureSource();
除了栅格数据只能显示,无法解析成内部要素几何,shp等矢量数据都能自动映射到simplefeature
cvs需要自己一行一行读取构造成数据(features)
SimpleFeatureIterator ls = shapefileSource.getFeatures().features();
if(ls.hasNext()){
SimpleFeature l = ls.next();
}
dataStore对于客户端就相当于数据库:
1,读取数据1,获取数据源,获取数据集合,获取数据迭代器
2,写入数据,数据源开启事务,加入数据集合,数据加入数据,提交事务,就往数据源写入了对应数据源的数据
Transaction transaction = new DefaultTransaction("create");
String typeName = newDataStore.getTypeNames()[0];
SimpleFeatureSource featureSource = newDataStore.getFeatureSource(typeName);
// SimpleFeatureType SHAPE_TYPE = featureSource.getSchema();
SimpleFeatureType SHAPE_TYPE = createFeatureType();
SimpleFeatureStore featureStore = (SimpleFeatureStore) featureSource;
/*
* SimpleFeatureStore has a method to add features from a
* SimpleFeatureCollection object, so we use the ListFeatureCollection
* class to wrap our list of features.
*/
SimpleFeatureCollection collection = new ListFeatureCollection(TYPE, features);
featureStore.setTransaction(transaction);
try {
featureStore.addFeatures(collection);
transaction.commit();
} catch (Exception problem) {
problem.printStackTrace();
transaction.rollback();
} finally {
transaction.close();
}
System.exit(0); // success!
} else {
System.out.println(typeName + " does not support read/write access");
System.exit(1);
}
3,查询在获取数据的时候传入条件过滤器即可,点击选中就是点击点的小范围搜索
/*
* 创建过滤器以选择与边界框相交的要素
*/
Filter filter = ff.intersects(ff.property(geometryAttributeName), ff.literal(bbox));
/*
* 使用过滤器识别选定的特征
*/
SimpleFeatureCollection selectedFeatures = featureSource.getFeatures(filter);
Filter filter = CQL.toFilter(text.getText());
Query query = new Query(typeName, filter, name);
SimpleFeatureCollection features = source.getFeatures(query);