Мигрировать данные из базы геоданных в PostGIS без приложений Esri?

39

Можете ли вы сказать мне, как я могу загрузить данные базы геоданных в PostGIS без необходимости установки приложений Esri?

Решение, которое я нашел в Интернете, говорило об использовании ArcGIS для преобразования GDB в SHP, а затем об импорте SHP в PostGIS.

Герсон Галанг
источник
Большое спасибо за ответ. FME может быть правильным решением, но мы считаем его очень дорогим решением. Мы считаем, что 14-дневного пробного периода недостаточно для миграции. У кого-нибудь есть опыт работы с другими инструментами, такими как скрипты GDAL или GeoKettle? С уважением.
SonOfabox
FME Desktop - лучшее решение для переноса данных

Ответы:

37

Я делаю это все время для своих клиентов.

Сохраните ваши данные в FileGDB или Shapefiles и выполните следующую команду:

Для шейп-файлов ESRI:

ogr2ogr -f "PostgreSQL" PG: "dbname = mydbname user = postgres" myshapefile.shp

Для файла GDB:

ogr2ogr -f "PostgreSQL" PG: "dbname = mydbname user = postgres" myFileGDB.gdb

Для FileGDB необходимо убедиться, что драйвер FileGDB установлен. Вы делаете это с:

Огринфо --форматы

который должен показать FileGDB где-нибудь, чтобы сказать вам, что он установлен.

Раги Язер Бурхум
источник
Можете ли вы рассказать подробнее об установке драйвера FileGDB для OGR?
RyanDalton
7
Самый простой способ для Windows - trac.osgeo.org/osgeo4w. Найдите пакет filegdb (я собираюсь обновить его с помощью исправлений ошибок на следующей неделе). Если вы работаете в Linux или Mac, вы можете изменить следующий скрипт, который я использую для его сборки на лету (см. Install_filegdb
Ragi Yaser Burhum
@RyanDalton, и дайте мне знать, как это происходит :)
Раги Язер Бурхум
1
Что происходит с метаданными в этом процессе? Например, метаданные FGDC, которые содержат больше, чем просто систему координат и т. Д.
Оливер Бурдекин
ogr2ogr не будет писать его по умолчанию , но, глядя на код, я вижу, что есть специальная команда «GetLayerDefinition», которую можно выполнить в приглашении SQL, чтобы прочитать эту информацию. ogr2ogr -f "PostgreSQL" PG:"dbname=mydbname user=postgres" SanDiegoData.gdb -sql "GetLayerDefinition Parcels"
сбросит
7

Я не пробовал этого, поэтому не могу проверить, работает ли он, но API файловой базы геоданных может позволить вам экспортировать данные из файловой базы геоданных в SHP (и, следовательно, в PostGIS). В документации сказано:

With the API you can... Read and write data
Стивен Лид
источник
Спасибо Стивену, полезно знать, что есть API, но мы, вероятно, попробуем это, если на самом деле нет какого-либо инструмента, написанного людьми, который делает это автоматически.
Герсон Галанг,
6
Если у вас есть API-интерфейс File GEodatabase, вы также можете конвертировать напрямую, используя GDAL: trac.osgeo.org/gdal/wiki/FileGDB
johanvdw
2
Некоторые предостережения: разработанный ESRI API и основанные на нем инструменты будут работать только с файлом GDB (.gdb), созданным или преобразованным для использования в ArcGIS 10 или более поздней версии. Поддержка более ранних версий Personal GDB (.mdb) происходит от более ранних попыток программирования и может работать в зависимости от данных и инструмента.
V Стюарт Фут
@johanvdw Пару дней назад я попробовал trac.osgeo.org/gdal/wiki/FileGDB, прежде чем опубликовать мой вопрос выше, так как инструкции по этой ссылке у меня тоже не сработали. Я попробовал последнюю версию gdal 1.8.1 на своем Ubuntu 10.04, но, похоже, он не установил плагин File GeoDB в gdal. Я попытался "--with-fgdb = / usr / local / FileGDB_API" и "--with-fgdb = / usr / local", поскольку в их документации не было ясно, как указать, что мне следует использовать в параметре "with-fgdb" но ничего не получалось.
Жерсон Галанг
GCG: создайте ту же страницу: (замените / usr / local / FileGDB_API везде, где вы извлекли FileGDB_API_ <версия> .tar.gz)
johanvdw
5

