geotools简介
官网
https://docs.geotools.org/latest/userguide/index.html
架构图
特性
1. 主要特性
- Geotools主要提供各种GIS算法,实现各种数据格式的读写和显示。
- 在显示方面要差一些,只是用Swing实现了地图的简单查看和操作。
- 用户可以根据Geotools提供的算法自己实现地图的可视化。OpenJump和udig就是基于Geotools的。
- 目前的大部分开源软件,如udig,geoserver等,对空间数据的处理都是由geotools来做支撑。
- web服务,命令行工具和桌面程序都可以由geotools来实现。
- 是构建在OGC标准之上的,是OGC思想的一种实现。而OGC是国际标准,所以geotools将来必定会成为开源空间数据处理的主要工具,
- Geotools用到的两个较重要的开源GIS工具包是JTS和GeoAPI。前者主要是实现各种GIS拓扑算法[只是图形与图形的九交模型并不是图层或图层间的拓扑算法],也是基于GeoAPI的。
- Geotools现在还只是基于2D图形的,缺乏对 3D空间数据算法和显示的支持。
2. Geotools支持的数据格式
arcsde
,arcgrid
,geotiff
,grassraster
,gtopo30
,image
(JPEG
,TIFF
,GIF
,PNG
),imageio-ext-gdal
,imagemoasaic
,imagepyramid
,JP2K
,matlab
;- 支持的数据库“jdbc-ng”:
db2
,h2
,mysql
,oracle
,postgis
,spatialite
,sqlserver
; - 支持的矢量格式和数据访问:
app-schema
,arcsde
,csv
,dxf
,edigeo
,excel
,geojson
,org
,property
,shapefile
,wfs
; XML
绑定。基于xml的Java数据结构和绑定提供了如下格式xsd-core
(xml simple types),fes
,filter
,gml2
,gml3
,kml
,ows
,sld
,wcs
,wfs
,wms
,wps
,vpf
。对于额外的geometry
、sld
和filter
的编码和解析可以通过dom
和sax
程序。
3. 支持大部分的OGC标准
- OGC中的sld/SE和渲染引擎;
- OGC一般要素模型包括简单要素支持;
- OGC中栅格信息的网格影像表达;
- OGC中WFS,WMS和额外的WPS;
- ISO 19107 geometry规范;
4. Geotools依赖的开源项目
- JTS:JTS是加拿大的 Vivid Solutions 做的一套开放源码的 Java API。它提供了一套空间数据操作的核心算法,为在兼容OGC标准的空间对象模型中进行基础的几何操作提供2D空间谓词API。
- GeoAPI:GeoAPI为OpenGIS规范提供一组Java接口。
5. GeoTools类库
GeoTools发布的包和其依赖的一些第三方类库总共约有168个,了解GeoTools依赖哪些包和依赖的这些包做什么的,对了解GeoTools这个大家伙一定是有帮助的,具体大家可以下载代码查看,上网搜索一般都能找到一些有用的资料。以下是核心类库的79个jar包:
6. 学习地址
- GeoTools官方网站地址
https://docs.geotools.org/latest/userguide/geotools.html
- GeoTools GitHub地址
https://github.com/geotools/geotools
7. GeoTools的方向
GeoTools GitHub地址
https://github.com/geotools/geotools
常用功能列表
Module | Purpose |
---|---|
gt-render | Implements of Java2D rendering engine to draw a map 实现了Java2D的渲染引擎画地图 |
gt-jdbc | Implements for accessing spatial database 实现了访问空间数据库的 |
gt-main | Implements for accessing spatial data 实现对空间数据的访问 |
gt-xml | Implements of common spatial XML formats 实现对共同的xml数据格式的支持 |
gt-cql | Implements of Common Query Language for filters 实现简单语句的查询 |
gt-main | Interfaces for working with spatial information. Implements filter, feature, etc… |
jts | Definition and implementation of Geometry 定义了处理空间信息的接口 |
gt-coverage | Implementation for accessing raster information 实现了Raster数据格式的访问 |
gt-referencing | Implementation of co-ordinate location and transformation 实现了坐标的定义、转换 |
gt-metadata | Implementation of identification and description 元数据的描述和识别 |
gt-opengis | Definition of interfaces for common spatial concepts 定义了空间概念的接口 |
插件
Module | JAR | Plugin |
gt-render | ||
gt-jdbc | gt-jdbc-db2 | Geometry in DB2 |
gt-jdbc-h2 | Pure Java “H2” database | |
gt-jdbc-mysql | Geometry in MySQL | |
gt-jdbc-oracle | Oracle SDO Geometry | |
gt-jdbc-postgis | PostgreSQL extension PostGIS | |
gt-jdbc-sqlserver | SQL Server | |
gt-jdbc-hana | SAP HANA | |
gt-jdbc-terasdata | Teradata | |
gt-main | gt-shape | Shapefile read/write support |
gt-wfs | WFS read/write support | |
gt-xml | ||
gt-cql | ||
gt-main | ||
jts | ||
gt-coverage | gt-geotiff | GeoTIFF raster format |
gt-arcgrid | arcgrid format | |
gt-mif | MIF format | |
gt-image | JPG, PNG, TIFF formats | |
gt-referencing | epsg-access . | Official EPSG database in Access |
epsg-hsql | Pure Java port of EPSG database | |
epsg-wkt | Lightweight copy of EPSG codes | |
epsg-postgresql | PostgreSQL port of EPSG database | |
gt-metadata | ||
gt-opengis |
扩展
除此之外,GeoTools
团队在GeoTools
的基础上实现了一些扩展,当然了,这些扩展是为了提供一些额外的功能。这些扩展是相互独立的,我们可以直接在项目中使用。
JAR | Extension |
---|---|
gt-graph | Work with graph and network traversals |
gt-validation | Quality assurance for spatial data |
gt-wms | Web Map Server client |
gt-xsd | Parsing/Encoding for common OGC schemas |
gt-brewer | Generation of styles using color brewer |
GeoTools
团队为了支持GeoTools
中的XML模块,将几个XML模式打包成JAR形式,方便开发者进行调用。
JAR | Schema |
---|---|
net.opengis.ows | open web services schema |
net.opengis.wfs | web feature service |
net.opengis.wps | web processing service schema |
net.opengis.wcs | web coverage service schema |
net.opengis.wfs | web feature service schema |
org.w3.xlink | XLink schema |
XSD解析器通过一系列XSD插件使用这些工具。这些插件指示如何使用Eclipse XSD库解析和编码额外的内容来解析XML模式文档,并提供“绑定”,显示如何解析和编码Java类,如String、Date、URL和Geometry。
JAR | Bindings |
---|---|
gt-xsd-core | Basic types defined by XML schema |
gt-xsd-fes | filter 2.0 |
gt-xsd-filter | filter (used by OGC CAT and WFS) |
gt-xsd-kml | keyhole markup language |
gt-xsd-wfs | web feature service |
gt-xsd-wps | web processing service |
gt-xsd-gml3 | geographic markup language 3 |
gt-xsd-gml2 | geographic markup language 2 |
gt-xsd-ows | open web services |
gt-xsd-wcs | web coverage service |
gt-xsd-wms | web map service |
gt-xsd-sld | style layer descriptor |
以下是GeoTools
不支持的扩展,你也可以使用Maven下载它们来使用。
Unsupported | Purpose |
---|---|
gt-swt | Standard widget toolkit interactive map |
gt-swing | Swing interactive map |
gt-oracle | retired oracle support |
gt-postgis | retired PostGIS support |
gt-db2 | retired db2 support |
gt-wps | Web Processing Service client |
gt-process | Job system for spatial data |
geotools引用
maven项目中引用值得注意的地方
1 在pom中配置仓库
<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>
<!--GeoServer-->
<repository>
<id>GeoSolutions</id>
<url>http://maven.geo-solutions.it/</url>
</repository>
</repositories>
2 如果setting中使用了阿里云镜像设置不起作用
<mirror>
<!--该镜像的唯一标识符。id用来区分不同的mirror元素。 -->
<id>nexus-aliyun</id>
<!--*指的是访问任何仓库都使用我们的私服-->
<mirrorOf>*,!osgeo,!GeoSolutions,!osgeo-snapshot,!alfresco</mirrorOf>
<!--镜像名称-->
<name>Nexus aliyun</name>
<!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL-->
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
pshot,!alfresco
<!--镜像名称-->
<name>Nexus aliyun</name>
<!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL-->
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
```