本文介绍一些常用的,对栅格切片的操作,适用范围详见描述。

如何发布切片服务,详细步骤见ArcGIS 发布服务的那些事儿——(2)切片服务(A篇)

目录

场景一:切片复用

场景二:空间上不同的两个切片合并

场景三:切片补切

场景四:切片减少

场景五:查找缺失切片

情景六:减少切片冗余(导出感兴趣区切片)

6.1 导出感兴趣区切片

6.2 删除原始服务所有切片

6.3 导入感兴趣切片



场景一:切片复用

描述:原始Server(低版本如10.1)中有一个切片服务,现在新部署了一个Server(高版本如10.5)环境,还需要用原来的切片服务,重新切片数据量大,耗时

关键词:跨机器  跨版本  不同站点

步骤:迁移的服务要和之前所在的文件夹和服务名称一模一样才可以

假设发布一个名为test2的服务,在skmap文件夹下

1、加载一个正确位置的矢量面,发布为动态服务,放在skmap文件夹下,起名为test2。

2、停止服务,在arcgiscache中新建文件夹skmap_test2,在此文件夹下新建Layers,然后将原来的_alllayers、Status.gdb、conf.cdi、conf.properties、Conf.xml文件拷贝至Layers文件夹下,并从skmap_test2给arcgis 账户完全控制权限,并依次检查。确认无误后,启动服务。

3、此时启动了的服务还没有切片的小图标,点进去在缓存一项中,点击重启即可。

 

 

 

 

场景二:空间上不同的两个切片合并

有两个切片服务,坐标系相同,切片方案相同,在不重新切片的情况下将两个服务中的切片合并到一起,如下图所示的切片合并到一起

关键词:同一站点  同一机器

GDAL库实现栅格切片 java 栅格切片技术_缓存

步骤:新发一个服务,地图文档中包含上述两个区域(如下图所示),选择发布切片服务,手动切片,注意,切片方案和数据坐标系要完全相同

运行切片导入工具,将sub1和sub2两个服务的切片导入到新发的服务中

GDAL库实现栅格切片 java 栅格切片技术_缓存_02

合并后效果

 

注:如果合并后遇到在本该有数据的地方一片空白,类似于相互压盖的情况,那么取消勾选导入切片工具中的overwrite。

场景三:切片补切

即缺少层级,假设原始服务有5-8级,现在需要增加第9级切片,就需要进行切片补切

关键词:同一服务  增加层级

步骤:在ArcCatalog中,找到服务,右键选择服务属性

GDAL库实现栅格切片 java 栅格切片技术_栅格切片管理_03

移动滑块到9级,并选择手动创建切片,点击ok

此时刷新server页面,查看服务切片时,会发现,层级已经增加

GDAL库实现栅格切片 java 栅格切片技术_栅格切片管理_04

还是在ArcCatalog中,找到服务,右键,管理缓存,管理切片,打开如下图所示工具,更新模式那里选择recreate_enpty_tiles

GDAL库实现栅格切片 java 栅格切片技术_GDAL库实现栅格切片 java_05

运行完以后再次检查,切片已经完整了

GDAL库实现栅格切片 java 栅格切片技术_GDAL库实现栅格切片 java_06

场景四:切片减少

原始服务的层级为5-8级,现想将切片的层级减少,改为5-7级

关键词:同一服务   减少层级

步骤:在ArcCatalog中,找到服务,右键选择服务属性

GDAL库实现栅格切片 java 栅格切片技术_栅格切片_07

滑块滑到7级,保存。

进入到admin页面,如https://localhost:6443/arcgis/admin

依次点击services,文件夹名称,服务名称,进入如下图所示页面

GDAL库实现栅格切片 java 栅格切片技术_GDAL库实现栅格切片 java_08

滑到最下面,点击edit,在浏览器中用快捷键ctrl+F,调出查找按钮,输入maxLOD,将这个属性后面的数据改为7并保存

GDAL库实现栅格切片 java 栅格切片技术_栅格切片管理_09

此时刷新服务,就可以看到服务中只有5-7级切片了

GDAL库实现栅格切片 java 栅格切片技术_GDAL库实现栅格切片 java_10

server配置目录中对应的L08文件也可以删除了

场景五:查找缺失切片

在实际的工作中,切图工作总是耗时的,如果出于某些原因,切图过程被迫中断了,那么只需要在ArcCatalog中找到这个服务并右键,选择管理缓存——管理切片,运行Manage Map Server Cache Tiles,选中要切图的那一级,继续切就完事儿了,但理想往往很美好,现实很骨感,有那么一个层级,不管运行多少次工具,还是切不下去,这个时候,就需要查找缺失切片了。

遇到如下图所示的情况

GDAL库实现栅格切片 java 栅格切片技术_栅格切片_11

查找步骤:

