紧凑型缓存技术小结

0
分享 2018-08-15

Tiling Scheme

每个缓存服务的切片目录中都会包含一个 Conf.xml,也是就是tile scheme 文件了。
这个文件包含了很多有关切片设置的信息:
  • Spatial reference information
  • Tile origin
  • Tile width/height
  • DPI
  • LODs (Levels of detail - scales)
  • Tile Image format
  • Compression quality
  • Antialiasing settings
  • Storage method


Version Issue

紧凑型缓存的存储格式为.bundle 。但有时我们会看到缓存目录中包含.bundlx 这样的文件,这说明这些缓存是ArcGIS 10.2.2 或以下版本创建的。从 ArcGIS 10.3 开始,紧凑型缓存做了些改进, .bundlx(tile index information) 文件被包含到了 .bundle 文件中 ,从而进一步降低了文件的数量。
你可以在缓存服务的tiling scheme “Conf.xml“ 中查看确认:
10.3 or later (Compact cache V1)
<CacheStorageInfo xsi:type='typens:CacheStorageInfo'>
<StorageFormat>esriMapCacheStorageModeCompact</StorageFormat>
<PacketSize>128</PacketSize>
</CacheStorageInfo>

10.2.2 or former (Compact cache V2)
   <CacheStorageInfo xsi:type='typens:CacheStorageInfo'>
<StorageFormat>esriMapCacheStorageModeCompactV2</StorageFormat>
<PacketSize>128</PacketSize>
</CacheStorageInfo>

  • 10.3 及之后版本的 ArcGIS Server 仍然可以使用低版本的生产的切片来运行现有服务。如果我们需要将低版本的缓存拷贝过来给高版本的服务用,要注意这个
    <StorageFormat>
    参数的一致性。
  • ArcToolbox工具 Upgrade Map Server Cache Storage Format 来升级缓存。升级的过程中不会重新创建切片,而是重组原有的切片。这个工具在ArcGIS Pro 中没有提供。目前,我们还只能使用ArcMap或者使用ArcGIS Server 带有的arcpy包,通过Python来调用。
  • 不支持将高版本的切片供低版本软件使用。如果希望降级,可以使用 Export Map Server Cache 工具导出紧凑型切片。


Tile Format

Tile Format 是指存储切片使用了何种栅格格式,而不是切片文件的本身存储格式 / Storage Format ( Exploded / Compact )。
  • PNG ArcGIS 10.1开始引入的类型。选择这种类型,Server会自行确认每张切片的PNG位深,从而达到缩减磁盘占用的目的。在我们不确定使用何种PNG格式时,保持这个默认设置就不错。 如果磁盘空间不在考虑范围下,而希望优先考虑切片速度,那最好选择MIXED格式了。
  • PNG8 位深为8位的PNG图片格式;可以最多存储256色,支持布尔透明,磁盘空间占用小,并且无损。适合于颜色相对简单,并且需要透明背景的地图,例如公路数据切图。
  • PNG24 位深为24的PNG图片格式;可以最多支持约1600万色。当地图的色彩复杂程度超过256时,你就该考虑使用这个格式。但是,PNG24不支持透明,另外不建议在IE6及以前版本浏览器中使用。
  • PNG32 在PNG24的基础上增加了Alpha通道,因而增加了各种程度半透明的支持。当地图色彩复杂,并开启了抗锯齿功能,PNG32就是最佳选择了,并且PNG32在各个版本的浏览器中支持良好。
  • JPEG 当切片中不需要透明背景时,JPEG是最常用的切片格式,并且JPEG可以hold住大量的复杂色彩。例如,包含影像、符号化精细程度高的矢量地图都可以使用这个格式。 JPEG是种有损压缩格式,可以在1%-100%间设置压缩比率,默认值75%一般是显示质量和磁盘空间的最佳平衡。如果觉得噪点过多质量不够,可以调高这个百分比,但你需要在响应性能和图片质量之间做好博弈。
  • MIXED 顾名思义,混合格式,在切片不透明区域使用JPEG,在透明区域使用PNG32。这是种非常智能的搭配方案,降低硬盘占用的同时,很好的解决了例如在切片边缘需要的透明需求。
  • LERC LERC是Esri自主研发的开源的有损压缩格式,点这里有更多信息。推荐用于位深较大的单波段影像或高程数据服务中,如浮点型,32-bit、16-bit、12-bit的数据。 官方声称,LERC压缩方法在压缩速度和压缩质量方面分别是LZ77的5-10倍。当LERC用于整型栅格数据时,损失率在0.99或更低,几乎可以视为无损压缩。 LERC压缩方式目前只支持Image Service ,而不支持 Map Service。


Performance Suggestion

紧凑型切片比松散型切片有诸多有点,详见文末的官方文档。但不是说选了紧凑型切片性能就没有继续改善的余地了,下面的这些点也是提升切片性能的一些有效建议:
  • 地图数据尽可能使用本地数据,共享目录的数据切片时间可能会更长些;
  • 尽可能的避免使用动态投影;
  • 设置图层的可见比例尺;
  • 谨慎设置反锯齿的级别,标注的反锯齿对切片性能影响甚微,但要素符号的反锯齿会显著增长切片的时长;
  • 建议切片期间关闭防病毒等安全软件;
  • 尽可能地使用MIXED格式
  • 在切片之前为所有数据创建空间索引
  • CachingTools服务的最大实例数 = 核数 + 1,这是官方给出的最佳实践建议
  • 降低日志的级别,如果在大量切图任务中把Server日志开到Debug或Verbose级别,会产生极大的资源浪费。


Tile|SuperTile|Bundle

这三者的关系早在多年前就有大牛们探索发现过,见本文末的相关文章,文中有逻辑缜密且经得起时间检验的详细演绎过程……
简言之,他们的关系是个简单的数学关系,如下:
如果:
Tile = 256 × 256 pixel # 256×256 是ArcGIS Server默认的切片大小
Supertile = 4096 × 4096 pixel # 未开抗锯齿情况下是 4096×4096
那么:
Supertile = 16 × 16 Tile
已知:
Bundle = 128 × 128 Tile
因此:
Bundle 范围是 N-3 级的 Supertile 的范围

看图说话:

官方文档:


相关文章:



文章来源:http://kikitamap.com/2018/07/23/CompactCache/

4 个评论

Merry GISmas!
彩蛋!彩蛋!!
@_@

@_@ 回复 GIS知乎

Merry GISmas!
每个ID只需发现一个彩蛋即可中奖欧!请勿重复回复!

要回复文章请先登录注册