Подключение к базе данных PostGIS из ArcMap для отображения и запроса без ArcSDE?


37

Как я могу подключиться к базе данных PostGIS из ArcMap, используя ArcGIS Desktop 9.3 и более поздние версии?

Я хотел бы иметь возможность выполнять пространственно разрешенные запросы и получать результаты обратно (например, пространственные и непространственные объединения, фильтрация и т. Д.), А не просто выгружать содержимое таблицы.

Я не хочу использовать пространственные расширения ArcSDE, я хочу использовать пространственные расширения PostGIS в ArcGIS Desktop.

Ответы:


29

Если вы используете ArcGIS 10.0 или более позднюю версию, то вы можете напрямую подключиться к данным PostGIS с помощью слоя запросов. Для получения дополнительной информации об этом см. Справку по каждой версии:

Чтобы использовать тип геометрии PostGIS, администратор базы данных должен установить PostGIS в кластере базы данных PostgreSQL. PostGIS - это сторонняя установка с открытым исходным кодом. После установки администратор базы данных может использовать базу данных шаблонов PostGIS для создания базы данных, содержащей тип геометрии PostGIS, или настроить существующую базу данных для использования типа геометрии PostGIS.

  • 10.0 (эта страница может отображаться неправильно в Chrome, поэтому я использовал IE для чтения)

22

ArcGIS 10.1 и ArcGIS 10.2 изначально поддерживают типы данных PostGreSQL и PostGIS. В справку для обеих версий включено пошаговое руководство по настройке gettting и настройке таблиц для использования типов геометрии PostGIS.


5
Учитывая высокую видимость этого QI, поощряйте конкретизировать этот ответ, так что это гораздо больше, чем просто «увидеть эту ссылку». В дополнение к связанным файлам справки, есть также Редактирование данных PostGIS в ArcGIS Desktop? и Использование ArcGIS и QGIS вместе в многопользовательской среде редактирования?
Мэтт Уилки

ArcGIS теперь имеет встроенную поддержку (10.1+), и требования можно увидеть здесь: desktop.arcgis.com/en/desktop/latest/get-started/… . В примечаниях к патчу
Джеймс Милнер,

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) - это единственный способ пойти в это время.

Насколько я слышал (я не проверял это напрямую) в ArcGis Desktop 10, вы можете установить прямое соединение только для чтения с PostGis без шлюза ArcSde.

zigGIS больше не активен, а сайт отключен


4
-1, не потому что это был плохой ответ, а потому, что с течением времени и последующими изменениями это стало возможным (прекращение zig, теперь родная поддержка ArcGIS для геометрии Post), и этот ответ больше не должен быть наверху.
Мэтт Уилки

9

У меня есть несколько постов по этому вопросу с 9.3. Первый здесь, и вы можете добраться до остальных оттуда: http://geobabble.wordpress.com/2008/05/28/using-arcsde-93-with-postgresql-part-1/

Я сделал это один раз с 10.0 и не было никаких проблем. Я скажу, что при использовании PostgreSQL и PostGIS с ArcSDE я настоятельно рекомендую придерживаться любых версий, поддерживаемых Esri.


Я следил за блогом Bills и документацией esri, чтобы Postgresql и PostGIS работали с ArcSDE. Я согласен с тем, что вам нужно использовать версию, поддерживаемую esri, хотя иногда их бывает сложно найти, например, Postgresql 8.4.1 было сложно найти.
Андо

5

Самым простым будет zigGIS от Obtuse Software . В настоящее время вы должны заплатить за это, но на улице говорят, что версия 3 будет с открытым исходным кодом .


Согласно архиву Google Code на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

Я видел, как эта публикация недавно поступила из другого списка, в котором говорится, что «zigGIS официально достиг конца срока службы, поскольку следующая версия ArcGIS должна поддерживать прямую совместимость чтения / записи с PostGIS (тем самым рендеринг спора zigGIS)». groups.google.com/group/ziggis/browse_thread/thread/…
RyanDalton

