基于java geotools库读取shp文件
通过shpDataStore.setCharset设置dbf编码,确保与源文件编码一致,不然会出现乱码
话不多说直接上代码
/***
* path shp文件路径
* filters 属性过滤条件
* */
public SimpleFeatureCollection readStoreByShp(String path, List<Filter> filters) throws IOException {
ShapefileDataStore shpDataStore = null;
File file = new File(path);
shpDataStore = new ShapefileDataStore(file.toURL());
// 设置编码
// if(code.equals("GBK")) {
Charset charset = Charset.forName("GBK");
shpDataStore.setCharset(charset);
// }else {
// Charset charset = Charset.forName("UTF-8");
// shpDataStore.setCharset(charset);
// }
String typeName = shpDataStore.getTypeNames()[0];
SimpleFeatureSource featureSource = null;
featureSource = shpDataStore.getFeatureSource(typeName);
Query query = new Query();
FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
query.setFilter(ff.and(filters));
SimpleFeatureCollection result = featureSource.getFeatures(query);
shpDataStore.dispose();// 使用之后必须关掉
return result;
}