Windows下发布本地瓦片服务显示正常,linux下发布服务空白或瓦片显示丢失

起因:客户现场获得的离线高德地图瓦片,发布成功后空白,无法显示瓦片。后利用工具自行下载了一片区域的1-17级别的高德ArcGIS Server瓦片,发现在本机(Windows环境下)预览是正常的,换别人电脑访问预览也是正常的。但在虚拟机linux下发布,刚打开预览界面显示空白,手动放大缩小之后有显示,应该是瓦片部分能调用,大多数显示都有问题。走投无路寻求易智瑞工程师帮助,折腾了几天,最后终于解决了。

 

                 

                                             (上图为windows环境发布,下图为linux环境发布)                                                           

 

本地环境:ArcGIS Desktop 10.7,ArcGIS Server 10.7(win和linux)


目录

1 各种方法尝试

1.1 切片配置版本问题

1.2 发布操作不对

1.3 文件系统不兼容

1.4 手动切片

1.5 ArcGIS Server有bug

1.6 人品

2 发现问题

3 改名发布

4 方案显示优化

4.1 发布基于ArcGIS online/Bing Maps/google Maps组织空服务

4.2 方案替换

5 总结


1 各种方法尝试

1.1 切片配置版本问题

起初反应工具下载的离线瓦片是基于arcgis 10.0的,在conf.xml文件中确实也看到,客户也说是arcgis 10.1发布就没问题,现在准备升级到arcgis 10.8系列,发布本地瓦片出现了问题,因此怀疑是高版本瓦片组织结构发生了变化,导致发布失败。

而我用本地数据自己再切一次发现也确实如此,我下载的1-17级,对应arcgis切之后0-16级。

可这样的说法根本站不住脚,对比原始和手动切片后的配置文件,手动改原始conf.xml级别和版本,发布后问题依旧。而且不改任何东西,凭什么windows就可以,而我linux就不行!

另外易智瑞技术反应紧凑式切片格式在10.3以后有变化,而下载的瓦片是松散式的,应该可以复用。

1.2 发布操作不对

我自己的操作是本机D:\Amaptile\xian17中存放发布数据,虚拟机直接拷贝至/home/arcgis/server/usr/directories/arcgiscache,且将其注册。Window我也直接放在了<arcgisserver>/arcgiscache下,没有改任何东西。然后就在arcmap中加载发布。

但是,windows成功了,linux又失败了,==!

而后又试了发布空服务,再利用import map server cache工具导入,正好看过帖子说这样的方法实现低版本切片向高版本迁移。但……是一直报错,勾选其中的Upload data to server (optional) 也只是在文件夹下新建了缓存目录,而没有瓦片文件。于是又失败了!

 

1.3 文件系统不兼容

我是利用Xftp将文件夹xian17直接传输至linux环境,是不是因为windows环境与linux环境文件组织不同,传输后转换的过程中发生了错误呢?

于是也没其他很好的办法,就是将其压缩成xian17.zip,然后再传输、解压、发布,依旧失败。

1.4 手动切片

 基于现有切片结构重新手动切片,可行!但是预览页面地图像素化严重,有马赛克现象。

 另外一个方法就是按照切片级别,1-17级分别切片,然后拷贝到一起,可行!但是同样出现了模糊,轻微马赛克情况。

 作为最后一种没有办法的办法,比较麻烦的方案。而且最后数据量肯定是我测试数据的好几个级别,此方法留作备用。

1.5 ArcGIS Server有bug

 想了一想,应该不可能。Windows和linux肯定发行前都有测试,这种情况可能性虽不排除,但极低。

1.6 人品

 想啥呢?怎么可能,不存在的! :)

 

2 发现问题

我单独把17级切片导出,准备手动切片。发现在ArcGIS online/Bing Maps/google Maps切片方案下,像素尺寸Pixel Size大小与conf.xml中对应级别一致,Scales不一样。

而且对比切完后的同级别文件组织结构,是一模一样的。

那么,两者唯一的区别就是文件夹和文件的命名大小写差异了。手动切片后ArcGIS JavaScript API预览正常,且显示效果很好,没有模糊和马赛克那种效果。

是的,就是文件夹和文件名命名大小写的问题。

因为linux系统是严格区分大小写的,Windows环境对大小写不敏感,所以在windows平台发布地图调用瓦片无任何问题。瓦片文件有字母和数字组成,都是首字母大写,其余字母小写,数字不变。这也就解释了为什么能起初只显示部分瓦片,这是因为文件夹和文件名中除首字母大写外,其余部分只是数字,所以这部分调用的到。

 快吐血了,折腾了几天,竟然是这个低级问题,一直都没注意到。

                                                                 (linux可以这样)

 

3 改名发布

已经发现,瓦片文件组织,瓦片级别文件夹及其下的文件只要保证首字母大写,其余小写就可以了(如_alllayers -> L13 -> R00000CCD -> C000019E2.png,改为 R00000ccd -> C000019e2.png)。

改名字一般通过写脚本的方法,奈何时间紧张(动手能力差)。于是找到另外的工具在Windows下改,然后再传至linux目录。

以ReNamer.exe为例:

按照原步骤,发布一切正常,预览终于成功了。

 

4 方案显示优化

对比利用原始切片配置文件发布与ArcGIS online/Bing Maps/google Maps切片方案下地图显示,后者更清晰。原始切片配置文件发布地图显示与原始高德地图相比,同级别显示比例有差异,且模糊,有马赛克效果。

       

                            (左图:ArcGIS online/Bing Maps/google Maps     右图:原始)

那么,有种可能是利用各类下载工具得到的切片组织方案是强行把互联网地图的切片组织加载到ArcGIS Server瓦片的,且随着版本的变化,文件命名组织稍有变化。而工具还是基于ArcGIS 10.0,原始下载的conf.xml是比例Scale可以与手动ArcGIS切片一致,但是分辨素(Resolution)却发生了变化。

4.1 发布基于ArcGIS online/Bing Maps/google Maps组织空服务

 本机加载瓦片数据Layers,发布服务设置。方案选择

4.2 方案替换

将基于ArcGIS online/Bing Maps/google Maps组织发布的文件夹中的conf.xml与conf.cdi替换掉之前发布的原文件(或者将原切片文件_alllayes拷贝至此对应目录)。

重启服务。

对比图(左:ArcGIS online/Bing Maps/google Maps    右:原始)

 

5 总结

切片方案很重要,第一想到的就是这里出问题。

另外也应该想到本地瓦片是不是ArcGIS生成?其他工具是基于什么。

最后,也很基础,却常常想不起的文件结构。

至此结束,也谢谢易智瑞工程师一直配合排查问题。

Linux文件系统区分大小写!

Linux文件系统区分大小写!

Linux文件系统区分大小写!

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页