150 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
		
		
			
		
	
	
			150 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								title: GeoTools-简介
							 | 
						|||
| 
								 | 
							
								date: 2023-11-28
							 | 
						|||
| 
								 | 
							
								author: ac
							 | 
						|||
| 
								 | 
							
								categries:
							 | 
						|||
| 
								 | 
							
								 - GIS
							 | 
						|||
| 
								 | 
							
								tags:
							 | 
						|||
| 
								 | 
							
								 - GeoTools
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### GeoTools-简介
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 1.简介
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								GeoTools是一个开源(LGPL) Java代码库,它为地理空间数据的操作提供了符合标准的方法,例如实现地理信息系统。GeoTools库数据结构基于开放地理空间联盟(OGC)规范。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 2. GeoTools 库
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								> 了解GeoTools库是如何构建的,这有助于您找出需要在应用程序中包含哪些jar。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								GeoTools库形成了一个软件“堆栈”,每个模块都建立在前一个定义的模块之上。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								“堆栈”的每一层都是建立在下一层之上的,例如:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								- 如果要使用`Referencing` ,你需要先使用`gt-api`,`gt-metadata`,`gt-references`,为了确保`EPSG`codes的正确,还需要使用一个插件`gt-epsg-hsql`来定义EPSG。
							 | 
						|||
| 
								 | 
							
								- 如果要使用`Coverage`,需要使用`gt-api`,`gt-metadata`,`gt-referencing(包含gt-epsg-hsql)`,`gt-main`和`gt-coverage`。为了充分利用Coverage模块,我们使用了一个插件,比如`gt-geotiff`来访问`GeoTIFF`文件。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								`Maven`工具能够计算项目中需要的`jar`.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								下面是各个模块的作用:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								| Module           | Purpose                                                         |
							 | 
						|||
| 
								 | 
							
								|:---------------- |:--------------------------------------------------------------- |
							 | 
						|||
| 
								 | 
							
								| `gt-render`      | Map API, with Java2D rendering engine for mapping.              |
							 | 
						|||
| 
								 | 
							
								| `gt-jdbc`        | Implements for accessing spatial database                       |
							 | 
						|||
| 
								 | 
							
								| `gt-xml`         | Implements of common spatial XML formats                        |
							 | 
						|||
| 
								 | 
							
								| `gt-cql`         | Implements of Common Query Language for filters                 |
							 | 
						|||
| 
								 | 
							
								| `gt-coverage`    | Implementation for accessing raster information                 |
							 | 
						|||
| 
								 | 
							
								| `gt-main`        | Data API, with default implementations of filter, feature, etc… |
							 | 
						|||
| 
								 | 
							
								| `gt-referencing` | Implementation of coordinate location and transformation        |
							 | 
						|||
| 
								 | 
							
								| `gt-metadata`    | Implementation of identification and description                |
							 | 
						|||
| 
								 | 
							
								| `gt-api`         | Definition of interfaces for common spatial concepts            |
							 | 
						|||
| 
								 | 
							
								| `jts`            | JTS Topology Suite (external library) implementing Geometry     |
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 3. GeoTools 插件
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								GeoTools提供插件来支持额外的数据格式和不同的坐标参考系统等功能。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								| 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-xml`         |                     |                                  |
							 | 
						|||
| 
								 | 
							
								| `gt-cql`         |                     |                                  |
							 | 
						|||
| 
								 | 
							
								| `gt-main`        | `gt-shape`          | Shapefile read/write support     |
							 | 
						|||
| 
								 | 
							
								|                  | `gt-wfs`            | WFS read/write support           |
							 | 
						|||
| 
								 | 
							
								| `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-api`         |                     |                                  |
							 | 
						|||
| 
								 | 
							
								| `jts`            |                     |                                  |
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								通常,每个层至少需要一个插件才能让GeoTools做一些事情。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 4.GeoTools 扩展
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								更进一步,在GeoTools库的基础上实现了一些有趣的“扩展”。这些扩展提供了使用核心库的全部功能构建在GeoTools之上的额外功能。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								这些扩展相互独立,可能在您的应用程序中使用:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								| JAR             | Extension                                            |
							 | 
						|||
| 
								 | 
							
								|:--------------- |:---------------------------------------------------- |
							 | 
						|||
| 
								 | 
							
								| `gt-app-schema` | Map from application schema to complex feature model |
							 | 
						|||
| 
								 | 
							
								| `gt-brewer`     | Generation of styles using color brewer              |
							 | 
						|||
| 
								 | 
							
								| `gt-complex`    | Support for making custom complex feature model      |
							 | 
						|||
| 
								 | 
							
								| `gt-graph`      | Work with graph and network traversals               |
							 | 
						|||
| 
								 | 
							
								| `gt-grid`       | Dynamicly generate features from grid definiton      |
							 | 
						|||
| 
								 | 
							
								| `gt-transform`  | Transform features on the fly                        |
							 | 
						|||
| 
								 | 
							
								| `gt-wms`        | Web Map Server client                                |
							 | 
						|||
| 
								 | 
							
								| `gt-wmts`       | Web Map Tile Server client                           |
							 | 
						|||
| 
								 | 
							
								| `gt-xsd`        | Parsing/Encoding for common OGC schemas              |
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 5.XML
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								> 用途:解析和输出sld文件,wfs事务操作
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								为了支持GeoTools中的XML模块,我们以JAR形式捆绑了几个XML模式(以避免每次需要时都需要从Internet下载它们)。此外,这些jar包含一个由Eclipse Modeling Framework生成的Java数据结构。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								| 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            |
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 6. 不支持的部分
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								还有一些“不支持”的插件和扩展。这些模块不是由项目管理委员会作为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-jdbc-postgis` |
							 | 
						|||
| 
								 | 
							
								| `gt-db2`     | retired db2 support                       |
							 | 
						|||
| 
								 | 
							
								| `gt-wps`     | Web Processing Service client             |
							 | 
						|||
| 
								 | 
							
								| `gt-process` | Job system for spatial data               |
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 参考文章
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								[1] architecture https://docs.geotools.org/latest/userguide/welcome/architecture.html
							 |