寻求高度可定制的GIS平台?[关闭]


9

我受过使用ArcGIS(台式机和工作站)的GIS的教育,并在MapInfo和uDig上进行了(非常)简短的研究。在那段时间里,我对程序感到满意,因为我使用的是相对较小的数据库,并且没有执行很多重复任务,并且ArcGIS有很多很酷的工具来分析科学数据。

自毕业以来,两年来,我一直在一家规模完全不同的公司工作。我处理大型数据库,执行相对“简单”的任务,但是它们又由重复性任务组成(我每周对整个数据库执行一系列简单任务)。在这段时间里,我经常使用AutoCAD(因为很多数据都是使用AutoCAD绘制的),并且对此也越来越欣赏–最大的好处是,使用LISP编程语言和系统变量可以控制整个系统。许多设置–是否涉及自定义工具的默认值,消除程序中对话框的使用或脚本自动打开和操纵图形的选项。

有没有这样的GIS平台,无论是免费的还是免费的,都具有如此高的定制水平,还是我注定要挫败手动的工作?

我更喜欢平台和脚本选项具有良好UI的平台,但这不是必须的。


6
在ArcGIS中,有些任务是可以脚本化和自动化的,而另一些则肯定不是,并且介于两者之间。适用于所有其他平台的Dito。如果您可以举例说明您希望避免的体力劳动,那么可能会有一些具体的有用答案。
马特·威尔基

@PolyGeo您知道这是一个已有7年历史的问题,您需要编辑?
尼克拉斯·阿凡(NicklasAvén),

@NicklasAvén我绝对不要求对其进行编辑。我只是投票赞成将其关闭,因此它不被视为一个适合作为今天要问的类似问题的模型的问题。为了解决一些我认为是这种情况的原因,我自己对此进行了一些编辑。在meta.stackexchange.com/a/194117/215590
PolyGeo

Answers:


5

我没有足够的经验来提供很多方面的答案,但是...我在ArcView 3.x中的GIS中做的第一件事是在Avenue中编写的。我真的很喜欢速度和可能性。然后,我从来没有理解过等待ArcGIS启动,寻找正确的工具,然后找到我需要的工具(需要ArcInfo)的乐趣。

我的新爱是PostGIS。它远远不只是用于存储的数据库。内置的功能使我到目前为止使用过的所有处理和分析成为可能。在大多数情况下,它比Arc产品快得多。

在开源世界中,您将无法获得所有解决方案,但是有项目和软件可以满足您的所有需求。

正如我所说,我在PostGIS中进行处理和分析。我可以将sql查询存储在文本文件中以进行重用(就像其他软件中的任何工具一样,但是更加透明)。您可以使用多种不同的语言编写函数,例如plpgsql(一种特殊的PostgreSQL语言)Python,pLR,C等。

对于桌面GIS,我主要使用QGIS。QGIS的核心不是扩展。如果那还不够的话,您可以用Python编写自己的扩展名,我想也是C ++)

如果您习惯使用uDig,那当然是一种替代方法。

如果要进行一些Web映射,可以尝试MapServer。Mapserver在今年的FOSS4G会议中为WMS服务赢得了重大基准。Esri不想今年参加。去年,他们已经注册参加,但从未参加。今年他们甚至没有注册。

GeoServer是用于提供Web地图的另一种选择。它非常易于使用,并提供许多不同的格式。它还处理WFS-T,因此您可以编辑地图数据并将所做的编辑发送回服务器。

如果您想要轻量级且非常快速的WFS-T服务器,则应该看看Tiny-OWS

好吧,清单上可能有很多功能强大的软件,它们共同构建了一个非常强大的,当然是可定制的套件。

我的意思是说它可以更具可定制性。您可以访问所有源代码。为了省下不向Esri支付年费的费用,您可以免费学习一些程序设计或雇用一名程序员。在这些项目中,您将获得大量编码,以获取ArcGIS Server许可证的费用。


12

恕我不能赞同。

我认为ArcGIS帮助 / 论坛 / 博客 / vids / etc很好地说明了使用ArcGIS系列产品可以实现的目标。

您不仅限于使用Python来处理空间数据。您仍然可以在931和10处使用VBA来访问ArcObjects库,或者可以更进一步,并使用.NET来完成各种事情,这也有据可查。

