如何使用ArcGIS Desktop 9.3和更高版本从ArcMap连接到PostGIS数据库?

我希望能够执行启用了空间的查询并返回结果(例如,空间和非空间连接,过滤等),而不仅仅是转储表的内容。

我不想使用ArcSDE空间扩展,而是想在ArcGIS Desktop中使用PostGIS空间扩展。

#1 楼

如果您使用的是ArcGIS 10.0或更高版本,则可以使用查询层直接连接到PostGIS数据,每个版本的帮助中都提供了有关此信息的更多信息:


10.4


要使用PostGIS几何类型,数据库管理员必须
在PostgreSQL数据库集群上安装PostGIS。 PostGIS是
第三方的开源安装。安装后,数据库
管理员可以使用PostGIS模板数据库创建包含PostGIS几何类型的
数据库,或配置现有数据库以使用PostGIS几何类型。



10.0(此页面可能无法在Chrome中正确查看,因此我已使用IE进行读取)


#2 楼

ArcGIS 10.1和ArcGIS 10.2本身都支持PostGreSQL和PostGIS数据类型。这两个版本的帮助中都包括获取设置和配置表以使用PostGIS几何类型的演练。

评论


鉴于这个问题的知名度很高,我鼓励充实这个答案,所以它不仅仅是“查看此链接”。除了链接的帮助文件,在ArcGIS Desktop中还可以编辑PostGIS数据吗?以及在多用户编辑环境中一起使用ArcGIS和QGIS?

–马特·威尔基
2014年12月12日14:24在

现在,ArcGIS现在具有本机支持(10.1+),可以在以下位置查看要求:desktop.arcgis.com/en/desktop/latest/get-started/…。 10.3补丁说明显示了10.2 gisupdates.esri.com/ArcGIS/ArcGIS103pr_releasenotes.pdf中的相关错误修复。

–詹姆斯·米尔纳(James Milner)
2015年1月11日在20:37

#3 楼

请在我的博客上查看此帖子:
http://www.paolocorti.net/2008/06/06/spatial-database-for-postgres-and-arcgis-users-how-to-choose/

基本上,您有2个选择:


将PostGis与ArcSde一起使用(因此您需要一个ArcSde许可证,如果需要编辑数据则需要ArcEditor) >使用zigGIS:http://www.obtusesoft.com/(请注意,未在ArcGis 10.0上进行测试)。您只需要一个ArcView框就可以连接到它,即使是用于写入数据。

据我所知(我没有直接对其进行测试),您可以在ArcGis Desktop 10上建立到PostGis的只读直接连接,而无需ArcSde网关。

zigGIS不再处于活动状态,并且网站处于脱机状态

评论


-1,不是因为这是一个错误的答案,而是因为时间的流逝和随之而来的更改(使之不再使用Zig,现在原生的Arcgis支持Post几何),所以此答案不应再放在顶部。

–马特·威尔基
2014-12-12 14:17



#4 楼

我有一些关于9.3的文章。第一个在这里,您可以从那里找到其余的:http://geobabble.wordpress.com/2008/05/28/using-arcsde-93-with-postgresql-part-1/

我用10.0完成了一次,没有任何问题。我要说的是,当在ArcSDE中使用PostgreSQL和PostGIS时,我强烈建议坚持使用Esri支持的任何版本。

评论


我关注了Bills博客和esri文档,以成功使Postgresql和PostGIS与ArcSDE一起使用。我同意您需要使用esri支持的版本,即使有时可能很难找到它们,例如,很难找到Postgresql 8.4.1。

–安藤
2011年3月21日在22:34

#5 楼

最简单的是Obtuse Software的zigGIS。目前,您必须为此付费,但是街上有消息说第3版将是开源的。 >
zigGIS v1.2不再受支持,尽管仍可在此处下载
。 zigGIS v2.0现在是商业产品,
包括重大的稳定性改进,性能提高以及完整的
编辑功能。有关更多详细信息,请访问Obtuse Software的网站。


,指向Obtuse Software网站的链接似乎已断开。