API файловой базы геоданных Esri работает только с файловыми базами геоданных, созданными с использованием 10.x - более старые версии не будут работать с GDAL, QGIS или чем-то еще, что зависит от API открытой файловой базы геоданных . Старые персональные базы геоданных зависят от MS Access, и есть доступные читатели и код.

Если у вас есть файловая база геоданных 10.x, вы можете прочитать слой из FileGDB и загрузить в PostGIS с помощью одной команды ogr2ogr ( см. Документацию ):

ogr2ogr -overwrite -skipfailures -f "PostgreSQL" PG:"host=myhost user=myuser dbname=mydb password=mypass" "C:\somefolder\BigFileGDB.gdb" "MyFeatureClass"

Для этого мне также пришлось скачать экспресс-версию VS2010 и собрать свой собственный GDAL, плагин ogr и API-интерфейс открытой файловой базы геоданных 1.3.

Чего я не смог сделать, так это перенести старую файловую базу геоданных 9.x без использования программного обеспечения esri (недоступно для меня) - я не могу пройти через ...

HRESULT = -2147220965, errorText = "Этот выпуск базы геоданных недействителен или устарел."

... при попытке открыть 9.x "gdb" с открытым API, который поддерживает только 10.x "gdb".

Алексис Брукер
источник
Последние версии (середина 2014 года) ogr2ogr с OpenFileGDB могут по крайней мере читать более старую версию файловых баз геоданных ESRI.
c.gutierrez
2

Хотя я сам еще не пробовал, я только что наткнулся на это руководство (шейп-файл -> PostGIS), в котором используется программное обеспечение geoETL с открытым исходным кодом под названием « Spatial Data Integrator ». Я не уверен, поддерживает ли он Esri GDB или нет, но, возможно, стоит дополнительно изучить вопрос, можете ли вы использовать этот продукт для аналогичного преобразования из GDB в PostGIS без использования продуктов ESRI.

Другие пакеты ETL, о которых я слышал, это FME от Safe Sofware ($, очень популярный) и GeoKettle (с открытым исходным кодом), а также много других ссылок на странице Википедии Spatial ETL .

РЕДАКТИРОВАТЬ : При копании немного дальше, похоже, что SDI не поддерживает чтение EsriGDB напрямую , но может читать доступные форматы файлов OGR .

RyanDalton
источник
2

Продолжается работа по созданию GDB для постгис-загрузчика. Это зависит от последней магистрали GDAL, которая имеет привязки GDB. У меня не было возможности скомпилировать и попробовать себя, но надеюсь до выхода PostGIS 2.0.

проверить - http://trac.osgeo.org/postgis/browser/spike/pramsey/postgis2fgdb

Вероятно, вы можете дать Полу жужжание в группе новостей PostGIS, чтобы узнать, где он с этим. http://www.postgis.org/mailman/listinfo/postgis-users

Что касается формата Personal GeoDatabase, GDAL может прочитать это отлично, и это то, что я обычно использую для экспорта данных из личного geodb.

LR1234567
источник
0

Отвечая на мой собственный вопрос здесь, который я отправил здесь некоторое время назад ...

Другой вариант, который я нашел в Интернете (в дополнение к приведенным выше предложениям), - это использование pgdbf ( https://github.com/kstrauser/pgdbf ), который выводит сценарий SQL, который затем можно использовать для загрузки в postgres вручную.

Герсон Галанг
источник