geoserver——Image Mosaic JDBC

Image Mosaic JDBC

gt-imagemosaic-jdbc插件旨在处理存储为JDBC数据库中的切片的大型图像。金字塔创建的平铺也存储在数据库中。该实用程序使用数据库索引来加速对所请求磁贴的访问,该插件本身具有多线程架构,可以使用双/四核CPU和多处理器系统。

细节

这个插件应该可以让你在JDBC数据库中使用金字塔处理大图像。

积分:

  • 该模块由Google资助,作为GSOC 08计划的一部分。

经测试的数据库系统

  • DB2(带或不带Spatial Extender)
  • Oracle(有或没有基于位置的服务,不需要Oracle Spatial)
  • MySQL的
  • Postgres(有或没有Postgis)
  • H2

示例使用

此示例显示如何使用该模块:

//  首先, 获得 一个 读者
//  的 configUrl  引用 的 配置 XML NBSP ;  并且  对象 的 一个 的 所述 以下 类型
//  1 ) 的java URL 
//  2 ) java io 文件
//  3 ) java 字符串 (一个 文件名 字符串  一个 URL  字符串)


AbstractGridFormat  format  = (AbstractGridFormat )GridFormatFinder findFormat (configUrl ); 
ImageMosaicJDBCReader  reader =  (ImageMosaicJDBCReader )格式getReader (configUrl ,null );

//  取得 一 参数 对象  一个 网格 几何
的parameterValue < GridGeometry2D > GG = AbstractGridFormat READ_GRIDGEOMETRY2D createValue ();

//  创建 一个 包络, 2  点, 下 左  上 右, X ,ÿ  顺序
GeneralEnvelope  信封 =  新 GeneralEnvelope (新 双[]  { 10 20 },新 双[]  { 30 40 });

//  设置 一个 CRS  用于 该 信封
的信封setCoordinateReferenceSystem (CRS 解码“EPSG:4326” );

//  设置 的 信封 到 的 参数 对象
GG 的setValue (新 GridGeometry2D (新 GeneralGridRange (新 矩形(0 0 , 宽度, heigth )),包络));

//  创建 一个 参数 对象  所述 背景 色 (NODATA ), 这 PARAM   可选的
最终 的parameterValue  outTransp = ImageMosaicJDBCFormat BACKGROUND_COLOR createValue (); 
outTransp 的setValue (颜色WHITE );

//  如果 你 喜欢 一个 透明 背景, 使用 这个
//  最后 的parameterValue  outTransp = ImageMosaicJDBCFormat OUTPUT_TRANSPARENT_COLOR createValue (); 
//  outTransp 的setValue (颜色WHITE );

//  调用 的 插件 传递 的 阵列  所述 2名 参数 对象
尝试 { 
    GridCoverage2D  覆盖率 =  (GridCoverage2D ) 读取器read (new  GeneralParameterValue []  {  gg , outTransp }); 
}  catch  (IOException  e ) { 
    e printStackTrace (); 
}

表和属性名称的映射

由于不同企业中存在大量命名约定,因此强制使用预定义的表和属性名称并不理想。在我们的示例中,可以选择空间表和切片表的名称,假设元表的名称和所有属性名称。这些名称的映射是XML配置的一部分。相应的XML片段显示了假定名称的映射。

一个示例XML片段文件mapping.xml.inc

<! - 可能的值:universal,postgis,db2,mysql,oracle  - >
<spatialExtension name =“universal”/>
<映射>
      <masterTable name =“META”>
          <coverageNameAttribute name =“Name”/>
          <maxXAttribute name =“MaxX”/>
          <maxYAttribute name =“MaxY”/>
          <minXAttribute name =“MinX”/>
          <minYAttribute name =“MinY”/>
          <resXAttribute name =“ResX”/>
          <resYAttribute name =“RresY”/>
          <tileTableNameAtribute name =“TileTable”/>
          <spatialTableNameAtribute name =“SpatialTable”/>
      </ masterTable>
      <接边>
          <blobAttributeName name =“Data”/>
          <keyAttributeName name =“Location”/>
      </接边>
      <spatialTable>
          <keyAttributeName name =“Location”/>
          <geomAttributeName name =“Geom”/>
          <tileMaxXAttribute name =“MaxX”/>
          <tileMaxYAttribute name =“MaxY”/>
          <tileMinXAttribute name =“MinX”/>
          <tileMinYAttribute name =“MinY”/>
      </ spatialTable>
</映射>

此XML片段的结构保持非常简单,将其用作模式。