评论


版本3将是开源的。现在唯一的问题是它无法通过ArcCatalog进行管理-这意味着您需要使用PgAdmin或SQL来管理数据库。除此之外,你还不错

–TheSteve0
2010年7月23日下午6:38

要增加SteveO的评论,请参见以下ZigGISv3路线图:abegillespie.blogspot.com/2010/06/on-to-30.html提供程序模型将是一个巨大的改进。

–杰伊·康明斯(Jay Cummins)
2010年7月23日在11:34



您还可以使用免费版本1.0吗?

–fmark
2010年7月30日在4:05

是的,可以在此处获得免费版本:code.google.com/p/ziggis但是它太糟糕了,我们不再支持它,并且您不能进行编辑(这是2.0版中引入的主要功能)。

– xanadont
2010年8月7日23:58



我最近从另一个列表来源看到这篇文章,他说:“自从下一个版本的ArcGIS应该支持与PostGIS的直接读/写互操作性以来,zigGIS已经正式寿终正寝(从而使zigGIS成为现实)。 groups.google.com/group/ziggis/browse_thread/thread / ...

– RyanKDalton
11年8月12日在15:41

#6 楼

ArcGIS 10.1 SP1可以本机连接到PostGIS 2.0.0数据库,但是该连接是只读的,并且大多数情况下用作查询层的更干净前端(实际上,它只是将任何层作为查询层加载)。数据库连接仅允许您查看目录中数据库中的所有表和层。



也可以选择使用arcgis-ogr允许作为ArcGIS插件连接到所有OGR矢量类型。 。此刻它也是只读的。

#7 楼

首先:
您将只能通过OLE DB连接将ArcGIS与PostgreSQL一起使用,这意味着,您将只能读取公用表和列(甚至可以读取空间列,但是ArcGIS无法对其执行任何操作,

要使用ArcGIS和PostgreSQL + PostGIS(意味着您需要查看空间数据),则需要ArcSDE或ZigGIS。

同时使用这两个选项您可以查询,编辑和分析存储在PostGIS中,ArcMap或其他ESRI工具中的数据。

ArcSDE是ESRI提供的中间件,它可以更改work和ZigGIS是桌面工具(我的意思是,仅在涉及ESRI桌面工具时使用)。

评论


我最近从另一个列表来源看到这篇文章,他说:“自从下一个版本的ArcGIS应该支持与PostGIS的直接读/写互操作性以来,zigGIS已经正式寿终正寝(从而使zigGIS成为现实)。 groups.google.com/group/ziggis/browse_thread/thread / ...

– RyanKDalton
2011年8月12日15:43

#8 楼

如果您具有ArcEditor或ArcInfo桌面级别,则可以使用SQL Server Express。即使一次只有一个用户可以编辑,锁定和解锁也可能更好-您可以先尝试一下。有关如何执行此操作的文档很多,而且您不必一定是dba的人-尽管我喜欢postgres。不会冒犯QGIS的人;)

此外,请确保您的Esri销售人员为您提供“ ArcGIS Server工作组”而不是企业的报价。参见下文-您可以有10个并发编辑连接。它应该更像是$ 3-5k。定价http://www.esri.com/software/arcgis/arcgisserver/pricing

有关SDE和SQL Server Express ArcSDE桌面许可证的许可和链接的详细说明,请参阅此帖子。 />
http://help.arcgis.com/zh-CN/arcgisdesktop/10.0/help/index.html#/What_are_database_servers_in_ArcGIS/003n0000004r000000/

”“您创建地理数据库并执行其他管理任务通过“目录”窗口或ArcCatalog中的“数据库服务器”节点访问数据库服务器。通过ArcGIS Desktop执行数据库服务器及其地理数据库的管理意味着您不需要额外的软件或数据库管理专业知识即可创建和使用这些类型的ArcSDE地理数据库。与数据库服务器上的地理数据库的连接始终是直接连接;它们使用客户端中的ArcSDE库文件进行连接,在这种情况下,客户端应用程序是ArcEditor上的ArcGIS Desktop或ArcInfo许可证级别,ArcGIS Engine和ArcGIS Server工作组。