我也认为ArcGIS Desktop 的快捷键很棒,如果需要,您可以通过“自定义”对话框创建自己的快捷键。

如果您不想学习编码,还可以使用ModelBuilder,它是自动完成繁琐的任务/常见工作流的好方法,尤其是对于地理处理

我有偏见,但我确实有其他产品的经验。

我知道Python确实缺乏提供易于定制的界面以呈现给用户的功能,但是正如我提到的,使用VBA / .NET,您可以将内容丰富的表单放在一起,以提供自定义界面,以使用户能够执行他们需要做的事情。做。

  • 使用.NET,您可以针对MXD编写脚本(例如,循环遍历MXD文件夹并打开每个MXD,执行一些操作,然后移至下一个MXD
  • 使用ArcObjects也可以操纵空间数据中的默认值。

我的编程技巧很好,但是我绝不能与受过良好教育的程序员相提并论(但是我每天都在进步)。适用于Python / VBA。不幸的是,由于VBA快要花光了(感谢Microsoft),我只是说,根据我的经验,这很遗憾,因为一方面简单,另一方面却功能强大。但是,按照ESRI发布更新的速度(承诺10.1将不支持VBA),我看不出有任何理由花时间学习使用VBA进行开发。
jonatr

至于VB.net/ArcObjects。我忘了提到它,因为我觉得(从我很少的C#经验中),它并不是指普通的GIS分析师(具有一定的编程经验并且可以管理基本的VBA / Python),而是有经验的人,致力于专业的程序员。在我看来,通过使VB.net成为首选语言,ESRI放弃了过去用于自定义个人内容的小公司和分析师的全部份额。
jonatr

我对VB.net的基本问题是,我不能不幸地花时间从头开始学习它(这是一年的课程),或者我找不到关于如何使用ArcGIS的任何在线参考资料\书籍和VB.net。据我所知,除了那里的一些代码外,ESRI还没有关于此事的任何书籍(诸如了解arcobjects之类的东西,但适用于c#)。如果您了解得更多,请分享。
jonatr

2
对于gis.stackexchange.com,这是一个很好的单独问题:“ 1.每次打开符号系统并转到“填充颜色”窗口以调整我需要的颜色时,它将在CMYK中打开,并且需要将其更改为RGB。可能存在一种非编程方式来解决该问题。
杰·康明斯

1
回复:您上述的#2问题。这个问题对我来说似乎是python可以解决的,但是我对arcgis / python的工作不多,所以也许有人会发表评论。我建议将其分解为gis.stackexchange.com的另一个问题(这将使将来沮丧的GIS分析师更容易,他们需要循环,缩放,导出以找到答案)。
杰·康明斯

4

“ ...填充颜色窗口以调整我需要的颜色在CMYK中打开,我需要将其更改为RGB”

  1. 有趣的是,我上周学会了如何做。

    • 打开ArcMap->添加图层->转到颜色调色板
    • 将CYMK更改为RGB
    • 将文档保存到您的文档和设置下的Normal.mxt(在ESRI文件夹下)
    • 关闭并重新打开ArcMap->从现在开始将始终默认为RGB。
  2. DS Map Book可能是您的解决方案?或者,如果您使用的是v10版的Data Driven Pages?就像我说的那样,.NET / VBA脚本可以做到这一点,我不太喜欢Python以提供Python解决方案

“了解arcobjects”但适用于C#

我在这里同意你的看法。我知道ESRI知道这一点,但不确定它们是否正在准备中。如果您在VBA中具有背景知识,则此链接可能对初学者有所帮助。我仍然认为GTK AO仍然是有效的阅读材料,并且所学到的课程仍将适用于.NET(您可以在一周内(每天1-2小时)阅读该书)。

我曾经是VBA的忠实粉丝...


谢谢。我今天早上从我的GTKAO副本上“擦掉了灰尘”,并认为是时候恢复它了,因为自从我上次阅读它以来,我已经有所进步。也许之后,我将有更多的基础来研究和解决VB.Net。
jonatr

我的问题的一部分是说服公司的计算机部门使用Visual Studio(GIS并不那么受欢迎-他们不认为我们是开发人员,所以我必须努力争取基本知识)。DS MapBook是与计算机抗争的另一个原因,这就是为什么到目前为止我一直专注于Python和VBA的原因-它们是内置的,我不需要为它们而战。无论如何,感谢您提供有关CMYK / RGB问题的技巧,我将尝试一下。
jonatr

@jonatr-Visual Studio有一个免费版本-我认为它称为“ Express”。它可能会满足您的所有需求。专业版大多只是为专业开发人员提供了更多工具。

我同意,Visual Studio Express通常足以满足您的需求。它无疑是一个开始学习的好地方,并且id还推荐此链接:msdn.microsoft.com/en-au/beginner/default.aspx
Simon 2010年

3

在ArcGIS平台上,如果您不注定要从事手工工作,那么您注定要进行一些编程工作(对我来说还不错,因为我喜欢这种事情)!

我不知道9.3.x中不借助自定义工具来覆盖地理数据库中默认值的方法。这就是我要做的,特别是如果它是一组重复的编辑操作。

在ArcGIS 10中,用户可以制作“创建要素”模板并为每个模板初始设置默认值,这些模板是要素图层的符号,但是您可以根据需要复制/删除/修改创建要素模板。我还没有接触过ArcGIS 10,但这是我们的GIS编辑器期待的功能之一。

我从来不需要删除快捷方式,因此不确定是否可以在任何版本的ArcGIS中执行此操作。您绝对可以添加它们(加速器)。我不确定您是否可以覆盖它们;如果可以的话,可以使用不执行任何操作的伪命令来覆盖它们。

正如Simon所提到的,您可以使用ArcObjects / .NET并在多个MXD上进行操作。尽管我确实发现当MXD包含断开的数据连接或任何各个服务层时,ArcObjects都非常挑剔。在ArcGIS 10中,Python中将具有arcpy.mapping,可帮助针对Python中的MXD / LYR进行脚本编写。它仍然有一些小问题,但是根据您MXD中的内容,它可能对您有用。


你好 当我写了很长的回复Simon时,我不想复制粘贴(上面),但是如果您要发表评论(如果您有任何评论),我将不胜感激。谢谢回复。
jonatr

3

虽然我非常喜欢ArcGIS,但我必须承认,在台式机中非常缺少在工作站ArcInfo中提供的创建监视文件的功能。许多人都熟悉Excel记录宏的功能。似乎ESRI可以提供类似的功能-即使在VBA退出10.0之后也是如此。例如,Neooffice 能够记录python宏

ArcGIS Engine是高度可定制的。它使您可以创建专注于小型工具的工具,这些工具可以做一件事情并且做得很好。它包括Visual Studio的模板项目,包括免费的Express Edition(?),可用于构建小型轻量级地图查看器应用程序,而无需任何编码。尽管如此,要获得ArcGIS Engine的全部好处,您仍需要花费时间来学习.NET编程语言。


1
它不像监视文件那样无缝或完整,但是“ 结果”选项卡包含地理处理的历史记录,可以将其拖放到“模型构建器”中或导出到python代码段中。我将其用作一种改进的数据集元数据历史记录。
马特·威尔基

还有一个gp工具作为xml文件的历史记录,位于%AppData%\ Roaming \ ESRI \ Desktop10.0 \ ArcToolbox \ History,该xml文件存在一些问题,将在10.1解决。但这对您来说可能是一个有趣的选择。
gotchula

1

这是使工具集驱动数据库的现实,而不是相反。听起来好像您处在需要一个全面的数据库结构的位置,可以使用GIS部分或不使用GIS部分来导出报告,创建更新,发布地图等。从工具中释放数据将使您能够使用自己选择的适当工具。这就是为什么我们有开放标准。从那里,您可以使用最能满足您预期目的的应用程序。今天早上我刚刚进行了一次对话,如果您碰巧在Columns中表示数据,则它并不能成为Excel Spreadsheet。

另一个响应者讨论了Python的局限性,事实并非如此。由于拥有比其他大多数语言都要多的丰富的库,因此您可以用python做更多的事情,而且接口也不是那么难。限制是ESRI在ArcGIS中对Python的实现。不要混淆两者。


1

您可能想签出MapWindow作为免费的替代方案。...读取Shapefiles等,但是您需要知道如何在C#中编程。但是,然后您完全可以控制一切...

http://www.mapwindow.org/


问题在于掌握C#的知识,这不是一件容易的事,而且非常耗时。但是,谢谢,我会牢记这一点。
jonatr
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.