查看原文
其他

ArcGIS 被忽略的性能损失可能影响巨大

你个海怪 GIS荟 2023-01-11

点击上方蓝字,关注我带你飞!

前言:在不为人知的细微之处,汇聚的能量终让人侧目。


细微之处

正面的那一定是件好事,但是如果是负面,不仅让人侧目,往往也让人困惑,毕竟细微之处常常被忽略。

Arcmap 移动一下界面位置,刷新很缓慢,导出地图,几个小时还在5%,然后电脑直接挂一周才把所有地图导出来。

确实因为规范的要求、实际地理地物的需要,制作的地图图层很多,尺寸很大,图斑也很多,但是地图导出这么慢也是没有想到,试过各种方法,都没有啥用,最后的解决方法就是慢慢等着吧。

那么到底是什么地方出的差错呢?问题到底在什么细微之处呢?

每一个 mxd 文档中,点击 文件 ,再点击下面的 分析地图



可以看到下面出现当前地图文档中的各种不规范行为导致的警告,双击这些警告一般可以看到建议选项。

正如下面显示的,有两种高严重性的警告,一是投影不同,二是数据源没有空间索引。这两个是非常常见的警告,我一开始也是忽略了,觉得没有什么。



那么到底投影不同会有多大的影响呢?



性能影响几何?

在解决投影问题后,地图导出速度简直快了100倍!(以前那个很大很多图层的mxd文件,投影不相匹配的很多)。当然这也只是感觉,我们这里使用一些数据量较小的文件来测试一下。


0.如何测试

手动导出地图,手动计时肯定是不准的,所以这里也借用 python 帮助一下,使用计算机重复导出地图10次,记录下每次的用时,最后取平均值。


# -*- coding:utf-8 -*-

import arcpy
from time import time
import os


outpath = os.path.abspath(os.getcwd())

def sample():
   time1 = time()
   mxd = arcpy.mapping.MapDocument("CURRENT")
   arcpy.mapping.ExportToJPEG(mxd,
                              os.path.join(outpath, "res"),
                              resolution=300)
   return time()- time1


if __name__ == '__main__':
   time_list = []
   for i in xrange(10):
       time_list.append(sample())
   print sum(time_list)/len(time_list)


1.测试样本1

这是第一个测试的,分析结果如下,所有图层都没有投影问题,仅有一个空间索引,暂时不管空间索引问题:


样本1 地图分析结果


运行程序,然后等待,最后平均时间是12.37秒:



2.测试样本2

测试样本2是在样本1的基础上,将其中三个图层(共10个)从CGCS2000_3_Degree_GK_Zone_35 改成了 CGCS2000_3_Degree_GK_CM_105E,下面分别简称 35105e

数据框坐标是 35,可以在下面看到测试样本2的分析结果,新增了一项投影不同的警告:


样本2 地图分析结果


然后运行结果显示16.02秒:



平均时间从12.37变成了16.02秒,增加了3.65秒,增加了近30%的时间。



结论

平均时间从12.37变成了16.02秒,增加了3.65秒,增加了近30%的时间。

  • 投影问题不仅影响正常使用时候的图像绘制和刷新,对于地图导出也有影响;

  • 影响程度不小(比我以前认为的要大)。


为什么性能会降低

为什么性能会降低,因为arcgis有一个独特的动态投影功能:projection on air。

arcgis有一个数据框的概念,数据框会复制模仿第一个添加进arcmap的矢量(栅格)的坐标系。

当你添加第二个投影不一样的矢量(栅格)时 ,arcgis 会自动进行投影转换(数据实际的坐标系不会改变),尽量保证所有图层都用一个坐标系来显示,这也是为什么会出现新添加的数据怎么也找不到,重启再添加就好了的情况,因为数据框坐标系不对。

这个功能是一把双刃剑,确实方便但是容易让人困扰,也让我忽略了投影不一致的问题,毕竟看上去很正常。


性能损失

指数函数有个词叫指数爆炸——多个数字相乘是很恐怖,数值会飞速膨胀。

对于非常复杂的 mxd 工程文件、大量的数据,因为投影问题而增加的时间可能就不止是130%。

当然对于一般的较小项目没有太大的影响,但是在制作工程文件时最好养成检查各个图层投影系的习惯。




荟GIS精粹,关注公众号:GIS荟


欢迎交流,更多文章请使用搜索
原创不易,老板点点下方的 收藏在看


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存