这些产品的介质包括SQL Server Express的安装文件。创建SQL Server Express实例并运行向导以使该实例能够存储地理数据库后,客户端应用程序中的库将允许您连接到数据库服务器并与之一起使用,并在数据库服务器上创建并使用地理数据库。 br />
使用ArcGIS Desktop(ArcEditor和ArcInfo)和ArcGIS Engine,您可以设置数据库服务器并创建ArcSDE地理数据库,该数据库可以由几个用户访问,一次可以由一个用户编辑。使用ArcGIS Desktop的Server Workgroup,您可以设置数据库服务器并创建ArcSDE地理数据库,一次最多可以有10个用户访问这些用户,所有这些用户都可以同时进行编辑。使用通过ArcGIS Server工作组许可的数据库服务器时,还可以使用没有连接限制的Web应用程序连接到地理数据库。“

评论


我已经成功地使用了具有多个用户/编辑者的ArcSDE SQL Server Express地理数据库,但是距我们的设置已经过去了几年。 GDB是在一个用户的工作站上创建的,办公室中的其他用户连接到该实例,并且每个用户都以自己的版本进行编辑,然后在需要时将其发布到默认版本。所有这些都是从桌面安装介质安装的,没有涉及ArcGIS Server,我敢肯定,除了拥有桌面ArcEditor / ArcInfo级许可的每个用户之外,没有许可影响。

– MC5
13年5月8日在21:10

#9 楼

我编写了一个插件,使ArcGIS可以访问50多种矢量格式(包括PostGIS)。它仍处于试验阶段,但是您可以尝试一下,并告诉我它的运行方式。 ,它仍处于实验阶段。

此处下载和说明

评论


嗨,这仍然是只读的吗?

–马特
2013年5月20日9:00

以编程方式,您实际上可以通过ExecuteSQL功能进行编写。我只是没有建立一个允许通过ArcMap进行操作的接口。因此,您可以通过代码编写代码,但还不能通过GUI编写代码。

–拉吉·亚瑟(Ragi Yaser Burhum)
13年5月20日在22:32

#10 楼

我一直在监视这篇文章和更广泛的网络,以寻求解决方案,因为我想要一个类似的工具。今天,我通过RSS提要进入James Fee博客的(我们)解决方案。我相信您寻求的解决方案是ST-Links的PgMap。

我尝试了ArcGIS 9.3版本,它给人留下了深刻的印象。由于我仍然是PostGIS新手(身份列问题),因此仍在努力进行编辑。它还带有一个光滑的ESRI到PostGIS加载器,并且最重要的是它是免费的! [使用OpenGeoSuite社区版2.4.1进行测试]

评论


我听说st-link仅免费一年。之后,您需要拥有许可证。是不是真的

– OpenGISTECH
2012年6月7日在15:02

#11 楼

转到“开始”->“控制面板”->“性能和维护”->“管理工具”->“数据源”。

转到“系统DSN”选项卡。

单击“添加”。

向下滚动列表。如果安装了PostgreSQL ODBC驱动程序,则应该能够在其中看到它们。单击列表中的第一个PostgreSQL ODBC驱动程序。

在表单中输入连接详细信息。如果连接与PostgreSQL数据库在同一台机器上,则在服务器字段中输入localhost;否则,为网络上计算机的名称。您必须在pg_hba.conf文件中进行一些更改才能连接到网络上的数据库。在PostgreSQL手册的User Authentication部分中阅读有关它的内容。完成后,单击“完成”。

类似地添加在列表中找到的所有PostgreSQL ODBC驱动程序。

单击“确定”。您现在可以通过ODBC驱动程序连接到PostgreSQL数据库。仅需使用连接信息将驱动程序定向到数据库。

#12 楼

从2011年开始,尝试使用ST-Links SpatialKit。该软件是免费软件,可与ArcGIS 9.3 / 10.0 / 10.1 / 10.2配合使用。

评论