4

ArcGIS 10.1 SP1 может изначально подключаться к базам данных PostGIS 2.0.0, но соединение доступно только для чтения и в основном функционирует как более чистый интерфейс для слоев запросов (фактически, он просто загружает любые слои как слои запросов). Соединение с базой данных просто позволяет просматривать все таблицы и слои в базе данных в каталоге.

postgis1 postgis2 postgis3

В качестве альтернативы есть также arcgis-ogr , который позволяет подключаться ко всем векторным типам OGR в качестве плагина ArcGIS. ArcGIS-OGR, Это также только для чтения в данный момент.


3

Прежде всего: вы сможете использовать ArcGIS только с PostgreSQL, используя соединения OLE DB, то есть вы сможете читать только общие таблицы и столбцы (вы даже сможете читать пространственные столбцы, но ArcGIS ничего не может сделать для их,

Чтобы использовать ArcGIS и PostgreSQL + PostGIS (что означает, что вам нужно видеть пространственные данные), вам понадобится ArcSDE или ZigGIS .

С помощью обеих опций вы можете запрашивать, редактировать и анализировать данные, хранящиеся в PostGIS, в ArcMap или других инструментах ESRI.

ArcSDE - это промежуточное программное обеспечение, предоставляемое ESRI, изменяющее весь рабочий процесс (установки, настройки базы геоданных и т. Д.), А ZigGIS является настольным инструментом (я имею в виду, используется только тогда, когда задействованы настольные инструменты ESRI).


1
Я видел, как эта публикация недавно поступила из другого списка, в котором говорится, что «zigGIS официально достиг конца срока службы, поскольку следующая версия ArcGIS должна поддерживать прямую совместимость чтения / записи с PostGIS (тем самым рендеринг спора zigGIS)». groups.google.com/group/ziggis/browse_thread/thread/…
RyanDalton

3

Если у вас есть уровень рабочего стола ArcEditor или ArcInfo, у вас есть возможность использовать SQL Server Express. Даже если одновременно редактировать может только один пользователь, блокировка и разблокировка могут быть лучше - вы можете попробовать это в первую очередь. Там много документации о том, как это сделать, и вам не нужно быть DBA - хотя я люблю postgres. Не в обиду ребятам QGIS;)

Кроме того, убедитесь, что ваш продавец Esri дает вам цитату для «ArcGIS Server Workgroup», а не Enterprise. Смотрите ниже - у вас может быть 10 одновременных правок подключения. Это должно быть больше, как $ 3-5k. Цены http://www.esri.com/software/arcgis/arcgisserver/pricing

См. Также этот пост для хорошего объяснения лицензирования и ссылок о SDE и SQL Server Express ArcSDE для настольных компьютеров.

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/What_are_database_servers_in_ArcGIS/003n0000004r000000/

«Вы создаете базы геоданных и выполняете другие административные задачи для серверов баз данных через узел« Серверы баз данных »в окне« Каталог »или ArcCatalog. Выполнение администрирования сервера базы данных и его баз геоданных через ArcGIS Desktop означает, что вам не требуется никаких дополнительных знаний в области программного обеспечения или администрирования баз данных. создавать и использовать эти типы баз геоданных ArcSDE.

Соединения с базами геоданных на сервере баз данных всегда являются прямыми; они используют файлы библиотеки ArcSDE в клиенте, чтобы установить соединение. В этом случае клиентскими приложениями являются ArcGIS Desktop на уровне лицензии ArcEditor или ArcInfo, ArcGIS Engine и рабочая группа ArcGIS Server.

Носитель для этих продуктов содержит установочные файлы для SQL Server Express. После того как вы создали экземпляр SQL Server Express и запустили мастер, чтобы позволить экземпляру хранить базы геоданных, библиотеки в клиентском приложении позволяют подключаться к серверам баз данных и работать с ними, а также создавать и работать с базами геоданных на сервере баз данных.

