ArcGIS地图文档MXD效率慢的一点建议(转)
来自:http://blog.csdn.net/linghe301/article/details/7351697
最近关于ArcGIS的地图文档MXD慢的问题比较多,下面就对MXD的一点建议给大家分享!
关于地图文档MXD
地图文档其实是一个很好的对象,这个对象可以将我们配置好的地图包括(图层、符号、标注、比例尺、显示范围等)信息进行保存,然后我们使用MXD对上面的要求进行统一的管理,而且在我们发布地图服务时也需要使用该对象(虽然有MSD)。特别是在制图方面,地图文档的使用就更广泛了。
关于地图文档MXD的慢(以下都是数据源为ArcSDE为例)
一般用户反映我打开地图文档MXD比较慢,那么这个慢我们可以分两部分:
1:打开地图文档MXD的时候慢,也就是直接使用ArcMap双击MXD,那么在显示ArcMap的logo的时候,就非常慢
2:已经打开了ArcMap,但是加载相关图层,符号渲染等比较慢
再次强调一下,如果发现自己的ArcMap、ArcSDE、ArcGIS Server凡是使用到了地图文档慢的,请首先自觉的根据自己的相关版本将相关的补丁打全再往下看,因为这个很重要........
----------------------------------------------------------------------------------
对问题1的情况需要我们注意的:
1:服务器的防火墙是否关闭,或者5151端口是否禁用
2:服务器的IP是否修改
3:配置好的MXD的数据源是否改变
4:配置好的MXD的数据源的某些图层是否被删除
5:网络问题
典型问题:我在我本机配置好的MXD,怎么打开都很快,但是拷贝到其他机器就很慢?
解答:如果用户的ArcSDE连接为服务连接,应该不会出现该问题,但是仍然有用户反映,这个就根据用户的实际情况来做判断了。
如果用户的ArcSDE为直连,拷贝到其他用户打开肯定会有问题,因为直连需要netservicename,那么不同的机器可能配置的netservicename不一样,那么会有长时间打开,数据源为!号的现象,这也正常。
典型问题:我在我本机配置好的MXD,为什么我做了一些数据图层的删除,我的MXD打开就很慢?
解答:因为用户删除的是数据库内的图层,但是我们配置的MXD里面仍然保存了删除前图层的信息,那么加载图层会首先遍历MXD里面保存的信息,对找不到的图层可能会进行多次的查询等,所以会很慢。那么我们可以使用打开MXD后,将TOC里面的无效信息清空,然后save as copy一个新的MXD即可。
如果是连接其他服务器,加载的时候长时间未响应,可以直接将网线拔掉!这样会加快打开MXD的效率。
--------------------------------------------------------------------------------对问题2的情况需要我们注意的:
1:配置好的MXD包含图层的多少
2:所有图层的数据量大小
3:所有图层的空间索引是否创建和有效使用
4:是否使用了高级制图方法(maplex标注、Representation)
5:是否有版本数据,进行版本压缩
因为如果你的这个MXD包含好多图层加载,而且使用了比较高级的渲染方法,都会导致在加载图层时候比较慢的情况,有些时候是正常的,可能根据你的服务器和客户端的配置情况才能优化了。
但是在我们加载多个图层的时候,ArcMap的左下角会有一个“Drawing...(某个要素类名称)”,那么我们根据这个来判断在MXD加载图层的过程中到底是哪个图层出现问题。
典型问题:在我在某个客户的一个现场问题,也是打开MXD的时候,针对用户的一个图块图层,加载就非常慢,这个图层大概有千万条记录,但是没有做任何符号的渲染,从这个情况可以看出肯定是这个图层的索引问题,或者没有使用空间索引,或者空间索引无效导致。
解决方法:重建空间索引,分析数据。
那么如果你的MXD有问题,就打不开怎么办?
ArcGIS提供了一个比较好的工具可以进行检查。MXD Doctor 是独立的应用程序,位于C:\Program Files (x86)\ArcGIS\Desktop10.0\Tools。该工具可用于分析已损坏的 .mxd 文件。根据分析结果,可将已损坏的 .mxd 文件中所包含的实体复制到新的或现有 .mxd 文件中。
MXD Doctor 主要用于从已损坏的 .mxd 文件中提取有效实体。但是,此工具也可以通过将一个 .mxd 文件中的内容复制到另一个 .mxd 文件的方式,对有效的 .mxd 文件中的实体进行检索。此工具还可用于从已损坏的 ArcScene (.sxd) 或 ArcGlobe (.3dd) 文档中提取 VBA 项目。只有将现有文档作为目标文档时,此功能才有效。启动 MXD Doctor 工具之前,需要先使用 ArcScene 或 ArcGlobe 来创建一个空白目标文档。要在 MXD Doctor 对话框中指定源文档和目标文档的文件名,可浏览至正确的文件夹并输入文档的文件名(因为浏览器支持 .mxd 和 .mxt 文件)。
相关参考:http://help.arcgis.com/zh-cn/arcgisdesktop/10.0/help/index.html#/na/000300000019000000/
文档碎片整理程序工具(DocDefragmenter)
ArcGIS 文档碎片整理程序工具位于C:\Program Files (x86)\ArcGIS\Desktop10.0\Tools,可对 .mxd 文件内存储的数据进行碎片整理,以尽可能减小文件大小。如果 .mxd 文件过大,此工具将十分有用。此工具也可以对 .sxd、.3dd 和 .mxt 文件进行碎片整理。
您可以对单个文档文件、特定文件夹中的所有 ArcGIS 文档或文件树中某点下的文件夹内的所有文档进行碎片整理。对于经过碎片整理的文档,有不同的放置选项可供选择。默认情况下,会在原始文件所在的文件夹中创建一个新文档文件,而新文件的名称与原始文件相同,只是在后加上了 _Defrag 后缀。例如,如果对 JoshuaTreeNP.mxd 进行碎片整理,则新文件名为 JoshuaTreeNP_Defrag.mxd。
相关参考:http://help.arcgis.com/zh-cn/arcgisdesktop/10.0/help/index.html#/na/000300000017000000/
ArcMAP MXD Redirect Data Sources
该工具只支持9.2/9.3,主要对用户的数据源破坏问题进行修复和替换。
相关参考:http://arcscripts.esri.com/details.asp?dbid=14456
mxdpefstat
MXDPERFSTAT (ArcGIS 10 和 93)可以帮助诊断典型的 MXD 文档的性能问题,例如
- Inefficient scale dependency
- Slow symbology
- Large features
- Projection on the fly
- Potential database tuning
下载地址:http://arcscripts.esri.com/details.asp?dbid=16931
该工具是一个命令行工具,执行完毕之后,可以得到分析结果,可以看到每个图层的刷新时间,及图层显示时各阶段的时间,如果有问题,会在Recommendations里面给出建议,如下所示:
- C:\Users\Administrator\Downloads\AS16931\mxdpefstat>mxdperfstat10prerelease -mxd c:\1.mxd -scale 250000 -width 1920 -heght 1028
- 2012-3-14 9:54:40 Checking License
- License: esriLicenseProductCodeArcInfo
- 2012-3-14 9:54:44 TestParams.SetParams check argsValid
- 2012-3-14 9:54:44 TestParams.SetParams ValidateMxd Start
- 2012-3-14 9:54:44 TestParams.SetParams ValidateMxd Finish
- 2012-3-14 9:54:44 new MainForm()
- 2012-3-14 9:54:44 InitializeComponent()
- 2012-3-14 9:54:45 InitializeComponent() Completed
- 2012-3-14 9:54:45 testParams.MxdDocumentPath
- 2012-3-14 9:54:45 mainForm.TestParams = testParams;
- 2012-3-14 9:54:45 Application.Run(mainForm)
- 2012-3-14 9:54:50(IMapControl3)axMapControl1.Object
- 2012-3-14 9:54:50axMapControl1.LoadMxFile(m_mapDocumentName)
- 2012-3-14 9:55:02 MainForm: RunTest(ref m_activeView)
- Starting test
- 2012-3-14 9:55:03MainForm: RunTest() Started
- GetVisibleLayers Scale=256972.111553785
- Name=SDE.县级居民地point MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.县级居民地point
- Name=SDE.地市级以上居民地4m MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.地市级以上居民地4m
- Name=SDE.首都和省级行政中心4m MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.首都和省级行政中心4m
- Name=SDE.地级行政界线polyline MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.地级行政界线polyline
- Name=SDE.五级河流polyline MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.五级河流polyline
- Name=SDE.主要铁路4m MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.主要铁路4m
- Name=SDE.主要公路4m MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.主要公路4m
- Name=SDE.国界与省界4l MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.国界与省界4l
- Name=SDE.三级以上河流4l MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.三级以上河流4l
- Name=SDE.国界4l MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.国界4l
- Name=SDE.四级河流polyline MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.四级河流polyline
- Name=SDE.一级河流4l MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.一级河流4l
- Name=SDE.县级行政界线line MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.县级行政界线line
- Name=SDE.国界与省界4p MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.国界与省界4p
- Name=SDE.三级以上河流4p MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.三级以上河流4p
- Name=SDE.国界4p MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.国界4p
- Name=SDE.一级河流4p MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.一级河流4p
- Name=SDE.县级行政界线poly MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
- ADDED Layer=SDE.县级行政界线poly
- 2012-3-14 9:55:04 Testing scale=250000
- layer= 1 SDE.县级居民地point
- 2012-3-14 9:55:05Cursor features: layer=SDE.县级居民地point features=4
- layer=SDE.县级居民地point Vertices=0 Features=0
- LayerVertices=0
- layer= 2 SDE.地市级以上居民地4m
- 2012-3-14 9:55:06Cursor features: layer=SDE.地市级以上居民地4m features=0
- layer=SDE.地市级以上居民地4m Vertices=0 Features=0
- LayerVertices=0
- layer= 3 SDE.首都和省级行政中心4m
- 2012-3-14 9:55:06Cursor features: layer=SDE.首都和省级行政中心4m features=0
- layer=SDE.首都和省级行政中心4m Vertices=0 Features=0
- LayerVertices=0
- layer= 4 SDE.地级行政界线polyline
- 2012-3-14 9:55:07Cursor features: layer=SDE.地级行政界线polyline features=0
- layer=SDE.地级行政界线polyline Vertices=0 Features=0
- LayerVertices=0
- layer= 5 SDE.五级河流polyline
- 2012-3-14 9:55:08Cursor features: layer=SDE.五级河流polyline features=1
- layer=SDE.五级河流polyline Vertices=109 Features=1
- LayerVertices=109
- layer= 6 SDE.主要铁路4m
- 2012-3-14 9:55:08Cursor features: layer=SDE.主要铁路4m features=0
- layer=SDE.主要铁路4m Vertices=0 Features=0
- LayerVertices=0
- layer= 7 SDE.主要公路4m
- 2012-3-14 9:55:09Cursor features: layer=SDE.主要公路4m features=0
- layer=SDE.主要公路4m Vertices=0 Features=0
- LayerVertices=0
- layer= 8 SDE.国界与省界4l
- 2012-3-14 9:55:10Cursor features: layer=SDE.国界与省界4l features=2
- layer=SDE.国界与省界4l Vertices=374 Features=2
- LayerVertices=374
- layer= 9 SDE.三级以上河流4l
- 2012-3-14 9:55:11Cursor features: layer=SDE.三级以上河流4l features=3
- layer=SDE.三级以上河流4l Vertices=67 Features=3
- LayerVertices=67
- layer= 10 SDE.国界4l
- 2012-3-14 9:55:11Cursor features: layer=SDE.国界4l features=0
- layer=SDE.国界4l Vertices=0 Features=0
- LayerVertices=0
- layer= 11 SDE.四级河流polyline
- 2012-3-14 9:55:12Cursor features: layer=SDE.四级河流polyline features=1
- layer=SDE.四级河流polyline Vertices=53 Features=1
- LayerVertices=53
- layer= 12 SDE.一级河流4l
- 2012-3-14 9:55:13Cursor features: layer=SDE.一级河流4l features=1
- layer=SDE.一级河流4l Vertices=65 Features=1
- LayerVertices=65
- layer= 13 SDE.县级行政界线line
- 2012-3-14 9:55:14Cursor features: layer=SDE.县级行政界线line features=15
- layer=SDE.县级行政界线line Vertices=724 Features=15
- LayerVertices=724
- layer= 14 SDE.国界与省界4p
- 2012-3-14 9:55:14Cursor features: layer=SDE.国界与省界4p features=2
- layer=SDE.国界与省界4p Vertices=7046 Features=2
- LayerVertices=7046
- layer= 15 SDE.三级以上河流4p
- 2012-3-14 9:55:15Cursor features: layer=SDE.三级以上河流4p features=0
- layer=SDE.三级以上河流4p Vertices=0 Features=0
- LayerVertices=0
- layer= 16 SDE.国界4p
- 2012-3-14 9:55:16Cursor features: layer=SDE.国界4p features=1
- layer=SDE.国界4p Vertices=46220 Features=1
- LayerVertices=46220
- layer= 17 SDE.一级河流4p
- 2012-3-14 9:55:17Cursor features: layer=SDE.一级河流4p features=0
- layer=SDE.一级河流4p Vertices=0 Features=0
- LayerVertices=0
- layer= 18 SDE.县级行政界线poly
- 2012-3-14 9:55:18Cursor features: layer=SDE.县级行政界线poly features=8
- layer=SDE.县级行政界线poly Vertices=2848 Features=8
- LayerVertices=2848
- 2012-3-14 9:55:19 RunTest:LoadXML
- 2012-3-14 9:55:19 RunTest: ESRI.ArcGIS.ADF.COMSupport.AOUninitialize.Shutdown()
- 2012-3-14 9:55:19 RunTest: ESRI.ArcGIS.ADF.COMSupport.AOUninitialize.Shutdown() Completed
- 2012-3-14 9:55:19 RunTest:Application.Exit()
- 2012-3-14 9:55:19 After RunTest:Application.Exit()
- 2012-3-14 9:55:19 Dspose: ESRI.ArcGIS.ADF.COMSupport.AOUninitialize.Shutdown()
- 2012-3-14 9:55:19 Dspose: ESRI.ArcGIS.ADF.COMSupport.AOUninitialize.Shutdown() Completed
我们在该目录下得到一个XML文件
MxdPerfStat
2012-3-14 9:55:19
c:\1.mxd
layerCount= 18
Unknown
esriDecimalDegrees
X= 104.25 Y= 28.48 width= 1920 height= 1028
Scale | Refresh Time(sec) | VisibleLayers |
---|---|---|
256,972 | .43 | 18 |
Item | At Scale | Layer Name | Refresh Time (sec) | Recommendations | Features | Vertices | Labeling | Geography Phase (sec) | Graphics Phase (sec) | Cursor Phase (sec) | DBMS CPU | DBMS LIO | DBMS PIO | Source | LayerType | Layer Spatial Reference | LayerQueryDef |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 256,972 | SDE.县级居民地point | .02 | avoid projecting on the fly; | 4 | False | .01 | .00 | .00 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPoint | GCS_WGS_1984 | ||||
2 | 256,972 | SDE.地市级以上居民地4m | .03 | avoid projecting on the fly; | False | .01 | .00 | .00 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPoint | GCS_WGS_1984 | |||||
3 | 256,972 | SDE.首都和省级行政中心4m | .02 | avoid projecting on the fly; | False | .01 | .00 | .00 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPoint | GCS_WGS_1984 | |||||
4 | 256,972 | SDE.地级行政界线polyline | .02 | avoid projecting on the fly; | False | .01 | .00 | .00 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPolyline | GCS_WGS_1984 | |||||
5 | 256,972 | SDE.五级河流polyline | .02 | avoid projecting on the fly; | 1 | 109 | False | .01 | .00 | .00 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPolyline | GCS_WGS_1984 | |||
6 | 256,972 | SDE.主要铁路4m | .02 | avoid projecting on the fly; | False | .01 | .00 | .00 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPolyline | GCS_WGS_1984 | |||||
7 | 256,972 | SDE.主要公路4m | .02 | avoid projecting on the fly; | False | .01 | .00 | .00 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPolyline | GCS_WGS_1984 | |||||
8 | 256,972 | SDE.国界与省界4l | .02 | avoid projecting on the fly; | 2 | 374 | False | .01 | .00 | .00 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPolyline | GCS_WGS_1984 | |||
9 | 256,972 | SDE.三级以上河流4l | .02 | avoid projecting on the fly; | 3 | 67 | False | .01 | .00 | .00 | .00 | 1 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPolyline | GCS_WGS_1984 | ||
10 | 256,972 | SDE.国界4l | .02 | avoid projecting on the fly; | False | .01 | .00 | .00 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPolyline | GCS_WGS_1984 | |||||
11 | 256,972 | SDE.四级河流polyline | .02 | avoid projecting on the fly; | 1 | 53 | False | .01 | .00 | .00 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPolyline | GCS_WGS_1984 | |||
12 | 256,972 | SDE.一级河流4l | .03 | avoid projecting on the fly; | 1 | 65 | False | .01 | .00 | .00 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPolyline | GCS_WGS_1984 | |||
13 | 256,972 | SDE.县级行政界线line | .03 | avoid projecting on the fly; | 15 | 724 | False | .02 | .00 | .00 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPolyline | GCS_WGS_1984 | |||
14 | 256,972 | SDE.国界与省界4p | .05 | avoid projecting on the fly; | 2 | 7,046 | False | .03 | .01 | .02 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPolygon | GCS_WGS_1984 | |||
15 | 256,972 | SDE.三级以上河流4p | .02 | avoid projecting on the fly; | False | .01 | .00 | .00 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPolygon | GCS_WGS_1984 | |||||
16 | 256,972 | SDE.国界4p | .26 | simplify geometry: vertices fetched=46220; avoid projecting on the fly; | 1 | 46,220 | False | .25 | .00 | .12 | .00 | 1 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPolygon | GCS_WGS_1984 | ||
17 | 256,972 | SDE.一级河流4p | .02 | avoid projecting on the fly; | False | .01 | .00 | .00 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPolygon | GCS_WGS_1984 | |||||
18 | 256,972 | SDE.县级行政界线poly | .03 | avoid projecting on the fly; | 8 | 2,848 | False | .02 | .00 | .01 | .00 | esriDBMS_Oracle,192.168.220.165,5151,sde | esriGeometryPolygon | GCS_WGS_1984 |