创建地图缓存,会明显提高我们浏览地图服务的速度,特别对于应用中使用的非常详细的底图数据,创建缓存以提高应用性能尤为重要。如果之前创建过缓存,你可能已经意识到,创建大数据缓存将花费大把的时间,占用大量的磁盘空间。
对于服务器管理人员来说,在开始创建缓存之前自然想搞清楚这项工作需要多长时间、切片需要多少磁盘空间。ArcGIS10.1提供了几个全新功能,使我们可以轻松估算缓存大小,追踪切片创建的进度。
1、估算缓存大小
10.1中缓存服务一个非常重大的变化是:在发布服务之前就可以定义缓存,设置各种缓存参数。ArcGIS能够利用这些信息,计算缓存需要的磁盘空间,供我们参考。预估缓存大小,这样做的好处是我们可以了解硬件设施是否充足,并且可以决定是在服务发布完成后就立即创建所有切片(也是10.1的新功能),还是后续阶段性的手动运行工具来创建切片。
定义了缓存比例尺以及切片格式后,会看到Estimated Cache Size栏中提供了一个粗略的缓存大小数据。虽然比什么都没有要好点,但是这个数据并不能有效的反应当前地图的真实情况。(它是基于所选图像格式的平均切片大小和缓存的预期切片个数的一个十分粗略的近似值。此估计值假设矢量地图采用非 JPEG 图像格式而栅格影像采用 JPEG 与混合 (MIXED) 格式。对于 JPEG 与混合 (MIXED) 格式,此估计值假设压缩质量为 75)。我们可以点击Calculate Cache Size按钮对切片大小进行更为精确的计算。
该功能会为服务构建随机示例切片并使用它们外推缓存大小的估计值。您可增加或减少示例缓存构建的数量,从而影响估计值的准确性。很多情况下,我们需要花费较多时间来进行精确估算。
如果已经指定要素类作为缓存的感兴趣区,那么所报告的估计值将基于整个地图范围,而不是要素类的边界。要获得要素类覆盖的缓存大小的估计值,请使用此公式:(要素类面积 ÷ 整个范围面积) × 估计值。这个估计值并不是一个精确的估计值,因为ArcGIS Server会以较大的块创建切片,而有时这些块会超出要素类的边界。然而,该值通常是一个足够接近实际值的估计值,足以帮助您正确决定是使用自动缓存还是手动缓存。
2、缓存创建进度
安装ArcGIS Server 10.1后,也许你会注意到一个全新的预配置的GP服务:ReportingTools服务。该GP服务用来报告地图缓存进度情况,不管切片正在创建与否。要查看进度报告,需要在ArcGIS Server Manager中点击任一缓存服务旁边的切片图标(或者在ArcMap的Catalog窗口中中右键点击任一缓存地图服务,然后点击View Cache Status.)
弹出的初始化的进度报告窗口很小,仅显示缓存完成的百分比。点击 Show Details 可以展开窗口查看每个级别的进度报告,包括切片是否正在创建、正在创建哪个比例级别的切片等等。
我们看到的完成百分比是基于全图范围的长方形地图范围。因此如果使用的是不规则形状的指定要素类作为缓存的感兴趣区,这个百分比可能不能达到100%。
3、地图缓存状态的空间报告
打开缓存文件夹会发现,与10.0相比,多了一个Status.gdb文件数据库,这个数据库中存放着地图缓存切片进度状况的空间信息。
把这个文件数据库拷贝到其他路径下,然后可以用ArcMap打开要素类来查看属性表以及缓存完成状态地图。
其中TaskStatus要素类对于查看缓存bundle边界尤其有用。并且有每个作业的起始和结束时间以及作业成功完成与否。有兴趣的话可以播放这个时态数据,可以清楚看到切图顺序。
当维护缓存时,status.gdb非常重要。如果出现缓存失败并且你没有其他方式在失败的位置重新启动缓存作业,运行manage map server cache status重建状态。注意缓存结束的区域,并仔细考虑是否是这个区域的某个要素导致失败的发生。然后选择未缓存bundles导出要素类,使用该要素类来定义接下来缓存作业的边界。这种方法要比使用manage map server cache tiles的recreate empty titles选项更快速一些。