С помощью ArcGIS Desktop (ArcEditor и ArcInfo) и ArcGIS Engine вы можете настроить сервер баз данных и создать базы геоданных ArcSDE, к которым могут обращаться несколько пользователей и которые могут редактировать по одному пользователю за раз .

С помощью ArcGIS Server Workgroup, использующей ArcGIS Desktop, вы можете настроить сервер баз данных и создать базы геоданных ArcSDE, к которым одновременно могут обращаться до 10 пользователей, каждый из которых может редактировать одновременно . При использовании серверов баз данных, лицензируемых через ArcGIS Server Workgroup, вы также можете подключаться к базам геоданных с помощью веб-приложений, для которых нет ограничений на соединение. "


2
Я успешно использовал базы геоданных ArcSDE SQL Server Express с несколькими пользователями / редакторами, но прошло уже несколько лет с тех пор, как мы его создали. GDB создается на рабочей станции одного пользователя, другие пользователи в офисе подключаются к его экземпляру, и каждый пользователь вносит изменения в своей собственной версии, которые затем при желании размещаются в версии по умолчанию. Все это было установлено с установочного носителя для настольных компьютеров, без участия ArcGIS Server, я уверен, что не было никаких последствий для лицензирования, кроме того, что у каждого пользователя была лицензия Desktop ArcEditor / ArcInfo.
MC5

3

Я написал плагин, который дает ArcGIS доступ к более чем 50 векторным форматам (включая PostGIS). Это все еще экспериментально, но вы можете попробовать и сказать мне, как это происходит.

Есть преимущества использования этого подхода по сравнению со встроенной функциональностью в ArcGIS (смотрите FAQ), но, опять же, он все еще экспериментальный.

Скачать и инструкции здесь


привет, это все еще только для чтения?
Мэтт

1
программно вы можете писать через функциональность ExecuteSQL. Я просто не построил интерфейс, позволяющий делать это через ArcMap. Таким образом, вы можете писать через код, но не через графический интерфейс.
Раги Язер Бурхум

3

Я отслеживал этот пост и более широкую сеть для решения этого, поскольку я хотел подобный инструмент. Сегодня я наткнулся на свое (наше) решение через RSS-канал в блоге Джеймса Фе . И я считаю, что решение, которое вы ищете, это PgMap от ST-Links .

Я попробовал версию ArcGIS 9.3, и она впечатляет. Все еще борется с изменениями, хотя, так как я все еще новичок PostGIS (вещь столбца идентичности). Он также поставляется с гладким ESRI для загрузчика PostGIS и, прежде всего, это бесплатно! [Протестировано с OpenGeoSuite Community Edition 2.4.1]


Я слышал, что st-link бесплатен только в течение одного года. После чего вам нужно иметь лицензию. Разве это не правда?
OPENGISTECH

3

Перейдите в Пуск -> Панель управления -> Производительность и обслуживание -> Администрирование -> Источники данных.

Перейдите на вкладку System DSN.

Нажмите Добавить.

Прокрутите вниз в списке. Там вы сможете увидеть ваши ODBC-драйверы PostgreSQL, если вы их установили. Нажмите первый драйвер ODBC PostgreSQL в списке.

Введите данные вашего подключения в форму. Если соединение находится на том же компьютере, что и база данных PostgreSQL, напишите localhost в поле сервера; в противном случае имя компьютера в сети. Вам нужно будет внести некоторые изменения в файл pg_hba.conf, чтобы подключиться к вашей базе данных в сети. Об этом читайте в руководствах по PostgreSQL в разделе «Аутентификация пользователя». После этого нажмите «Готово».

Аналогичным образом добавьте все драйверы PostgreSQL ODBC, которые вы найдете в списке.

Нажмите ОК. Теперь вы можете подключиться к базе данных PostgreSQL через драйверы ODBC. Драйверы нужно было только направить в базу данных с информацией о подключении.


3

