如何提高非常大的shapefile的渲染性能?


20

我有一个多边形shapefile,它具有100MB .dbf和500MB .shp文件组件。之所以这么大,是因为它被归类为整个地区的陆基。

每次我在ArcCatalog或ArcMap中查看文件并稍微移动视图窗口时,都需要从头开始重新绘制整个文件。我尝试了将空间索引和导入到地理数据库中的方法-两种方法都无法在渲染方面提供任何明显的性能改进。

Esri的帮助页面建议,为了提高shapefile的性能,用户可以对file进行一般化。尽管这显然可行,但我不想丢失任何信息。拆分文件并不理想,因为我要对整个区域进行大量的地理处理/查询。我想我可以避免一次查看整个区域-但例如,有时候,最好查看查询已选择文件的哪些部分。

我还有其他方法可以改善渲染性能吗?

(从理论上讲,构建shapefile“金字塔”将是理想的-我不确定为什么ArcGIS从来不支持这种方法-至少我知道...)


2
拥有如此大的shapefile只是在自找麻烦。以我的经验,大型shapefile往往很容易损坏。在文件地理数据库中获取它,以避免损坏。更好的绘图性能将是额外的好处。
Devdatta Tengshe 2012年

如前所述,我发现将大型shapefile导入gdb并没有带来任何改善-从纯粹的渲染角度来看。您是正确的,尽管从一般角度来看,在gdb中没有大的shp文件几乎没有意义(出于各种原因)。
youzer 2012年

2
您是否考虑过使用栅格代替shapefile?
2012年

我对一件事感到困惑,如果文件大小为2gb,计算机内存也为2gb,那么arcgis将如何处理此文件数据,因为它将占用全部内存
user2174920

如果您有数百万个小多边形,那么应该使用栅格(这是臭名昭著的话)(除非您正在制作土壤层...)
如果您不知道

Answers:


22

我的想法是:

  1. 将shapefile导出到文件地理数据库要素类-我认为它的绘制性能会更好,但不确定多少
  2. 如果您使用的是ArcGIS Desktop 10.0或更高版本,请将其移至“ 底图图层”中 -这将显着提高绘图性能
  3. 如果您喜欢矢量数据的金字塔声,请确保为该ArcGIS Idea投票。

3
除非您无法在底图图层IIRC上进行分析或选择。
blah238

4
可以通过使TOC中的第二层指向同一源而不是底图层来避免这种情况,通常将其关闭,但可以在需要分析或选择时将其显示出来。
PolyGeo

PolyGeo-感谢您的回答。我尝试了baselayer,实际上,主要的性能改进是单击“缩放到图层”时,文件不会从头开始渲染。您建议给blah238注释给出的解决方法也许可以在某些项目中使用,但是我发现另一个限制基本层使用的问题是您无法使用任何符号系统形象化dbf。有了这个限制,我最好将文件通用化(而不是基础层)以供参考,然后在需要时取消隐藏“真实”层。并不是一个很好的解决方案。.我将按照您的建议投票“金字塔”想法!
youzer 2012年

6

有许多提高ArcMap性能的技巧可能会有所帮助,但这是我使用的三个建议。

  1. 我要确保数据框坐标系与我的shapefile以及我在TOC中拥有的任何其他图层匹配;但是要显示的图层越少越好。
  2. 我只会根据简单的线条和填充使用我的符号系统,而不会增加透明度或其他复杂性。
  3. 如果既需要概览又需要近距离平移功能,请考虑使用放大镜或查看器。

一般来说很好的建议。我确实在最初的测试中实现了所有这些功能-似乎需要更多/不同的技巧来处理非常大的要素类/ shapefile。
youzer 2012年

4

您可以通过设置图层显示参数来改善渲染效果,以使图层不会大规模显示(例如> 1:10,000)。您可以在图层属性中找到此选项:“图层属性”>“常规”选项卡>“缩小到...时不显示图层...”

此外,存储位置也很重要-例如,如果将其存储在带宽较差的旧服务器上,则可以保证性能不佳。我通常在服务器上处理1GB以上的矢量数据,这使我怀疑您的系统规格是否需要更新(作为参考,我正在运行12GB RAM,第二代i7,平均显卡)。

在此处输入图片说明


3

您需要渲染地图进行查询吗?如果您运行python脚本并访问数据而不绘制地图怎么办?我不确定您的确切流程,需求等,但是不确定。


3

作为对Aaron答案的补充,您还可以使用定义查询来限制为可视化返回的结果数量(并且它包括分析-我认为它的功能很像选择)。如果在任何给定时刻都不需要查看所有功能,并且您不需大量切换区域,则定义查询可能是一个可行的解决方案,尽管并非您所提出问题的确切答案。


3

我听到你的无奈。我通常会像这样处理大型shapefile,通常不会出现显示问题。我同意上面的所有评论,尤其是确保所有内容都在同一投影中,包括数据框。我假设您已在本地复制了文件,并且不尝试通过网络访问它?如此大小的shapefile会引起显示问题的一件事是,例如在流网络中是否存在大量顶点。我发现的唯一解决方案是创建一个python脚本来动态进行图层定义,因此我一次只能绘制几个。另一件事是更新计算机的图形内存和图形卡。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.