欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

GeoServer源码解析栅格数据Image Mosaic JDBC插件原理(二)GeoTools Image Mosaic JDBC插件源码解析

程序员文章站 2022-05-30 12:02:21
...

1. 作者声明

上一篇我们讲到GDAL切片工具的使用,本篇重点在于GeoTools Image Mosaic JDBC插件讲解

2. GeoTools和Image Mosaic JDBC插件介绍

2.1. GeoTools介绍

geotools原生java工具包,适用于空间数据的解析和转换,比如点线面矢量数据的增删改查,坐标转换等操作,遥感影像的镶嵌、裁剪等操作。

官网文档地址:

http://docs.geotools.org/latest/userguide/

2.2. Image Mosaic JDBC插件介绍

顾名思义,插件适用于raster栅格数据增删改查操作。本博文用postgresql+Postgis做实例为大家演示。

官网实例地址:

http://docs.geotools.org/latest/userguide/library/coverage/jdbc/index.html

3.环境搭建

3.1. java环境(不再赘述)

jdk版本至少8以上,推荐jdk8

3.2. Geotools源码

Geotools版本推荐20以上,本博文选择23.x

源码下载:

git clone https://github.com/geotools/geotools.git

git checkout -b 23.x

3.3. Eclipse|Idea

博文Eclipse用作演示,熟悉Idea的工程师可以根据爱好自行选择。Eclipse版本最好集成git、maven插件

3.4. Maven

maven版本3.5以上

3.5. Postgresql与Postgis安装

Postgresql版本要求9.5以上

https://www.postgresql.org/download/

PostGIS版本2.4以上

http://postgis.net/install/

pg库连接驱动包下载

版本推荐42.2

https://jdbc.postgresql.org/download.html

4. Geotools编译

4.1. Maven命令行编译

F:\git\geoserver\geotools-23.x>mvn clean install -DskipTests

4.2. Eclipse编译

geotools子工程较多,完全编译需要花费大量时间,因此我们只需要编译 Image Mosaic JDBC工程。

GeoServer源码解析栅格数据Image Mosaic JDBC插件原理(二)GeoTools Image Mosaic JDBC插件源码解析
编译这几个工程即可
GeoServer源码解析栅格数据Image Mosaic JDBC插件原理(二)GeoTools Image Mosaic JDBC插件源码解析
编译界面

注意:

子工程右键选择maven build

勾选offline(不重复下载)

Skip Tests(跳过测试类)

4.3.官网教程

http://docs.geotools.org/latest/userguide/tutorial/quickstart/index.html

5. 生成数据库脚本(栅格表sql脚本)

5.1. 创建配置文件(推荐创建在geoserver data\coverages目录下,后篇会讲到)

5.1.1. 数据库链接文件 connect.postgis.xml.inc

<connect>
  <!-- value DBCP or JNDI -->
  <dstype value="DBCP"/>
  <!--   <jndiReferenceName value=""/>  -->
  <username value="postgres" />
  <password value="postgres" />
  <jdbcUrl value="jdbc:postgresql://localhost:5432/gis" />
  <driverClassName value="org.postgresql.Driver"/>
  <maxActive value="10"/>
  <maxIdle value="0"/>
</connect>

5.1.2. 表实体文件 mapping.postgis.xml.inc

<!-- possible values: universal,postgis,db2,mysql,oracle -->
<spatialExtension name="postgis"/>
<mapping>
    <masterTable name="mosaic" >
      <coverageNameAttribute name="name"/>
      <maxXAttribute name="maxX"/>
      <maxYAttribute name="maxY"/>
      <minXAttribute name="minX"/>
      <minYAttribute name="minY"/>
      <resXAttribute name="resX"/>
      <resYAttribute name="resY"/>
      <tileTableNameAtribute  name="TileTable" />
      <spatialTableNameAtribute name="SpatialTable" />
    </masterTable>
    <tileTable>
      <blobAttributeName name="data" />
      <keyAttributeName name="location" />
    </tileTable>
    <spatialTable>
      <keyAttributeName name="location" />
      <geomAttributeName name="geom" />
      <tileMaxXAttribute name="maxX"/>
      <tileMaxYAttribute name="maxY"/>
      <tileMinXAttribute name="minX"/>
      <tileMinYAttribute name="minY"/>
    </spatialTable>
