瓦片时空数据库——切片数据读取一(GeoWebCache)
目录
在栅格切片方面,目前主要的还是GeoServer和ArcGIS两大阵营。本小节主要讲基于GeoWebCache的切片数据格式
1 概述
在GeoServer阵营中,可以选择UDig和QGIS进行数据的符号化。并将符号化后的sld符号文件导入到GeoServer中,进行数据发布。切片默认路径在“GeoServer<版本号>\data_dir\gwc\”文件夹中。可以在“GeoServer <版本号>\webapps\geoserver\WEB-INF\web.xml”文件中,重新配置缓存地址路径。例如:
<context-param>
<param-name>GEOWEBCACHE_CACHE_DIR</param-name>
<param-value>C:\temp</param-value>
</context-param>
其中,GeoWebCache分别在<data_dir> / gwc-layers /目录中存储了每个GeoServer切片图层的配置。每个切片层都有一个XML文件。这些文件包含与独立版本中的语法不同的语法。可以在“Tile Layers”页面或通过GeoWebCache REST API配置切片图层。
数据发布完成后,点击首页“Tile Layers”,点击切图的图层组后面“Seed/Truncate”,点击“submit”即可开始切图,点击“Refresh list”可刷新查看切片状态。 数据将存放在配置的切片路径下。
2 数据存储格式
历史上,GeoWebCache有三种存储方式,负责tile和tile元数据处理:blob存储,Metastore和磁盘配额子系统。
1) blobstore是tile的存储机制,其默认实现基于文件系统。
2) Metastore是一个可选的基于H2的存储机制,用于关于切片的元信息,例如切片创建时间,大小和请求参数的使用。
3) 磁盘配额机制使用nosql嵌入式数据库来跟踪切片磁盘的使用情况,并根据用户设置的策略使切片到期。
从GeoWebCache 1.4.0开始,Metastore被基于完整文件系统的解决方案所取代,使得blobstore负责先前由Metastore跟踪的信息。默认情况下,这两个存储的存储位置是servlet容器指定的临时存储目录(将在那里创建名为geowebcache的目录)。如果此目录不可用,GeoWebCache将尝试在TEMP环境变量指定的位置创建新目录。内部将有一个磁盘配额目录(默认情况下称为diskquota_page_store),以及以每个缓存层命名的blobstore目录(例如topp_states用于图层topp:states)。
2.1 松散型切片数据格式
在GeoServer中,使用GeoWebCache默认生成的数据格式为松散型切片文件,其切片的数据结构如下图所示:
这里,ESPG_4326_13表示TileMatrix=EPSG:4326:13。后面的表示/{TileRow}/{TileCol}。所以在这里,只需要按照指定的路径将数据存储到Mongo数据库中即可。
2.2 文件Blob(persistent storage mechanisms)存储方式
除了松散型切片数据格式以外,GeoWebCache还提供了一种永久性的blob存储机制,即“blobstore”。“blobstore”是一种软件组件,它提供了在给定存储机制中存储和检索切片的操作。
从版本1.8.0开始,tile有两种类型的BlobStore存储机制:
1)文件blob存储:将tile存储在目录结构中,该目录结构由按层和缩放级别组织的各种图像文件组成。
2)S3 blob store:将磁贴存储在Amazon Simple Storage Service存储桶中,作为遵循类似TMS的密钥结构的单个“对象”。
可以在配置文件中配置零个或多个blobstore,以在不同位置和不同存储后端存储切片。 其中一个已配置的blobstores将是默认值。 这意味着它将用于存储其配置未明确指示应使用哪个blobstore的每个层的切片。
2.3 MBTiles Blob存储方式
这个blob存储允许我们使用MBTiles规范(版本 1.1)存储切片,该规范定义了一个用于在SQLite数据库中存储切片的模式,其中包含有关切片格式和投影的一些限制。MBTiles规范仅支持JPEG和PNG格式,并且假设EPSG:3857。实现的blob存储将读取和写入符合规范的MBTiles文件,但也能够写入和读取使用其他格式和投影的MBTiles文件。使用MBTiles blob存储将带来一些好处,但代价是性能损失。 MBTiles存储使用的文件数量明显减少,从而可以更轻松地处理数据(例如,备份,在环境之间移动切片)。在某些情况下,存储的数据将更紧凑,减少了磁盘上数据的大小。与文件blob存储区相比,此存储有两个限制:
1) 此存储未与磁盘配额集成,这是使用数据库文件的结果。
2) 无法在多个GeoWebCache实例之间共享此存储。
MBTiles文件对应于SQLite数据库文件。 为了限制每个单个数据库文件的争用量,系统允许用户决定数据库文件的粒度。 当GeoWebCache需要将切片映射到数据库文件时,它只会检索数据库文件路径,而不会考虑MBTiles元数据(这就是为什么这个存储能够处理其他格式和投影)。
基于默认的文件模板将属于某个图层的所有图块存储在单个文件夹中,该文件夹将包含每个给定格式,投影和参数集的子文件夹,并将在SQLite中对具有相同缩放级别,列范围和行范围的图块进行分组。 列和行范围值通过配置传递,默认情况下为250。提供的文件路径模板将始终被视为相对于作为配置选项提供的根目录。
下面是使用默认路径模板时blob存储根目录结构的示例:
.
|-- nurc_Pk50095
| `-- EPSG_4326image_pngnull
| |-- 11_2000_1500.sqlite
| `-- 12_4250_3000.sqlite
`-- topp_states
|-- EPSG_900913image_jpeg7510004a12f49fdd49a2ba366e9c4594be7e4358
| |-- 6_250_500.sqlite
| `-- 7_0_0.sqlite
`-- EPSG_900913image_jpegnull
|-- 3_500_0.sqlite
|-- 4_0_250.sqlite
`-- 8_750_500.sqlite
如果没有提供参数,将使用空字符串。 最好定义避免冲突的文件路径模板。可以在文件路径模板中使用的变量名称包括:
grid:网格集id
layer:图层的名称
format:图块的图像格式
params:参数唯一哈希值
x:列范围,基于列范围计数配置属性计算
y:行范围,基于行范围计数配置属性计算
z:缩放级别
有效的MBTiles文件同时也需要元数据信息,在创建MBTiles文件时将,系统会自动添加图像格式和图层名称。
元数据模板如下:
<layerName>.metadata
参考资料:
1)https://www.geowebcache.org/docs/current/configuration/storage.html#mbtiles-blob-store
2) https://www.geowebcache.org/docs/current/configuration/index.html
3) https://docs.geoserver.org/stable/en/user/geowebcache/index.html#gwc
4) https://www.geowebcache.org/docs/current/configuration/storage.html
转载自:https://blog.csdn.net/geliang0021/article/details/83624804