介绍
本篇是GeoTools教程中的快速开始部分,主要介绍了Maven中GeoTools的依赖添加和一个简单的示例。
依赖配置
Maven的依赖配置方法想来大家是知道的,官网上也提供了GeoTools可以下载的仓库和所需的GeoTools的依赖版本。
//属性配置
<properties>
<geotools.version>27-SNAPSHOT</geotools.version>
</properties>
//依赖
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-shapefile</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-swing</artifactId>
<version>${geotools.version}</version>
</dependency>
//仓库地址
<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>
这里有一点需要注意的是,我是用的ava版本是java8,而官方教程中提示的java版本为java 11,所以官方教程中提供的依赖版本为29-SNAPSHOT,我启动后报了错,将依赖版本降为27-SNAPSHOT,就可以了。
主要的代码如下
public class QuickSyart {
public static void main(String[] args) throws IOException {
//一个文件打开器,启动后会打开一个Java的文件选择器
File file= JFileDataStoreChooser.showOpenFile("shp",null);
if (file==null){
return;
}
FileDataStore store= FileDataStoreFinder.getDataStore(file);
SimpleFeatureSource featureSource=store.getFeatureSource();
MapContent mapContent=new MapContent();
mapContent.setTitle("QuictStart");
Style style= SLD.createSimpleStyle(featureSource.getSchema());
Layer layer=new FeatureLayer(featureSource,style);
//将图层添加到地图中
mapContent.addLayer(layer);
JMapFrame.showMap(mapContent);
}
}
这里找到一个shp文件打开
显示如下
文件选择器
File file= JFileDataStoreChooser.showOpenFile("shp",null);
打开文件
FileDataStore store= FileDataStoreFinder.getDataStore(file);
SimpleFeatureSource featureSource=store.getFeatureSource();
创建地图对象并为标题命名
MapContent mapContent=new MapContent();
mapContent.setTitle("QuictStart");
为文件要素添加样式,创建要素图层
Style style= SLD.createSimpleStyle(featureSource.getSchema());
Layer layer=new FeatureLayer(featureSource,style);
添加要素图层到地图对象中,展示地图到窗口
mapContent.addLayer(layer);
JMapFrame.showMap(mapContent);
结语
本篇教程是按照GeoTools官方的教程翻译而来,会加入一些自己的学习思考,以此记录。