GIS:何时以及为何在处理ArcGIS栅格和矢量数据时使用ArcObjects而非GDAL编程?

3 投票
3 回答
3608 浏览
提问于 2025-04-15 19:21

我刚开始学习使用GDAL和Python,主要是为了处理一些ArcGIS的Python地理处理脚本无法完成的操作。我的工作主要是对栅格和矢量数据进行空间建模、分析和编辑。

我有点困惑,什么时候需要使用ArcObject开发,什么时候可以用GDAL呢?ArcObjects有没有GDAL做不到的功能?反过来又是否成立?我觉得ArcObjects在开发在线工具方面更有用,而在桌面分析和建模时,选择可能更多是个人偏好。在我看来,我更喜欢GDAL,因为它支持Python,而我认为ArcObjects在这方面比较欠缺。

谢谢!

3 个回答

2

ArcObjects和地理处理提供了比GDAL更多的功能,主要是针对桌面应用的。另一个可以考虑的Python选项是QGIS,它有一个Python接口,免费且开源,还有一个活跃的开发者社区。

此外,还有很多Python库可以用于空间工作,比如Shapely。我认为如果你处理的是栅格数据,GDAL是最好的选择,但如果是矢量数据,你可能会想用Shapely这样的工具。

4

geographika的回答非常棒。我想补充一点,就是当我需要简单快速地进行格式转换时,我会使用gdal/ogr。比如说,把一种格式转换成另一种格式、添加图像金字塔、简单合并和坐标转换(无论是栅格数据还是矢量数据)。如果你只是想把一堆shapefile文件合并在一起,或者把一大堆栅格图像转换成统一的投影,gdal/ogr启动和运行都更快,因为它不需要加载整个ArcObjects COM库来调用一两个功能。(我听说ESRI的MS COM系统是地球上最大的,差距很大,包括微软的所有产品。)或者检查一下是否有有效的许可证。在我进行的一次测试中,比较ESRI的arcgisscripting和GDAL的ogr2ogr,处理时间从6分钟缩短到了10秒。

在转换和投影方面,我觉得gdal缺少的一个重要功能是能够在元数据的Lineage部分记录地理处理活动。ESRI的工具通常会自动做到这一点

不过,当你超越简单的转换,进入更深入的分析时,除了ESRI几乎没有其他选择。这是我个人的经验。在你直接使用ArcObjects之前,我建议你先花点时间了解通过arcgisscripting(在v10中是arcpy)可以完成什么,这个是用Python和.NET编写的。

* 10年后:我不再支持这个说法了。Qgis在过去十年里持续稳定地改进,并且没有减缓的迹象。相反,它的进步速度还在加快。确实,ESRI在同一时期也有显著的改进,但他们的重点在桌面和在线之间分散,更倾向于后者。我现在的建议是关注各自的社区,选择与你的工作和兴趣重叠最大的那个。关键不在于哪个平台有什么功能,而在于你可能更容易与谁合作。

5

GDAL是ArcGIS中用来处理一些栅格数据格式的工具。不过,ArcGIS并没有用GDAL的工具来进行任何地理处理。我想,ESRI(ArcGIS的开发公司)可能已经用他们自己的地理处理功能实现了GDAL的大部分,甚至全部功能。总的来说,这两者的功能有很大的重叠。

ESRI的地理处理功能可以通过Python来运行和编写脚本。这些地理处理工具是对ArcObjects的更高层次的抽象(也就是简化),并且是基于ArcObjects构建的。它们应该能满足你对“栅格和矢量数据的空间建模/分析/编辑”的需求。

http://webhelp.esri.com/arcgisdesktop/9.2/index.cfm?id=596&pid=592&topicname=Geoprocessing_framework

你觉得ESRI的地理处理工具中缺少什么功能呢?

GDAL的工具也可以用Python(和其他语言)来操作。如果下面链接中的某个工具符合你的需求,你可以使用它。

链接

撰写回答