Перенесення даних бази геоданих у PostGIS без додатків Esri?


39

Чи можете ви сказати, як я можу завантажувати дані геоданих у PostGIS, не встановлюючи додатки Esri?

Я знайшов рішення в Інтернеті про використання ArcGIS для перетворення GDB в SHP, а потім імпорту SHP в PostGIS.


Дуже дякую за вашу відповідь. FME може бути правильним рішенням, але ми розглядаємо це як дуже дороге рішення. Ми вважаємо, що 14-денний пробний період недостатній для міграції. Хтось має досвід роботи з іншими інструментами, такими як сценарії GDAL або GeoKettle? З повагою
SonOfabox

FME Desktop - найкраще рішення для міграційних даних

Відповіді:


37

Я роблю це постійно для своїх клієнтів.

Завантажте свої дані у FileGDB або Shapefiles та виконайте таку команду:

Для ESRI Shapefiles:

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

Для FileGDB:

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

Для FileGDB вам потрібно переконатися, що встановлений драйвер FileGDB. Ви робите це:

ogrinfo --формати

який повинен десь показувати FileGDB, щоб повідомити, що він встановлений.


Чи можете ви надати більш детальну інформацію про встановлення драйвера FileGDB для OGR?
RyanDalton

7
Найпростіший спосіб для Windows - trac.osgeo.org/osgeo4w Шукайте пакет filegdb (я збираюся оновити його з виправленнями помилок на наступному тижні). Якщо ви перебуваєте на Linux або Mac, ви можете змінити наступний сценарій, який я використовую для його побудови на льоту (див. Install_filegdb) gist.github.com/2955440
Ragi Yaser Burhum

@RyanDalton та дай мені знати, як це йде :)
Рагі Ясер Бурхум

1
Що відбувається з метаданими цього процесу? Наприклад, метадані FGDC, які містять більше, ніж просто систему координат тощо.
Олівер Бурдекін,

ogr2ogr не запише його за замовчуванням , але, переглядаючи код, я бачу, що існує спеціальна команда "GetLayerDefinition", яку ви можете виконати в підказці SQL для читання цієї інформації. ogr2ogr -f "PostgreSQL" PG:"dbname=mydbname user=postgres" SanDiegoData.gdb -sql "GetLayerDefinition Parcels"скидає метадані ESRI XML в поле в цьому db
Рагі Ясер Бурхум

7

Я не пробував цього, тому не можу перевірити, чи працює він, але API File Geodatabase може дозволити вам експортувати дані з файлу Geodatabase до SHP (а звідси PostGIS). Документація говорить:

With the API you can... Read and write data

Дякую, Стівен, корисно знати, що є API, але ми, мабуть, спробуємо, що якщо насправді не існує інструменту, який написали люди, який робить це автоматично.
Герсон Галанг

6
Якщо у вас є API файлу GEodatabase, ви можете також перетворити безпосередньо за допомогою GDAL: trac.osgeo.org/gdal/wiki/FileGDB
johanvdw

2
Деякі застереження: розроблений ESRI API та інструменти, засновані на ньому, працюватимуть лише з файлом GDB (.gdb), створеним або перетвореним для використання в ArcGIS 10 або новіших версіях. Підтримка більш ранніх версій Personal GDB (.mdb) надходить із попередніх зусиль програмування і може працювати залежно від даних та інструменту.
V Stuart Foote

@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_ <version> .tar.gz)
johanvdw

5

API файлу geodatabase файлів Esri працює лише з файлами баз даних геоданих, створеними за допомогою 10.x - старіші версії не працюватимуть з GDAL, QGIS або будь-яким іншим, що залежить від відкритого файлу API geodatabase . Старі персональні бази даних геоданих залежать від 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 плагін та 1.3 відкритого файлу API геоданих баз даних.

Те, що я не міг зробити, - це перемістити старіший файл 9.x geodatabase без використання програм esri (не доступне для мене в атм) - я не можу пройти повз ...

HRESULT = -2147220965, errorText = "Цей випуск бази даних GeoData є недійсним або застарілим."

... при спробі відкрити 9.x "gdb" з відкритим API, який підтримує лише 10.x "gdb".


Останні версії ogr2ogr з OpenFileGDB (середина 2014 року) можуть принаймні читати старішу версію файлів геоданих баз ESRI.
c.gutierrez

2

Поки я ще не пробував цього, я просто натрапив на цей підручник (який є shapefile -> PostGIS), який використовує програмне забезпечення GeoETL з відкритим кодом під назвою " Інтегратор просторових даних ". Я не впевнений, підтримує він програму Esri GDB чи ні, але, можливо, варто додатково вивчити, чи можна використовувати цей продукт для здійснення подібного перетворення з GDB в PostGIS без використання продуктів ESRI.

Інші пакети ETL, про які я чув, - це FME від Safe Sofware ($, дуже популярний) та GeoKettle (з відкритим кодом), а також багато інших посилань на сторінці Вікіпедії Spatial ETL .

EDIT : Після копання трохи далі, схоже, SDI не підтримує зчитування EsriGDB , але може читати доступні формати файлів OGR .


2

Робота FWIW триває над створенням 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.


0

Відповідаючи на моє власне питання тут, я опублікував тут деякий час назад ...

Ще один варіант, який я знайшов в Інтернеті (на додаток до вищезазначених пропозицій), - це використовувати pgdbf ( https://github.com/kstrauser/pgdbf ), який скидає сценарій SQL, який ви можете використовувати для введення в поштові повідомлення вручну.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.