</mapping>

5.1.3. 栅格数据描述文件 osm.postgis.xml(名字随意)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE ImageMosaicJDBCConfig [
  <!ENTITY mapping PUBLIC "mapping"  "mapping.postgis.xml.inc">
  <!ENTITY connect PUBLIC "connect"  "connect.postgis.xml.inc">]>
<config version="1.0">
  <coverageName name="osm"/>
  <coordsys name="EPSG:4326"/>
  <!-- interpolation 1 = nearest neighbour, 2 = bilinear, 3 = bicubic -->
  <scaleop  interpolation="1"/>
  <verify cardinality="false"/>
  &mapping;
  &connect;
</config>

注意:坐标系请使用EPSG:4326,使用EPSG:3857无法识别 

5.2. 生成脚本

GeoServer源码解析栅格数据Image Mosaic JDBC插件原理(二)GeoTools Image Mosaic JDBC插件源码解析
运行Toolbox类
GeoServer源码解析栅格数据Image Mosaic JDBC插件原理(二)GeoTools Image Mosaic JDBC插件源码解析
参数传递

 

5.3. 参数传递说明

参数说明
参数 说明
ddl ddl脚本语句生成(建表)
-config 配置文件路径,例如:\webapp\data\coverages\osm.postgis.xml
-spatialTNPrefix 空间表前缀名称 如:tileosm 
-pyramids 金字塔层级数 如0-20
-statementDelim 同一脚本,多sql语句用";"隔开 如:;
-srs 坐标参考
-targetDir 脚本输出路径

 

 

 

 

 

 

 

5.4. 生成脚本

GeoServer源码解析栅格数据Image Mosaic JDBC插件原理(二)GeoTools Image Mosaic JDBC插件源码解析
脚本

5.5. 官网介绍

https://docs.geoserver.org/latest/en/user/tutorials/imagemosaic-jdbc/imagemosaic-jdbc_tutorial.html

6. 第一篇讲述的切片导入Postgresql库

6.1. 执行Toolbox类数据入库

GeoServer源码解析栅格数据Image Mosaic JDBC插件原理(二)GeoTools Image Mosaic JDBC插件源码解析

6.2. 参数说明

参数说明
参数 说明
import 导入
-config 配置文件路径,例如:\webapp\data\coverages\osm.postgis.xml
-spatialTNPrefix 空间表前缀名称 如:tileosm
-tileTNPrefix 与spatialTNPrefix对应
-dir 切片目录
-ext 读取切片后缀名 png、jpg、tif

 

 

 

 

 

6.3. 导入成功信息

GeoServer源码解析栅格数据Image Mosaic JDBC插件原理(二)GeoTools Image Mosaic JDBC插件源码解析
finished表示成功

6.4. 错误解决

如果提示数据库连接驱动无法加载,请看如下:

 

GeoServer源码解析栅格数据Image Mosaic JDBC插件原理(二)GeoTools Image Mosaic JDBC插件源码解析
引入数据库驱动包

7. 数据库成果展示

GeoServer源码解析栅格数据Image Mosaic JDBC插件原理(二)GeoTools Image Mosaic JDBC插件源码解析
mosaic表
GeoServer源码解析栅格数据Image Mosaic JDBC插件原理(二)GeoTools Image Mosaic JDBC插件源码解析
切片存储表

 

 

GeoServer源码解析栅格数据Image Mosaic JDBC插件原理(二)GeoTools Image Mosaic JDBC插件源码解析
查询结果