好吧,我不是程序员,而是多产的GIS用户。我知道QGIS是用C ++和ArcGIS编写的。但是最近对于我的大多数任务,我总是尝试使用QGIS,不仅因为它是免费的,而且因为它的用户体验非常好。
那里的所有GIS Gurus您能告诉我这两个系统之间速度差异的一些原因吗?老实说,由于使用ArcGIS 10的速度,这让我很痛苦,并且我有一台配备8 GB RAM的PC。
好吧,我不是程序员,而是多产的GIS用户。我知道QGIS是用C ++和ArcGIS编写的。但是最近对于我的大多数任务,我总是尝试使用QGIS,不仅因为它是免费的,而且因为它的用户体验非常好。
那里的所有GIS Gurus您能告诉我这两个系统之间速度差异的一些原因吗?老实说,由于使用ArcGIS 10的速度,这让我很痛苦,并且我有一台配备8 GB RAM的PC。
Answers:
我对QGIS并不熟悉,但是我想知道它在可扩展性方面如何与ArcGIS相提并论。不幸的是,在可扩展性和性能之间似乎至少存在一些权衡。我发现获得ArcGIS可扩展性的最佳方法是查看注册表中找到的Esri的COM组件类别。
每个类别代表一个位置,用户可以在其中注册包含实现Esri接口的类的dll。有很多类别。这些类别还包含狗食 -Esri不仅使用它们来发现第三方的自定义内容,而且还具有即用型功能。尽管这提供了非常细粒度的自定义级别,但也意味着需要在运行时发现并加载所有这些细颗粒。我不确定搬迁费用是多少,但这一定是很大的。
C:\Program Files (x86)\ArcGIS\Desktop10.0\Bin\Categories.exe
在Visual Studio中创建dll时,可以在其中指定基本地址要加载的dll。由于加载了许多不同大小的dll,因此提前了解ArcObjects定制将非常困难。不过,我不知道是否可以创建一个配置文件来指示将dll加载到内存中的位置。如果是这样,一旦用户在加载了dll的情况下运行了arcmap后,他通常会使用该例程,那么他可以运行将dll基址写入配置文件的例程。这样,当arcmap启动时,可以通过加载到那些地址中来避免重定位。再说一次,也许有64位无关紧要。
Esri在10.0引入了加载项。加载项的类别要小得多,并且发现不依赖于Windows注册表。而是,将外接程序dll压缩并放置在已知文件夹中。我不确定如何将性能与通过Windows注册表发现的dll进行比较。我认为主要目标是允许非管理员安装。
我假设问题是指台式机产品。新的ArcGIS Runtime产品重量更轻。我听说它被描述为MapObjects的替代品。看看它如何演变将是很有趣的。如果Esri确实为WPF Runtime引入了可扩展性,我希望他们在填充程序集列表时,不要使用Visual Studio使用的相同发现机制。第一次单击“添加引用...”变得非常缓慢。
请原谅我重新使用该线程,但是我可以举一个具体的示例,说明ArcMap和QGIS的用户体验如何不同。
今天,我需要在一个小国家/地区中建立一个间距为250米的点网格,将点网格裁剪到一个国家边界多边形,然后将几个栅格的值关联到该点网格。
在ArcMap中,从将数据下载到完成的数据集大约花了10分钟。在QGIS(弗罗茨瓦夫)中,仅用多边形剪切网格后,程序崩溃两次,然后运行了一个小时,然后才完成第三次尝试。这是一个带有4个双核和6Gb RAM的盒子。
我喜欢QGIS,这使我不喜欢使用ArcMap,但是我发现QGIS不能满足我的许多常见用例。
现在,如果任何人有任何性能调整建议可以解决此性能差距,我都会耳熟。
克里斯
我认为Arc不是用.NET编写的。Arcobjects用C ++编写。由于使用了许多高级GUI,帮助工具,附加组件等,Arc的运行速度可能会变慢。QGIS是一款出色的软件,但缺少一些有用的功能,这些功能可能对初学者很有帮助。我也不认为ESRI(Arcobjects)中的基本Lavel工具很慢。通常,这取决于用户的技能,如果用户知道如何使用Arc,那根本就不会太慢。话虽如此,我还要提到,每种工具的性能都应逐案考虑。另一件事是,Arc首先出现在GIS领域。首先(相对于QGIS)总是存在错误,而下一代则更好,在这种情况下则更快,但这只是我个人的看法。
Ctrl+C
在ArcObjects执行某些操作时按,您将从Fortran运行时库中收到一条消息。
这与ArcGIS的性能有关: ArcMap,ArcCatalog在具有足够资源的新笔记本电脑上打开的速度很慢? 这可能部分解释了一些性能问题。该主题展示了硬件,网络和许可配置如何对ArcGIS性能产生重大影响。可能的是,某些报告的速度差异可能是由于这些因素引起的,而不是由于功能固有的差异引起的。
(发布为答案链接,因为评论容易丢失。)
我使用企业级数据(例如整个土耳其的兴趣点数据),有时只是检查数据集,我需要该渲染图。
如果您想使用ArcGIS来提高性能,那么我有几点建议。
始终使用投影数据。将地理数据库或ArcSDE与postgresql一起使用对我来说非常合适。
使用文件地理数据库,如果可能的话,使用arcsde可以提高操作速度。我在QGIS和ArcMap方面的个人经历实际上是相反的。由于在地图上渲染300万个点几乎需要几分钟。另一方面,ArcMap可以在几秒钟内渲染它们。
只是我的观点。