喜欢的点赞👍 不喜欢的解散 创作不易记得三连
开整
1 导入依赖
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-geojson</artifactId>
<version>23.2</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-shapefile</artifactId>
<version>23.2</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-swing</artifactId>
<version>23.2</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-epsg-hsql</artifactId>
<version>23.2</version>
</dependency>
导入文件获取store工具类
public ShapefileDataStore singleFileByUrl(String file, String fromShpResource, Double height, String targetCRS,Integer isPrj) throws Exception {
File dest = new File(file);
ShapefileDataStore store = new ShapefileDataStore(dest.toURI().toURL());
store.setCharset(StandardCharsets.UTF_8);
return store;
}
读取prj属性 文件工具类
public CoordinateReferenceSystem readPrjFile(FileDataStore store) throws Exception {
CoordinateReferenceSystem coordinateReferenceSystem = store.getFeatureReader().getFeatureType().getCoordinateReferenceSystem();
return coordinateReferenceSystem;
}
读取dbf 坐标文件工具类
public DbaseFileHeader readDbfFile(String path) throws Exception {
String substring = path.substring(path.lastIndexOf("/") + 1);
String[] split = substring.split("\\.");
ImportFile importFile = new ImportFile();
importFile.setFileType(split[1]);
importFile.setFileName(split[0]);
importFile.setFileUrl(path);
importFile.setIsDelete(1);
importFile.setIsResolved(1);
List<String> list=new ArrayList<>();
Map<Object, Object> values = null;
DbaseFileReader reader = null;
reader = new DbaseFileReader(new ShpFiles(path), false, StandardCharsets.UTF_8);
DbaseFileHeader header = reader.getHeader();
int numFields = header.getNumFields();
return header;
}
坐标转换工具类
public MathTransform getTransform(FileDataStore store) throws Exception {
CoordinateReferenceSystem coordinateReferenceSystem = readPrjFile(store);
MathTransform transform = CRS.findMathTransform(CRS.getProjectedCRS(coordinateReferenceSystem), DefaultGeographicCRS.WGS84, true);
return transform;
获取shp文件坐标信息
public List<Geometry> importShape(FileDataStore store) throws Exception {
List<Geometry> geometries = new ArrayList<>();
CoordinateReferenceSystem coordinateReferenceSystem = readPrjFile(store);
SimpleFeatureSource featureSource = store.getFeatureSource();
SimpleFeatureCollection simpleFeatureCollection = featureSource.getFeatures();
SimpleFeatureIterator itertor = simpleFeatureCollection.features();
ArrayList<MarkVo> markVos = new ArrayList<>();
MathTransform transform =
CRS.findMathTransform(
CRS.getProjectedCRS(coordinateReferenceSystem), DefaultGeographicCRS.WGS84, true);
while (itertor.hasNext()) {
SimpleFeature feature = itertor.next();
Geometry defaultGeometry = (Geometry) feature.getDefaultGeometry();
Geometry targetGeometry = JTS.transform(defaultGeometry, transform);
geometries.add(targetGeometry);
}
return geometries;
}
总结 后期有空再补上