矢量镶嵌数据存储区委派要求

向量马赛克数据存储委托是一个数据存储,它包含对向量粒数据存储、边界多边形或多边形几何体的引用以描绘索引区域,以及可选地查询以返回向量粒的其他属性。

委托数据存储区可以采用Geoserver支持的任何格式,但有两个必填字段:

  • 必须有一个表示多边形或多重多边形形式的索引空间区域的几何字段。对此类字段的名称没有要求。

  • 应该有一个名为 params ,文本格式,它包含指向像shapefile这样的粒资源的URI--或者--.properties格式的配置字符串。(请参阅 Java Properties file 有关格式的更多详细信息)。

超出这两个必填项的任何其他字段都可以用作可查询/可筛选属性,并将用于缩小查询搜索的潜在粒向量的数量。非必需参数将与向量粒参数组合以创建输出要素类型。

可以找到属性数据存储格式的委托的示例 here 。这个 nametype 字段可用于筛选颗粒,而 ``params` contains the location of the granule file and `` 它的足迹。

使用ogrtindex创建索引

这个 ogrtindex GDAL库中的命令行工具可用于收集目录中的所有数据集,并为其创建索引表。位置的格式与Geoserver预期的格式略有不同,因为它使用 location,tableIndex 格式,因此需要运行快速SQL以使其匹配。

下面是一个从shapefile目录生成委托shapefile的示例。下面的第三步使用 ogr2ogr 命令行删除逗号和编号 ogrtindex 追加到区组引用的末尾,并将文件位置转换为有效的URL。

  1. 切换到包含shapefile的目录

  2. Ogrtindex-写入绝对路径-tileindex“pars”Delegate_raw.shp*.shp

  3. Ogr2ogr Delegate.shp Delegate_raw.shp-方言SQLite-SQL“选择几何图形,‘file://’||SUBSTR(params,1,Length(Params)-2)as Params from Delegate_RAW”

这个 delegate.shp 然后,可以将Shapefile发布为Geoserver中的存储(无需发布图层),然后可以参考它来创建马赛克存储:

例如,假设一个用户下载了 TIGER shapefile 对于 PLACE 主题,提供美国每个州的城市区域的Shapefile:

../../_images/places-files.png

存在帮助批量下载给定主题和年份的文件的脚本,例如 get-tiger

ogrtindexogr2ogr 可用于生成索引shapefile,然后在Geoserver中进行配置,然后用作马赛克存储的基础:

../../_images/places-stores.png

The store containing the delegate/index table, and the mosaic store

../../_images/places-mosaic-config.png

The mosaic store refers to the delegate store by name

这个 connectionParameterKeyurl ,因为这就是shapefile数据存储正在查找的参数,名为 url 要打开的shapefile的位置。将首选的SPI设置为shapefile存储,以加快粒存储的查找速度(可以省略它,但会有很小的性能下降)。

然后,可以在Geoserver中发布马赛克层,在一张地图中渲染所有必需的shapefile:

../../_images/places-mosaic.png

使用ogr2ogr和ogrtindex创建FlatGeobuf颗粒

FlatGeobuf 由于内置了对R-Tree索引的支持和使用 HTTP Range requests 以限制通过网络传输的数据量。

ogr2ogr 可用于使用如下所示的简单bash脚本将shapefile目录转换为带索引的FlatGeobuf目录

#!/bin/bash
shopt -s nullglob
FILES="/data/tiger/*.shp"
for f in $FILES
do
  fgbfilename="$(basename $f .shp).fgb"
  ogr2ogr -f FlatGeobuf $fgbfilename $f -nlt PROMOTE_TO_MULTI -lco SPATIAL_INDEX=YES
done

下面是一个从FlatGeobuf目录生成委托shapefile的示例。下面的第三步使用 ogr2ogr 命令行删除逗号和编号 ogrtindex 追加到区组引用的末尾,并将文件位置转换为有效的URL。请注意,排除了 write_absolute_path 。相反,我们将AWS S3存储桶URL附加到生成的文件名中。

  1. 使用FlatGeoBuf切换到目录。

  2. Ogrtindex-tileindex“pars”Delegate_raw.shp*.fgb

  3. Ogr2ogr Delegate.shp委托_raw.shp-方言SQLite-SQL“从‘https://mybucketname.s3.amazonaws.com/’||SUBSTR(params,1,_RAW中选择几何图形,参数长度(参数)-2)作为参数”

  4. 将FlatGeobuf Granule文件上传到前面步骤中引用的S3存储桶(并确认存储桶内容是公开的)。

此时,您可以发布 delegate.shp 如上例所述,将shapefile作为Geoserver中的存储文件,也可以在发布前将其加载到PostGIS中(请参阅 Smart Data Loader 用于创建PostGIS商店的工具)。PostGIS委托是特别有用的马赛克,它可能会随着时间的推移而改变,因为支持并发编辑、高速率加载和事务。请注意,因为索引中的区组引用是HTTPS URL,所以可以在您的Geoserver安装可以访问的任何地方托管索引FlatGeoBuf。