• GeoTools深入解析:GeoTools概述


    提纲

    1、GeoTools的作用

    2、GeoTools的组成结构及各个部分的功能

    1、GeoTools的作用

    ===============

    Geotools是一个符合OGC标准(也称为OpenGIS标准)的Java类库,它提供了很多的标准类来处理空间数据。OpenGIS标准是一个空间数据处理的国际标准。目前的大部分基于Java的开源GIS软件,如udig,geoserver等,都是调用GeoTools库来进行空间数据的处理。

    GeoTools是一个处理空间数据的工具包,其中包含构建一个完整的地理信息系统所需要的的全部工具类,常见的问题比如投影的转换、基准面的设定、空间数据对象的渲染和样式、各种数据源的支持、各种GIS文件格式支持、空间数据过滤与搜索等,都有对应的解决方案,这些解决方案被封装成一个一个的类,可供用户调用。

    GeoTools项目的开发目标是提供一个符合OpenGIS标准的Gis工具包。为了达成这个目标,GeoTools项目中除了GeoTools自己实现一些工具类之外,还有包含了两个其他的工具包,一个是GeoAPI,另一个是JTS(Java Topology Suite),这两个工具包和GeoTools自己的工具类一起组成了GeoTools。从这个角度来讲,可以说GeoTools是在GeoAPI和JTS的基础上构建的一个GIS工具包。

    JTS是用来做空间图形的拓扑关系判断的一个Java类库。它在GeoTools出现之前就已经存在了,所以GeoTools项目在解决空间对象拓扑判定问题的时候,就没有自己重新开发,而是直接采用了JTS,将JTS作为自己的一部分,纳入自己的体系中了。JTS解决了对象与对象之间拓扑关系的判定和计算,所以,它提供了很多算法来解决对象之间包含关系、相交关系等的拓扑关系判定问题。因此,JTS就相当于GeoTools中的一个子模块,但是因为这个模块本身不是GeoTools工程的,所以在GeoTools的JavaDoc中找不到JTS的JavaDoc说明,如果需要JTS的JavaDoc说明,需要到JTS官网上面去下载。

    GeoAPI是根据OpenGIS规范而开发一组Java接口,这组接口代表了OpenGIS规范,GeoTools实现了GeoAPI中的接口,从而也就是实现了OpenGIS标准。GeoAPI制定了地理信息系统中所有的数据类型应该是什么,投影转换的方式有哪几种诸如此类的规范,所以,兼容GeoAPI接口的GeoTools是一个符合规范的地理信息系统工具包。 

    GeoTools项目除了现有的类,它还有插件机制和扩展机制,用户可以为GeoTools做插件和扩展。

    GeoTools插件,如果希望GeoTools支持更多的数据格式和其他的坐标系统,就可以为GeoTools开发相应的插件。ImageIO-ext项目的插件允许GeoTools从gdal中读取额外的栅格格式。


    GeoTools扩展,通过使用核心类库的类可以构建更多的类加入类库,比如swing,brewer和graph。扩展模块提供了图像和网络支持、校验、Web地图服务端解析,解析编码xml和color brewer(地图绘图)。扩展和GeoTools核心类库的关系如下:

    2、GeoTools的组成结构(架构)及各个部分的功能

    =======================================

     GeoTools库的组成部分、每一部分的作用和各部分之间的配合关系,就是GeoTools的架构。搞清楚GeoTools的架构,有利于用户在开发应用的时候,只选择自己所需要的的GeoTools的jar。

    GeoTools库是一个软件堆栈(software stack),上层的模块是基于下层模块开发的。

    GeoTools堆栈的每一层都是它下面的各层去实现的,比如:

    • 要使用Referencing模块,就必须要包含 gt-opengisgt-referencing 和 gt-metadata三个jar。

    • 要使用Data模块,就必须要包含 gt-mainjtsgt-opengisgt-referencinggt-opengisgt-metadata

    The maven tool can calculate the jars you need, please see the Eclipse or Netbeans quickstart for an example use.

    Module

    Purpose

    gt-cql

    Implements of Common Query Language for filters

    gt-render

    Implements of Java2D rendering engine to draw a map

    gt-xml

    Implements of common spatial XML formats

    gt-main

    Interfaces for working with spatial information. Implements filter, feature, etc…

    gt-jdbc

    Implements for accessing spatial database

    gt-data

    Implements for accessing spatial data

    gt-coverage

    Implementation for accessing raster information

    gt-metadata

    Implementation of identification and description

    gt-referencing

    Implementation of co-ordinate location and transformation

    api

    GeoAPI part,定义了处理空间信息的接口

    jts

    Definition and implementation of Geometry

    gt-opengis

    Definition of interfaces for common spatial concepts

    参考文献

    1、http://www.kaiyuanba.cn/html/1/131/138/8018.htm(GeoTool是什么,以及与JTS和GeoAPI之间的关系如何)

    2、http://docs.geotools.org/latest/userguide/geotools.html#core-features(Architecture)

    3、https://blog.csdn.net/anglestar2012/article/details/42555819(GeoTools学习篇——GeoTools体系),对geotools架构中各个组成部分进行说明,比官方文档说的好

    4、https://www.giserdqy.com/gis/opengisnews/2250/(GeoTools应用简要指南),对geoTools下的jar包进行了清理

     转自:https://www.cnblogs.com/zhangzl419/p/14649603.html

  • 相关阅读:
    linux JAVA JDK环境配置
    逍遥语录
    php常用函数集
    使用uGUI系统玩转标准俄罗斯方块
    Unity3D中uGUI事件系统简述及使用方法总结
    JAVA笔记-如何将百万级数据高效的导出到Excel表单
    简单的异步Socket实现——SimpleSocket_V1.1
    Netty4.x中文教程系列(六) 从头开始Bootstrap
    Unity3D中简单的C#异步Socket实现
    基于Spring框架的简单多数据源切换解决办法
  • 原文地址:https://www.cnblogs.com/javalinux/p/15319205.html
Copyright © 2020-2023  润新知