Начиная с эры 2011 года, попробуйте ST-Links SpatialKit . Программное обеспечение является бесплатным и работает с ArcGIS 9.3 / 10.0 / 10.1 / 10.2.

В загрузке есть хороший PDF для документирования возможностей, включая просмотр, редактирование и т. Д.


Майк, глядя на документацию ST-Links, кажется, что она может иметь огромный потенциал. Вы использовали это лично? Есть ли у вас какие-либо впечатления о его скорости и удобстве использования, которыми вы можете поделиться с сообществом?
RyanDalton

На самом деле, я все еще выясняю процесс установки ... У меня установлен ArcGIS 9.3 с пользовательской конфигурацией, но я пока не вижу pgMap 1.0 в Расширениях ... надеюсь, кто-то еще может поделиться своим опытом
Mike T

1
Пожалуйста, прости ссылку на мой собственный блог, но я посмотрел на PgMap после объявления о закрытии zigGIS. Мои наблюдения здесь: blog.geomusings.com/2011/08/09/taking-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 МБ.

  5. Нажмите Загрузки

    Для PostgreSQL / PostGIS в загружаемом файле должен быть клиентский набор библиотек «pg_client_windows86», содержащий необходимую 32-битную версию libeay32.dll, libiconv-2.dll, libintl-8.dll, libpq.dll и ssleay32.dll. Скопируйте их в каталог bin ArcGIS. На моем компьютере с использованием 10.1 это было: C: Program Files (x86) ArcGISDesktop10.1bin Если вы используете 32-битные окна, это будет что-то вроде: C: Program FilesArcGISDesktop10.1bin

Как только вы это сделаете, вы сможете подключиться и добавить данные из вашей базы данных. Чтобы использовать слой запроса данных, вам сначала необходимо подключиться к вашей базе данных. В ArcGIS 10.1 вам нужно будет перейти в File> Add Data> Add Query Layer

