import com.alibaba.fastjson.JSONObject;
import org.geotools.data.shapefile.ShapefileDataStore;
import org.geotools.data.simple.SimpleFeatureIterator;
import org.geotools.data.simple.SimpleFeatureSource;
import org.geotools.geojson.feature.FeatureJSON;
import org.opengis.feature.simple.SimpleFeature;
long start = System.currentTimeMillis();
String SHAPE_FILE = "E:\\shp\\区县.shp"; // ShapeFile全路径
// 使用GeoTools读取ShapeFile文件
File shapeFile = new File(SHAPE_FILE);
ShapefileDataStore store = new ShapefileDataStore(shapeFile.toURI().toURL());
//设置编码
Charset charset = Charset.forName("GBK");
store.setCharset(charset);
SimpleFeatureSource sfSource = store.getFeatureSource();
SimpleFeatureIterator sfIter = sfSource.getFeatures().features();
// 从ShapeFile文件中遍历每一个Feature,然后将Feature转为GeoJSON字符串
String geojson = "";
while (sfIter.hasNext()) {
SimpleFeature feature = sfIter.next();
// Feature转GeoJSON
FeatureJSON fjson = new FeatureJSON();
StringWriter writer = new StringWriter();
fjson.writeFeature(feature, writer);
String sjson = writer.toString();
JSONObject featureStr = JSONObject.parseObject(sjson);
System.out.println("sjson===== >>>> " + featureStr.get("geometry").toString());
geojson = featureStr.get("geometry").toString();
}
System.out.println("数据导入完成,共耗时"+(System.currentTimeMillis() - start)+"ms");
Java使用GeoTools读取shapefile文件
最新推荐文章于 2023-07-01 22:12:17 发布