迈克(Mike),看@ ST-Links文档似乎具有巨大的潜力。您个人使用过吗?您是否可以与社区分享其速度和可用性的印象?

– RyanKDalton
2011年7月21日在23:27

实际上,我仍在弄清楚安装过程..我已经通过自定义配置安装了ArcGIS 9.3,但是我在扩展中还没有看到pgMap 1.0。

– Mike T
2011年7月21日在23:34

请原谅我自己博客的链接,但是在宣布zigGIS关闭后,我查看了PgMap。我的观察结果在这里:blog.geomusings.com/2011/08/09/take-a-look-at-pgmap鉴于ArcMap似乎无法直接在10.1上编辑空间数据库,因此PgMap看起来更具吸引力。

– Bill Dollins
11年8月19日在11:03

#13 楼

以前,我在使用ArcGIS 10.1和10.2时没有遇到太多麻烦,但是不幸的是,它不能与9.3和Postgres 9.2一起使用(我从内存中认为)。
登录到ESRI客户服务站点,尽管我认为自编写说明以来情况已经改变。 “ DMBS支持文件”
向下滚动,直到看到“ PostgreSQLQL客户端库(Windows)”,其大小应为2.21 MB。

单击下载
下载文件中的/ PostGIS应该是包含特定32位版本libeay32.dll,libiconv-2.dll,libintl-8.dll,libpq.dll和ssleay32.dll的库的“ pg_client_windows86”客户端集。将它们复制到ArcGIS bin目录中。
C:Program FilesArcGISDesktop10.1bin


完成此操作后,您应该可以连接到数据库并从数据库添加数据。要使用数据查询层,您首先需要连接到数据库。
在ArcGIS 10.1中,您需要转到文件>添加数据>添加查询层

唯一要注意的事情原因是返回的数据必须具有唯一的字段,ArcGIS可以将其用作主键。如果您使用的不仅仅是基本查询,并且ArcGIS无法计算出要使用的字段,有时可能需要指定它。您可以通过以下方法执行此操作:


首先通过单击“验证”按钮来验证SQL查询
(ArcGIS需要生成select
声明以填充高级选项对话框。)
一旦验证了SQL,然后单击“显示高级选项”
,完成按钮将从“完成”更改为“下一步”>
单击“下一步”>,然后,您可以访问高级选项对话框。
在高级选项对话框中,为您提供该表的所有
字段的列表。选择一个将用作唯一标识符字段的字段-默认是选中所有字段。
如果数据空间参考系适合于以下情况,则还可以设置数据的空间参考系:
这样做。
单击完成,然后将您的图层添加到地图中。领域飞。例如这是一个进行100公里缓冲的示例。工具。我没有测试太多。因此,添加列之类的东西我会看到这造成了严重破坏。我认为您可以与其他数据库(例如SQLServer和Oracle)进行空间SQL调用,并且需要花些时间来创建动态ID字段。 br />http://www.gisuser.org.nz/resources/tips-and-tricks/look-mum-dad-no-hands

#14 楼

在ArcGIS 10.4中有效,您可以在受支持的PostgreSQL数据库中读写PostGIS几何图形,而无需任何其他扩展。我只使用了高级许可证,但是我相信标准许可证也可以连接到非地理数据库PG服务器数据库,并将该工作空间用作矢量创建工具的目标。这比较麻烦,但是您也可以使用Basic许可客户端使用带有Python的SQL(通过arcpy.ArcSDESQLExecute)写入表。自ArcGIS 10.0起,所有licemse级别均已选择只读查询层。

评论


文斯,在ArcGIS 10.4+中设置可写的非SDE PostGIS数据库连接的过程是什么?尝试通过ArcCatalog Advanced 10.5添加数据库连接时出现“不允许与系统数据库的连接”错误。

–鲁迪·斯特里克兰(Rudy Stricklan)
17年6月8日在16:19

除了创建数据库,管理数据库以包含数据并连接到数据库之外,没有任何其他过程。如果您想尝试此操作,但失败了,您可以在此处提出一个新问题(提供所有详细信息)。如果您想以postgres用户的身份在master数据库中工作,则确实需要首先获得有关RDBMS使用的书。

