建议
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 Doctor
那么如果你的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里面给出建议,如下所示:
[html]view plaincopyprint?
1. C:\\Users\\Administrator\\Downloads\\AS16931\\mxdpefstat>mxdperfstat10prere
lease -mxd c:\\1.mxd -scale 250000 -width 1920 -heght 1028 2. 2012-3-14 9:54:40 Checking License 3. License: esriLicenseProductCodeArcInfo
4. 2012-3-14 9:54:44 TestParams.SetParams check argsValid 5. 2012-3-14 9:54:44 TestParams.SetParams ValidateMxd Start 6. 2012-3-14 9:54:44 TestParams.SetParams ValidateMxd Finish 7. 2012-3-14 9:54:44 new MainForm() 8. 2012-3-14 9:54:44 InitializeComponent()
9. 2012-3-14 9:54:45 InitializeComponent() Completed 10. 2012-3-14 9:54:45 testParams.MxdDocumentPath 11. 2012-3-14 9:54:45 mainForm.TestParams = testParams; 12. 2012-3-14 9:54:45 Application.Run(mainForm)
13. 2012-3-14 9:54:50(IMapControl3)axMapControl1.Object
14. 2012-3-14 9:54:50axMapControl1.LoadMxFile(m_mapDocumentName) 15. 2012-3-14 9:55:02 MainForm: RunTest(ref m_activeView) 16. Starting test
17. 2012-3-14 9:55:03MainForm: RunTest() Started 18. GetVisibleLayers Scale=256972.111553785 19. Name=SDE.县级居民地
point MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 20. ADDED Layer=SDE.县级居民地point 21. Name=SDE.地市级以上居民地
4m MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 22. ADDED Layer=SDE.地市级以上居民地4m 23. Name=SDE.首都和省级行政中心
4m MinimumScale=0, MaximumScale=0, Valid=True, Visible=True
24. ADDED Layer=SDE.首都和省级行政中心4m 25. Name=SDE.地级行政界线
polyline MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 26. ADDED Layer=SDE.地级行政界线polyline 27. Name=SDE.五级河流
polyline MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 28. ADDED Layer=SDE.五级河流polyline 29. Name=SDE.主要铁路
4m MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 30. ADDED Layer=SDE.主要铁路4m 31. Name=SDE.主要公路
4m MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 32. ADDED Layer=SDE.主要公路4m 33. Name=SDE.国界与省界
4l MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 34. ADDED Layer=SDE.国界与省界4l 35. Name=SDE.三级以上河流
4l MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 36. ADDED Layer=SDE.三级以上河流4l 37. Name=SDE.国界
4l MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 38. ADDED Layer=SDE.国界4l 39. Name=SDE.四级河流
polyline MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 40. ADDED Layer=SDE.四级河流polyline 41. Name=SDE.一级河流
4l MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 42. ADDED Layer=SDE.一级河流4l 43. Name=SDE.县级行政界线
line MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 44. ADDED Layer=SDE.县级行政界线line 45. Name=SDE.国界与省界
4p MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 46. ADDED Layer=SDE.国界与省界4p
47. Name=SDE.三级以上河流
4p MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 48. ADDED Layer=SDE.三级以上河流4p 49. Name=SDE.国界
4p MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 50. ADDED Layer=SDE.国界4p 51. Name=SDE.一级河流
4p MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 52. ADDED Layer=SDE.一级河流4p 53. Name=SDE.县级行政界线
poly MinimumScale=0, MaximumScale=0, Valid=True, Visible=True 54. ADDED Layer=SDE.县级行政界线poly 55. 2012-3-14 9:55:04 Testing scale=250000 56. layer= 1 SDE.县级居民地point
57. 2012-3-14 9:55:05Cursor features: layer=SDE.县级居民地
point features=4
58. layer=SDE.县级居民地point Vertices=0 Features=0 59. LayerVertices=0
60. layer= 2 SDE.地市级以上居民地4m
61. 2012-3-14 9:55:06Cursor features: layer=SDE.地市级以上居民地
4m features=0
62. layer=SDE.地市级以上居民地4m Vertices=0 Features=0 63. LayerVertices=0
64. layer= 3 SDE.首都和省级行政中心4m
65. 2012-3-14 9:55:06Cursor features: layer=SDE.首都和省级行政中心
4m features=0
66. layer=SDE.首都和省级行政中心4m Vertices=0 Features=0 67. LayerVertices=0
68. layer= 4 SDE.地级行政界线polyline
69. 2012-3-14 9:55:07Cursor features: layer=SDE.地级行政界线
polyline features=0
70. layer=SDE.地级行政界线polyline Vertices=0 Features=0 71. LayerVertices=0
72. layer= 5 SDE.五级河流polyline
73. 2012-3-14 9:55:08Cursor features: layer=SDE.五级河流
polyline features=1
74. layer=SDE.五级河流polyline Vertices=109 Features=1 75. LayerVertices=109 76. layer= 6 SDE.主要铁路4m
77. 2012-3-14 9:55:08Cursor features: layer=SDE.主要铁路4m features=0 78. layer=SDE.主要铁路4m Vertices=0 Features=0 79. LayerVertices=0
80. layer= 7 SDE.主要公路4m
81. 2012-3-14 9:55:09Cursor features: layer=SDE.主要公路4m features=0 82. layer=SDE.主要公路4m Vertices=0 Features=0 83. LayerVertices=0
84. layer= 8 SDE.国界与省界4l
85. 2012-3-14 9:55:10Cursor features: layer=SDE.国界与省界4l features=2 86. layer=SDE.国界与省界4l Vertices=374 Features=2 87. LayerVertices=374
88. layer= 9 SDE.三级以上河流4l
89. 2012-3-14 9:55:11Cursor features: layer=SDE.三级以上河流4l features=3 90. layer=SDE.三级以上河流4l Vertices=67 Features=3 91. LayerVertices=67 92. layer= 10 SDE.国界4l
93. 2012-3-14 9:55:11Cursor features: layer=SDE.国界4l features=0 94. layer=SDE.国界4l Vertices=0 Features=0 95. LayerVertices=0
96. layer= 11 SDE.四级河流polyline
97. 2012-3-14 9:55:12Cursor features: layer=SDE.四级河流
polyline features=1
98. layer=SDE.四级河流polyline Vertices=53 Features=1 99. LayerVertices=53 100. 101. 102. 103. 104.
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
105. 2012-3-14 9:55:14Cursor features: layer=SDE.县级行政界线
line features=15 106. 107. 108. 109.
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 110. 111. 112. 113.
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 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125.
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 126. 127. 128. 129.
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.AOUninitiali
ze.Shutdown() 130.
2012-3-14 9:55:19 RunTest: ESRI.ArcGIS.ADF.COMSupport.AOUninitiali
ze.Shutdown() Completed 131. 132.
2012-3-14 9:55:19 RunTest:Application.Exit() 2012-3-14 9:55:19 After RunTest:Application.Exit()
133. 2012-3-14 9:55:19 Dspose: ESRI.ArcGIS.ADF.COMSupport.AOUninitializ
e.Shutdown() 134.
2012-3-14 9:55:19 Dspose: ESRI.ArcGIS.ADF.COMSupport.AOUninitializ
e.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 Map Display Performance (sec) for each scale Scale 256,972 Refresh Time(sec) VisibleLayers .43 18 Layer Properties ReLafreItem At Scale yesh r TiRecomFeNammendaatue tions res Vertices GrGeoapgrahicLaphy s belPhaPhing se as(see c) c) (seCursor Phase (sec) DBMS CPU DDBBMMS S LIPIO O Source LayerType Layer SpatiLayeral ence QuerReferyDef m(se ec) SDE.25县1 6,级97居2 民地point avoid .0projecti2 ng on the fly; 4 False .01 .00 .0.00 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde oint _1984 SDE.地252 6,972 市级以上居民地4m SDE.首都25和3 6,省97级2 行政中心4m SDE.地25级4 6,行97政2 界线polyline 25S5 6,D97E.2 五avoid .0projecti2 ng on the fly; 1 10Fal9 se .01 .00 .0.00 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde olyline _1984 avoid .0projecti2 ng on the fly; False .01 .00 .0.00 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde olyline _1984 avoid .0projecti2 ng on the fly; False .01 .00 .0.00 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde oint _1984 avoid .0projecti3 ng on the fly; False .01 .00 .0.00 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde oint _1984 级河流polyline SD256 6,972 E.主要铁路4m SD257 6,972 E.主要公路4m SD258 6,972 E.国界与省界4l SDE.25三9 6,级97以2 上河流4l avoid .0projecti2 ng on the fly; 3 67 False .01 .00 .0.00 0 1 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde olyline _1984 avoid .0projecti2 ng on the fly; 2 37Fal4 se .01 .00 .0.00 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde olyline _1984 avoid .0projecti2 ng on the fly; False .01 .00 .0.00 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde olyline _1984 avoid .0projecti2 ng on the fly; False .01 .00 .0.00 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde olyline _1984 S25D16,E.2 界4l SDE.25四16,级2 流polyline SD25E.16,一2 河流4l SDE.2516,2 3 97县级行政界线line SD25E.16,国2 与省界4 97界avoid .0projecti5 ng on the fly; 2 7,0Fal46 se .03 .01 .0.02 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde olygon _1984 avoid .0projecti3 ng on the fly; 15 72Fal4 se .02 .00 .0.00 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde olyline _1984 2 97级avoid .0projecti3 ng on the fly; 1 65 False .01 .00 .0.00 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde olyline _1984 1 97河avoid .0projecti2 ng on the fly; 1 53 False .01 .00 .0.00 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde olyline _1984 0 97国avoid .0projecti2 ng on the fly; False .01 .00 .0.00 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde olyline _1984 4p SDE.25三16,级2 上河流4p simplify geometry: S25D16,E.2 界4p 6 97国vertices .2fetched6 =46220; avoid projecting on the fly; SD25E.16,一2 河流4p SDE.2516,2 8 97县级行政界线poly avoid .0projecti3 ng on the fly; 8 2,8Fal48 se .02 .00 .0.01 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde olygon _1984 7 97级avoid .0projecti2 ng on the fly; False .01 .00 .0.00 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde olygon _1984 46,1 220 False .1.02 0 esriDBMS_OraclesriGeoGCS_1 e,192.168.220.1metryPWGS65,5151,sde olygon _1984 5 97以avoid .0projecti2 ng on the fly; False .01 .00 .0.00 0 esriDBMS_OraclesriGeoGCS_e,192.168.220.1metryPWGS65,5151,sde olygon _1984 .25 .00 通过上面的信息,我们就可以对MXD做一个非常详细的性能评估,对我们制图,发布服务都是一个很好的参考!
二、ArcSDE空间索引的建立
http://blog.sina.com.cn/s/blog_48fe95cb0100a8p8.html
最近有个小活,有个别人建立好的SDE数据库,因为一些原因,里面所有的表没有建立空间索引,所以很多操作不能实施,我的任务呢,就是要给这些表建立空间索引。 空间索引这东西,了解不多,只知道在建立表的时候有个IGeometryDef里面可以设置,可是表都已经建立好了,能不能改还真没底,说实话,我认为是不能改的,后来实验证明确实如我所想。
空间索引的计算方法以前是知道一些的,在AO的帮助里面有个例子也提
到了,这里就不详述了。那天催的急,没办法,就在ArcCatalog里面找,在每个FeatureClass的属性对话框里面其实是可以点击Index标签的Recaculate进行更改的,可是七八个Dataset加起来有一百多个FeatureClass,一个个改下去岂不是要搞死人,
于是继续寻找。终于
ArcToolBox里面找到了两个tool,一个是计算空间索引值,一个是更改空间索引值,没有直接可以计算赋值的,怎么办呢?我想到了ModelBuilder,于是建了个Model,把这两个Tool结合进去,输入参数就是FeatureClass,可这样每次仍然是只能更改一个,不能批量,这个倒不难,外面一层遍历FeatureDataset的循环,里面再来一层遍历FeatureClass的循环就可以了,可是产生了两个问题,1)如何去调用我这个自定义的Model? 2)模型输入参数(本例是FeatureClass)怎么写呢?
首先讲第一个问题,大多数网上或者AO的帮助里面所写的例子都是用到了IGeoProcessor这个接口,可是他们的例子都是用系统自带的Toolbox,没有用到自定义的,还好有IGeoProcessor::AddToolbox这个方法,这第一个问题解决了,来看第二个问题。在ArcCatalog里面调用时,模型参数一般通过Database Connection里面建立的SDE连接来确定,例如已经建立了一个gisserver服务器的连接,那么模型参数就为\"Database Connections\\Connection to gisserver.sde\\CG01\\T0101\"(假定Dataset为CG01,FeatureClass为T0101),于是我尝试着在自己写的小工具里这样写,后来居然成功了,真是没想到啊,
不过我想运行的时
候肯定是要保证这台机器中已经设置了这个连接(就是Catalog中Database Connections设置好),不知道是否有其它方式,知道的告诉我一下。代码没什么太多可借鉴的,不过还是贴
在这里,只贴具体实现的这一部分。里面有个地方做了小处理,因为如果当前FeatureClass里面的FeatureCount只有0或者1,那么索引是建立不起来的。本例中Model的name是AddSpaIdx。
Dim pGp As IGeoProcessor Dim pParamArray As IVariantArray Dim pWks As IWorkspace
Dim pEnumDataset As IEnumDataset Dim pDt As IDataset
Dim pFCC As IFeatureClassContainer Dim pEnumFC As IEnumFeatureClass Dim pFC As IFeatureClass
Set pGp = New GeoProcessor pGp.OverwriteOutput = True
pGp.AddToolboxToolboxPath //输入自定义Toolbox路径
Set pWks = ConnectSDE //连接SDE
Set pEnumDataset = pWks.Datasets(esriDTFeatureDataset) Set pDt = pEnumDataset.Next While Not pDt Is Nothing Set pFCC = pDt
Set pEnumFC = pFCC.Classes
Set pFC = pEnumFC.Next While Not pFC Is Nothing
If pFC.FeatureCount(Nothing) < 2 Then GoTotagFC
Set pParamArray = New esriSystem.VarArray
pParamArray.Add \"Database Connections\\Connection to \" _ &pWks.ConnectionProperties.GetProperty(\"Server\") _
& \".sde\\\" &pDt.Name& \"\\\" &pFC.AliasName pGp.Execute \"AddSpaIdx\ tagFC:
Set pFC = pEnumFC.Next Wend
Set pDt = pEnumDataset.Next Wend
PS:前几天做了个类似的东西,就是一个批量裁图的,可以对SDE的几百个图层根据一个范围线批量进行裁剪,这个更简单些,连Modelbuilder都不用了,利用了自带的Clip工具。同事用FME的脚本也做了个相同功能的,我对比了一下,发现几点不同,一是FME对没有数据的表是不转换的,这样转换过去的表的相关定义就没了,不过我想这个应该可以设置吧,二是FME通常会将源表中的系统字段作为目标表中的自定义字段加以保存,这样会造成一定冗余,所以最后我还是用了我那个Clip的程序,不过有点不太好的就是效率有点慢,而且会生成碎文件,总体还算勉强吧,有人想看看Model图,超级简单,也放在下面了 (12.21补)
因篇幅问题不能全部显示,请点此查看更多更全内容