1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package com.onemap.file.utils;
- import com.vividsolutions.jts.geom.Geometry;
- import com.vividsolutions.jts.io.WKTWriter;
- import org.geotools.data.FileDataStore;
- import org.geotools.data.FileDataStoreFinder;
- import org.geotools.data.simple.SimpleFeatureCollection;
- import org.geotools.data.simple.SimpleFeatureSource;
- import org.geotools.feature.FeatureIterator;
- import org.geotools.referencing.CRS;
- import org.opengis.feature.simple.SimpleFeature;
- import org.opengis.referencing.crs.CoordinateReferenceSystem;
- import java.io.File;
- public class WktUtils {
- public static String getShpWkt(String shpPath) throws Exception {
- // 读取shp文件
- FileDataStore store = FileDataStoreFinder.getDataStore(new File(shpPath));
- SimpleFeatureSource featureSource = store.getFeatureSource();
- SimpleFeatureCollection featureCollection = featureSource.getFeatures();
- CoordinateReferenceSystem crs = featureSource.getSchema().getCoordinateReferenceSystem();
- // 合并几何图形
- Geometry combinedGeometry = null;
- try (FeatureIterator<SimpleFeature> features = featureCollection.features()) {
- while (features.hasNext()) {
- SimpleFeature feature = features.next();
- Geometry geometry = (Geometry) feature.getDefaultGeometry();
- if (combinedGeometry == null) {
- combinedGeometry = geometry;
- } else {
- combinedGeometry = combinedGeometry.union(geometry);
- }
- }
- }
- String ewkt = geometryToEWKT(combinedGeometry, crs);
- return ewkt;
- }
- public static String geometryToEWKT(Geometry geometry, CoordinateReferenceSystem crs) throws Exception {
- WKTWriter writer = new WKTWriter();
- String wkt = writer.write(geometry);
- Integer srid = CRS.lookupEpsgCode(crs, true);
- if (srid == null) {
- srid=4326;
- } else if (srid == -1) {
- srid=4326;
- }
- return "SRID=" + srid + ";" + wkt;
- }
- }
|