<spatialExtension>的name属性必须是以下值之一

  • 通用(供应商中立的JDBC方法,可以与任何支持BLOB的JDBC数据库一起使用)
  • db2(使用空间扩展器)
  • mysql(使用mysql的空间功能)
  • postgis(使用postgis的空间特征)
  • oracle(使用每个oracle版本中包含的基于位置的服务,不需要oracle空间!!!)

如果您的空间扩展是通用的,则需要指定<tileMinXAttribute>,<tileMinYAttribute>,<tileMaxXAttribute>,<tileMaxYAttribute>,但您可以省略<geomAttributeName>。

在所有其他情况下,您需要<geomAttributeName>元素并且可以省略<tileMinXAttribute>,<tileMinYAttribute>,<tileMaxXAttribute>,<tileMaxYAttribute>。

请注意不同DBMS产品的区分大小写。请查看http://www.alberton.info/dbms_identifiers_and_case_sensitivity.htmlhttp://en.wikibooks.org/wiki/SQL_dialects_reference/Data_structure_definition/Delimited_identifiers

在上面的示例中,我们有<maxXAttribute name =“MaxX”/>,这将导致DB2和Oracle的属性名称为MAXX,而postgres的属性名称为maxx。一个好的策略是使用由大写/小写字母组成的标识符(表和属性名称),具体取决于您的DBMS。

这种方法确保没有预定义的表和属性名称,允许无缝集成到现有的命名约定中。

组态

每个Map及其金字塔都由XML文件配置。配置可分为3个部分

  1. 数据库映射如上所述
  2. JDBC连接配置
  3. 地图配置

JDBC Connect配置

根据部署环境,连接数据库的可能性不同。在客户端java应用程序中使用此插件将需要JDBC驱动程序连接,J2EE容器内的操作应该更喜欢JNDI数据源连接(您的管理员会很高兴)。

JDBC驱动程序的示例XML片段文件连接到H2数据库connect.xml.inc

< connect > 
      < dstype  value = “DBCP” /> 
      < username  value = “user”  /> 
      < password  value = “password”  /> 
      < jdbcUrl  value = “jdbc:h2:target / h2 / testdata”  /> 
      < driverClassName  value = “org.h2.Driver” /> 
      < maxActive  value = “10” /> 
      < maxIdle  value = “0” />
</ connect >

用于连接到JNDI数据源connect.xml.inc的 XML片段:

< connect > 
      < dstype  value = “JNDI” /> 
       < jndiReferenceName  value = “jdbc / myDataSourceName” /> 
</ connect >

地图配置

现在我们可以将这些内容组合在一起并为地图创建配置文件。

示例文件map.xml:

<?xml version =“1.0”encoding =“UTF-8”standalone =“no”?>
<!DOCTYPE ImageMosaicJDBCConfig [
   <!ENTITY映射PUBLIC“mapping”“mapping.xml.inc”>
   <!ENTITY连接PUBLIC“connect”“connect.xml.inc”>
]>


<config version =“1.0”>
   <coverageName name =“oek”/>
   <coordsys name =“EPSG:31287”/>
   <! - 插值1 =最近邻居,2 =双极,3 =双三 - >
   <scaleop interpolation =“1”/>
   <axisOrder ignore =“false”/>
   <verify cardinality =“false”/>
   &映射;
   &连接;
</配置>

DOCTYPE包括对connect.xml.inc和mapping.xml.inc的两个XML实体引用。XML解析器在解析时包含这些片段。

内容:

配置

根元素。版本属性保留用于此插件的未来版本。必须是“1.0”。

coverageName

地图的名称。此名称用于在元表中搜索元数据。

的CoordSys

坐标参考系统的名称将由geotools库的CRS.decode()引用。

scaleop

要使用的插值方法(1 =最近邻,2 =双极,3 =双三次)

axisOrder

该模块将读取请求中的CRS与存储在配置中的CRS进行比较。如果轴顺序不同,则执行x轴开关。一些客户端在调用模块之前执行此操作,并且插件再次切换导致原始信封。值“true”会抑制此切换。

校验

如果您在不同的表中有图像数据和地理配准信息,并且属性基数为true,则插件将检查每个表中的记录数。如果数字不相等,图像/金字塔将被删除,您会在日志中看到警告。此检查适用于测试环境,在生产环境中将值设置为false以避免性能不佳。

配置摘要

映射配置由3部分组成,连接配置,映射配置和映射配置。因此,您具有很大的灵活性,可以为许多地图重用部分配置。

转载自:https://blog.csdn.net/qq_36178899/article/details/81386209

You may also like...