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

8 篇文章 1 订阅
3 篇文章 0 订阅

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工程。

编译这几个工程即可
编译这几个工程即可
编译界面

注意:

子工程右键选择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. 生成脚本

运行Toolbox类
参数传递

 

5.3. 参数传递说明

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

 

 

 

 

 

 

 

5.4. 生成脚本

脚本

5.5. 官网介绍

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

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

6.1. 执行Toolbox类数据入库

6.2. 参数说明

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

 

 

 

 

 

6.3. 导入成功信息

finished表示成功

6.4. 错误解决

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

 

引入数据库驱动包

7. 数据库成果展示

mosaic表
切片存储表

 

 

查询结果
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值