Единственное, на что нужно обратить внимание, это то, что возвращаемые данные должны иметь уникальное поле, которое может использоваться ArcGIS в качестве первичного ключа. Иногда вам может потребоваться указать его, если вы используете не просто базовый запрос, а ArcGIS не может определить, какое поле использовать. Вы можете сделать это:

  1. Сначала проверьте SQL-запрос, нажав кнопку Validate (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. Я не проверял это слишком много. Таким образом, добавляя столбцы и тому подобное, я мог видеть, что это вызывает хаос. Я думаю, что вы могли бы делать пространственные вызовы SQL с другими базами данных, такими как SQLServer и Oracle, а также с небольшим трудом для создания поля id на лету.

Некоторое время назад я сделал полный урок по адресу: http://www.gisuser.org.nz/resources/tips-and-tricks/look-mum-dad-no-hands


2

Начиная с ArcGIS 10.4, вы можете читать и записывать геометрию PostGIS в поддерживаемых базах данных PostgreSQL без каких-либо дополнительных расширений. Я использовал только расширенную лицензию для этого, но я считаю, что стандартная лицензия может также подключаться к базе данных PG-сервера не из базы геоданных и использовать это рабочее пространство в качестве места назначения для инструментов создания векторов. Это более громоздко, но вы также можете использовать клиенты Basic License для записи в таблицы, используя SQL с Python (через arcpy.ArcSDESQLExecute). Начиная с ArcGIS 10.0, слои запросов только для чтения были опцией для всех уровней licemse.


Винс, каков процесс установки доступного для записи соединения без базы данных PostGIS без SDE в ArcGIS 10.4+? Попытка добавить соединение с базой данных через ArcCatalog Advanced 10.5 приводит к ошибке «Соединения с системными базами данных не разрешены».
Руди Стриклан

1
Не существует никакого процесса, кроме создания базы данных, ее администрирования для хранения данных и подключения к ней. Если вы хотите попробовать это, но это не помогает, вы можете задать новый вопрос здесь (предоставив все детали). Если вы пытаетесь работать в базе данных master в качестве пользователя postgres, вам действительно нужно сначала получить книгу по использованию RDBMS.
Винс

Спасибо Винс. Да, сообщение об ошибке немного сбивает с толку, так как я пытаюсь подключиться к пространственной таблице в обычной базе данных PostGIS («gis»), а не в базе данных master. Ваш совет верен - я документирую проблему и отправлю новый вопрос.
Руди Стриклан


1

GISquirrel делает эту работу за часть стоимости SDE. Он поддерживает подключение arcgis как к MSSQL, так и к PostGIS. Очень прост в настройке (возможность импорта в postgres из shapefile / featureclass) и прост в обслуживании. Для небольшого числа пользователей, которым нужна возможность многопользовательского редактирования, это просто прекрасно.

Мы используем GISquirrel / Arcgis для наших «опытных пользователей» ГИС, и QGIS может подключаться к одному и тому же серверу PostGIS для наших «основных пользователей», что позволяет сэкономить на стоимости лицензий.


Могут ли ваши «опытные пользователи» редактировать в среде ArcGIS или она по-прежнему доступна только для чтения?
user17963

да GISquirrel позволяет полное редактирование в ArcGIS.
Мэтт

Интересный! А как насчет проверок топологии?
user17963

Он работает путем создания временной базы геоданных для выбранных объектов пользователя и блокирует эти объекты для редактирования пользователем. Используя ArcGIS, вы можете редактировать объект в базе геоданных, после того как изменения сохранены, объекты обновляются в PostGIS. Также возможно редактировать все объекты в слое одновременно.
Мэтт

1
Спасибо, Мэтт, я собираюсь протестировать с помощью GISquirrel и посмотреть, работает ли он с нашими данными!
user17963

1

GISquirrel отлично справляется с работой на MSSQLserver, и я вполне уверен, что она будет хорошо работать и для Postgres. Я работаю в смешанной среде ESRI / Qgis и использую ГИС-белку также для импорта шейп-файлов и т. Д. В базу данных. В SQLserver GISsquirrel отслеживает столбцы геометрии, я использую эту информацию для обновления таблицы geometry_columns, используемой Qgis. Очень удобно ...


1

PgMap был заменен st-links SpaceKit и не только поддерживает PostGIS, но также поддерживает SQL Server 2008. Он работает с ArcMap 9.3 и ArcMap 10. Он просто соответствует вашим требованиям. Проверьте это на www.st-links.com


0

Я полагаю, что у вас есть несколько вариантов, кроме использования SDE (хотя я укажу, что вы можете использовать PG_Geometry в SDE, следовательно, доступ к данным через программное обеспечение ESRI или PostGIS-совместимое программное обеспечение ОС). У вас есть расширение ESRI Data Interoperability, ZigGIS, и вы, вероятно, можете установить копию геосервера или mapserver и подключиться через сервис WMS в ArcGIS. Как и в предыдущем посте о zigGIS и необходимости управлять запросами через pgAdmin, вам нужно будет использовать его для создания запросов с помощью геосервера / mapserver. В идеале, если вы повторно используете одни и те же запросы, вы можете сохранить их как представления в postgresql и получить к ним доступ таким образом.


0

ST-Links SpatialKit - это расширение ArcMap для прямого подключения к пространственным базам данных без ArcSDE, без ArcInfo, без ArcGIS Server.

Согласно их лицензии , она стоит 188 долларов США, но они заявляют: «Мы будем продолжать выпускать бесплатные лицензии для тех пользователей, которые не могут позволить себе плату за лицензию. Бесплатные лицензии имеют ограничения по времени. Если вы запрашиваете бесплатную лицензию, укажите причину в адрес электронной почты для запроса лицензии. "


0

Простой способ добавления данных PostGIS в ArcMap - это добавление «Соединения для взаимодействия». Для этого требуется «Расширение взаимодействия данных».

Рекомендуется добавить «Числовой индекс» и «Первичный ключ» в таблицу базы данных PostGIS перед созданием соединения.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.