从ArcMap连接到PostGIS数据库以进行显示和查询,而无需使用ArcSDE?


37

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

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

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

Answers:


29

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

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

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

22

ArcGIS 10.1ArcGIS 10.2本身都支持PostGreSQL和PostGIS数据类型。这两个版本的帮助中均包含了如何进行吸气设置以及如何配置表以使用PostGIS几何类型的演练。


5
鉴于此QI的高度可见性,鼓励您充实此答案,因此,它不仅仅是“查看此链接”。除了链接的帮助文件,在ArcGIS Desktop中还可以编辑PostGIS数据吗?以及在多用户编辑环境中一起使用ArcGIS和QGIS?
matt wilkie 2014年

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

18

在我的博客上看一下这篇文章:http : //www.paolocorti.net/2008/06/06/spatial-database-for-postgres-and-arcgis-users-how-to-choose/

基本上,您有2个选择:

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

请注意,如果您需要地理数据库支持(域,拓扑等)或ArcCatalog支持,则此时唯一的解决方案(使用ArcSde)是唯一的方法。

据我所知(我没有直接对其进行测试),您可以在没有ArcSde网关的情况下建立到PostGis的只读直接连接。

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


4
-1,不是因为这是一个错误的答案,而是因为随着时间的流逝以及随之而来的更改使得它成为现实(不再使用Zig,现在原生的Arcgis支持Post几何),并且这个答案不再应该放在顶部。
马特·威尔基2014年

9

我有一些关于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很难定位。
安藤(Ando)

5

最简单的是Obtuse Software的zigGIS。目前,您必须为此付费,但是有消息称第3版将是开源的


根据Google Code Archive的资料ziggis

尽管不再支持zigGIS v1.2,但仍可以在此处下载。zigGIS v2.0现在是一种商业产品,包括重大的稳定性改进,性能提高以及完整的编辑功能。有关更多详细信息,请访问Obtuse Software的网站

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


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

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

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

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

我最近看到该帖子来自另一个列表来源,该帖子指出:“自从下一个版本的ArcGIS应该支持与PostGIS的直接读/写互操作性以来,zigGIS已经正式寿终正寝(从而呈现了zigGIS的局面)。” groups.google.com/group/ziggis/browse_thread/thread/…–
RyanDalton

4

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

postgis1 postgis2 postgis3

作为替代方案,还有arcgis-ogr,它允许作为ArcGIS插件连接到所有OGR矢量类型。arcgis-ogr。目前,它也是只读的。


3