1、先到server的配置目录,找到该服务的缓存路径,一直到Laeyr这一级,并复制

GDAL库实现栅格切片 java 栅格切片技术_GDAL库实现栅格切片 java_12

2、在ArcCatalog中打开

GDAL库实现栅格切片 java 栅格切片技术_ArcGIS_13

点击确认后,在ArcCAtalog中出现如图所示的界面

GDAL库实现栅格切片 java 栅格切片技术_栅格切片管理_14

将上述4个要素类拖进ArcMap中,分别打开属性表,可看到如下相关信息

CacheStatus

GDAL库实现栅格切片 java 栅格切片技术_ArcGIS_15

从这个属性表中可以看到,objectID为1-7,percent为100,说明0-6级切片是完整的,objectID为8和10的,percent不是100且Status中为Partial,说明7和9级生成了部分切片,还不完整,生成的比例为percent中显示的比例,剩余的percent为0,说明还没有生成切片

注:objectID是要素的属性,从1开始,而切片层级是从0开始

JobDetails

GDAL库实现栅格切片 java 栅格切片技术_缓存_16

这个表中详细记录了提交Job的详情,(为了呈现切片生成不完整的情景,我采用了手动切片,并在切图切到一半的时候强行停止了CacheTools和CachingControllers工具)包括运行的工具名称,涉及到的比例尺,job类型

JobStatus

GDAL库实现栅格切片 java 栅格切片技术_栅格切片管理_17

TaskStatus

GDAL库实现栅格切片 java 栅格切片技术_栅格切片_18

从上面两个表中都可以查到JobID和Status,可找到Status中显示failed,还能看到错误的比例尺,记住这个比例尺。

加载Laeyrs

GDAL库实现栅格切片 java 栅格切片技术_GDAL库实现栅格切片 java_19

将如图所示的Laeyrs加载到ArcMap中,并将比例尺固定到刚才切图出错的比例尺层级

固定比例尺方式:在内容列表中,Layers上右键——属性,调出如图所示界面

GDAL库实现栅格切片 java 栅格切片技术_缓存_20

接下来,就移动地图,查找缺失的位置(这个过程就比较痛苦了……)

如果发现了类似这样的区域

GDAL库实现栅格切片 java 栅格切片技术_缓存_21

这个位置本来应该是有地图的,但此时这里没有,说明这个位置切片没有产生,那么就需要创建AOI(Area Of Interest),将这片位置单独拿出来,和之前的所有设置一模一样,包括比例尺、符号化、坐标系、切片方案等,重新发布服务,切片方案也要选择一样的,单独切这个层级,要注意发布服务前分析栏里的内容并改正,这些可能就是导致切图失败的因素,直到新的切片生成。然后使用情景二中用到的那个工具,将新的切片导入到这个服务中即可。

如果,在该比例尺下,所有的位置都找了一遍,发现并没有哪个地方有缺失,而,切片状态的百分比并不是100%……也不急,我先告诉你一个真相

GDAL库实现栅格切片 java 栅格切片技术_栅格切片_22

发现了没有,在实际的切片过程中,很多地方,都是空白的,这就造成了大量的冗余切片,为了测试,我用的都是ArcGIS Online的切片方案,因此范围是全球的,在实际操作过程中,有三种方式可以规避这样的情况

1、自定义切片方案,即将切片方案的切片原点刚刚好覆盖数据,可以根据数据的Extent来填写

2、如果一定要是统一的切片方案,不能更改切片原点,那么则需要导出导入切片,具体步骤会在下一个情景详说

3、如果是矢量数据,还可以发布矢量切片服务

因此,如果你遇到的也是这样的情况,在实际浏览中发现没有缺失切片,那就不必过分纠结100%这个数字了。

情景六:减少切片冗余(导出感兴趣区切片)

上面例子中,所有层级都切完,文件大小如图所示,太占磁盘空间

GDAL库实现栅格切片 java 栅格切片技术_栅格切片管理_23

6.1 导出感兴趣区切片

在ArcCatalog中找到上面的服务,右键——管理缓存——导出切片,运行下图所示工具

GDAL库实现栅格切片 java 栅格切片技术_ArcGIS_24

注意:Storage Format Type选择COMPACT_V2,Area Of Interest(Polygon)选择一个面数据,能否覆盖数据范围,工具便只会导出AOI中的切片缓存

6.2 删除原始服务所有切片

GDAL库实现栅格切片 java 栅格切片技术_缓存_25

6.3 导入感兴趣切片

GDAL库实现栅格切片 java 栅格切片技术_GDAL库实现栅格切片 java_26

导入完成后看切片百分比

GDAL库实现栅格切片 java 栅格切片技术_栅格切片管理_27

GDAL库实现栅格切片 java 栅格切片技术_GDAL库实现栅格切片 java_28

有效减少冗余切片,就是过程略痛苦