文章目录
引言
在使用 GeoTools 时,我们没办法直接使用 Maven 中央库的 GeoTools,所以就需要我们配置一下关于 GeoTools 自己的镜像,所以我们才需要以下这几个步骤:
1、检查一下自己本机 maven 的 settings.xml 配置;
2、配置项目中的 pom.xml;
3、引入 jar 包;
4、使用。
下面就开始一步一步做
Maven settings.xml 配置
在 mirrorOf 标签中配置 mirrorOf 值,切记,mirrorOf 标签中不能使用 * 值。
<mirrors>
<mirror>
<id>mirror</id>
<mirrorOf>central,jcenter,mirrorOf</mirrorOf>
<name>mirror</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
配置项目中的 pom.xml
在项目的 pom.xml 配置文件中,在 repositories 标签中,配置 GeoTools 的镜像配置。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<repositories>
<repository>
<id>osgeo</id>
<name>OSGeo Release Repository</name>
<url>https://repo.osgeo.org/repository/release/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
<repository>
<id>osgeo-snapshot</id>
<name>OSGeo Snapshot Repository</name>
<url>https://repo.osgeo.org/repository/snapshot/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
</project>
引入 GeoTools Jar 包
这里需要注意 GeoTools 的版本,如果你是 Java 8 版本,就使用 23.x - 28.x;如果是 Java 11,就使用 23.x 及以上的版本。
<dependencies>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-shapefile</artifactId>
<version>28.5</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-geojson</artifactId>
<version>28.5</version>
</dependency>
</dependencies>
使用
import org.geotools.data.FileDataStore;
import org.geotools.data.FileDataStoreFinder;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.geojson.feature.FeatureJSON;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class ShapefileToGeoJSON {
public static void main(String[] args) {
String readFilePath = "D:/data/某镇.shp";
String writeFilePath = "D:/data/某镇.geojson";
File readFile = new File(readFilePath);
try {
FileDataStore store = FileDataStoreFinder.getDataStore(readFile);
SimpleFeatureCollection featureCollection = store.getFeatureSource().getFeatures();
FeatureJSON featureJSON = new FeatureJSON();
try (FileWriter writer = new FileWriter(writeFilePath)) {
featureJSON.writeFeatureCollection(featureCollection, writer);
}
store.dispose();
} catch (IOException e) {
e.printStackTrace();
}
}
}