–文斯
17年9月9日在1:33

谢谢文斯。是的,错误消息有点令人困惑,因为我试图连接到普通PostGIS数据库(“ gis”)中的空间表,而不是master数据库。不过,您的建议是正确的-我将记录该问题并提交一个新问题。

–鲁迪·斯特里克兰(Rudy Stricklan)
17年6月9日在17:02

#15 楼

PostgreSQL 9是否可以与ArcGIS 10一起使用?

用于编辑Postgis
ZigGIS 3.0

http://groups.google.com/group/ziggis/browse_thread/thread / 8e17f4c2ac57f428?hl = zh-CN

只读可以通过正确的ODBC Postgres驱动程序完成,并可以在ArcCatalog中进行直接连接

#16 楼

GISquirrel只需SDE成本的一小部分即可完成这项工作。它支持与MSSQL和PostGIS的arcgis连接。设置非常简单(可以从shapefile / featureclass导入到postgres),并且易于维护。对于需要多用户编辑功能的少数用户来说,它就好了。

我们对GIS“高级用户”使用GISquirrel / Arcgis,而QGIS可以为“基本用户”连接到同一个PostGIS服务器,从而节省了许可成本。

评论


您的“高级用户”可以在ArcGIS环境中进行编辑还是仍然是只读的?

–user17963
13年5月9日在20:04

是GISquirrel允许在ArcGIS中进行全面编辑。

–马特
13年5月9日在21:28

有趣!拓扑检查呢?

–user17963
13年5月9日在22:13

它的工作方式是为用户选择的要素创建一个临时地理数据库,然后将这些要素锁定给用户进行编辑,然后使用ArcGIS,您可以在地理数据库中编辑该要素,一旦保存了这些编辑,这些要素就会在PostGIS中进行更新。也可以一次编辑图层中的所有要素。

–马特
13年5月9日在22:43



谢谢Matt,我将使用GISquirrel进行测试,看看它是否适用于我们的数据!

–user17963
13年5月10日在16:32

#17 楼

GISquirrel对于MSSQLserver来说做得很好,而且我很确定它对于Postgres也能很好地工作。我在ESRI / Qgis混合环境中工作,并且还使用GIS松鼠将shapefile等导入数据库。在SQLserver中,GISsquirrel跟踪几何列,我使用此信息来更新Qgis使用的geometry_columns表。非常方便...

#18 楼

PgMap被st-links spacealKit取代,不仅支持PostGIS,而且还支持SQL Server2008。它可以与ArcMap 9.3和ArcMap 10一起使用。
它可以满足您的要求。请访问www.st-links.com
进行检查

#19 楼

我相信您在使用SDE之外还有其他选择(尽管我会指出您可以在SDE中使用PG_Geometry,因此可以通过ESRI软件或与PostGIS兼容的OS软件访问数据)。您具有ESRI数据互操作性扩展ZigGIS,并且可能会安装geoserver或mapserver的副本并通过ArcGIS中的WMS服务进行连接。与先前有关zigGIS以及需要通过pgAdmin管理查询的帖子类似,您将需要使用它来通过geoserver / mapserver创建查询。理想情况下,如果要重用相同的查询,则可以将它们另存为postgresql中的视图,并以这种方式访问​​数据。

#20 楼

ST-Links SpatialKit是一个ArcMap扩展,可​​使用No ArcSDE,No ArcInfo,No ArcGIS Server直接连接到空间数据库。

根据他们的许可,费用为188加元,但他们声明:“我们将继续为无法负担许可费用的用户颁发免费许可。免费许可有时间限制。如果您要求免费许可证,请在许可证请求电子邮件中说明原因。“

#21 楼

将PostGIS数据添加到ArcMap的一种简单方法是添加“互操作性连接”。为此,需要“数据互操作性扩展”。

在创建连接之前,在PostGIS数据库表中添加“数字索引”和“主键”是一个好主意。