首先:您只能通过OLE DB连接将ArcGIS与PostgreSQL一起使用,这意味着,您只能读取公用表和列(甚至可以读取空间列,但是ArcGIS无法做任何事情来他们,

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

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

ArcSDE是ESRI提供的中间件,可更改整个工作流程(安装,配置地理数据库等),而ZigGIS是桌面工具(我的意思是,仅在涉及ESRI桌面工具时使用)。


1
我最近看到该帖子来自另一个列表来源,该帖子指出:“自从下一个版本的ArcGIS应该支持与PostGIS的直接读/写互操作性以来,zigGIS已经正式寿终正寝(从而呈现了zigGIS的局面)。” groups.google.com/group/ziggis/browse_thread/thread/…–
RyanDalton

3

如果您具有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或ArcInfo许可级别的ArcGIS Desktop,ArcGIS Engine和ArcGIS Server工作组。

这些产品的媒体包括SQL Server Express的安装文件。创建SQL Server Express实例并运行向导以使该实例能够存储地理数据库后,客户端应用程序中的库将允许您连接到数据库服务器并与之一起使用,并在数据库服务器上创建并使用地理数据库。

借助ArcGIS Desktop(ArcEditor和ArcInfo)和ArcGIS Engine,您可以设置数据库服务器并创建ArcSDE地理数据库,该数据库可以由几个用户访问并可以一次由一个用户编辑

通过使用ArcGIS Desktop的ArcGIS Server Workgroup,您可以设置数据库服务器并创建ArcSDE地理数据库,一次最多可以有10个用户访问这些用户,所有这些用户都可以同时进行编辑。使用通过ArcGIS Server工作组许可的数据库服务器时,您也可以使用Web应用程序连接到地理数据库,而该应用程序没有连接限制。”


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

3

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

与ArcGIS的内置功能相比,使用这种方法有很多优势(请参阅FAQ),但同样,它仍处于试验阶段。

在此处下载和说明


嗨,这仍然是只读的吗?
马特(Matt)

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

3

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

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


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

3

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

转到“系统DSN”选项卡。

单击添加。

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

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

同样,添加在列表中找到的所有PostgreSQL ODBC驱动程序。

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


3

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

该下载文件具有漂亮的PDF文件来记录功能,包括查看,编辑等。


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

实际上,我仍在弄清楚安装过程..我已经使用自定义配置安装了ArcGIS 9.3,但是我在扩展中还没有看到pgMap 1.0。.希望其他人可以分享他们的经验
Mike T

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

2

之前我已经完成了此操作,但是使用ArcGIS 10.1和10.2并没有太多麻烦,但是不幸的是,它不能与9.3和Postgres 9.2一起使用(我从内存中认为)。

我使用了esri的驱动程序。登录到ESRI客户服务站点,尽管我认为自编写说明以来情况已经改变。

  1. 选择你的版本
  2. “软件下载”
  3. “ DMBS支持文件”
  4. 向下滚动,直到看到“ PostgreSQLQL客户端库(Windows)”,其大小应为2.21 MB。

  5. 点击下载

    对于PostgreSQL / PostGIS,下载的文件中应该是库的“ pg_client_windows86”客户端集,其中包含必需的32位版本的libeay32.dll,libiconv-2.dll,libintl-8.dll,libpq.dll和ssleay32.dll。将它们复制到ArcGIS bin目录。在我使用10.1的计算机上,它是:C:Program Files(x86)ArcGISDesktop10.1bin如果您使用的是32位窗口,则类似于:C:Program FilesArcGISDesktop10.1bin

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

唯一需要注意的是,返回的数据必须具有唯一的字段,ArcGIS可以将其用作主键。如果您使用的不仅仅是基本查询,并且ArcGIS无法计算要使用的字段,有时可能需要指定它。您可以通过以下方式做到这一点:

  1. 首先,通过单击“验证”按钮来验证SQL查询(ArcGIS需要生成select语句中的字段列表以填充高级选项对话框)。
  2. 一旦验证了SQL,然后单击“显示高级选项”,“完成”按钮将从“完成”更改为“下一步”>
  3. 单击下一步>,然后可以访问高级选项对话框。
  4. 在高级选项对话框中,将为您提供该表的所有字段的列表。选择一个将用作唯一标识符字段的字段-默认为选中所有字段。
  5. 如果合适,还可以设置数据的空间参考系。
  6. 单击完成,然后您的图层将被添加到您的地图。

您也可以相对轻松地针对postgres数据库运行空间查询,尽管您必须即时创建id字段。例如,这是一个进行100公里缓冲的示例。

SELECT row_number() over(order by cities.the_geom)::integer as oid,
ST_BUFFER(cities.the_geom, 100000) AS the_geom,
cities.name
FROM mygis.public.cities As cities

您不仅可以将任何查询图层另存为图层文件,还可以将其通过某些标准ArcGIS工具传递。我还没有测试太多。因此,添加列之类的东西我会看到这造成了严重破坏。我认为您可以通过其他一些操作来创建动态ID字段,从而与其他数据库(如SQLServer和Oracle)进行空间SQL调用。

我前段时间做了完整的教程:http : //www.gisuser.org.nz/resources/tips-and-tricks/look-mum-dad-no-hands


2

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


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

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

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


1

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

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


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

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

有趣!拓扑检查如何?
user17963 2013年

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

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

1

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


1

PgMap被st-linksspaceKit取代,不仅支持PostGIS,而且还支持SQL Server2008。它可以与ArcMap 9.3和ArcMap 10一起使用。它完全可以满足您的要求。在www.st-links.com上查看


0

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


0

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

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


0

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

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

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.