คุณสามารถบอกฉันได้ว่าฉันสามารถโหลดข้อมูลฐานข้อมูลภูมิศาสตร์ลงใน PostGIS ได้อย่างไรโดยไม่ต้องติดตั้งแอป Esri
วิธีแก้ปัญหาที่ฉันพบออนไลน์พูดคุยเกี่ยวกับการใช้ ArcGIS เพื่อแปลง GDB เป็น SHP แล้วนำเข้า SHP ไปยัง PostGIS
คุณสามารถบอกฉันได้ว่าฉันสามารถโหลดข้อมูลฐานข้อมูลภูมิศาสตร์ลงใน PostGIS ได้อย่างไรโดยไม่ต้องติดตั้งแอป Esri
วิธีแก้ปัญหาที่ฉันพบออนไลน์พูดคุยเกี่ยวกับการใช้ ArcGIS เพื่อแปลง GDB เป็น SHP แล้วนำเข้า SHP ไปยัง PostGIS
คำตอบ:
ฉันทำมันตลอดเวลาสำหรับลูกค้าของฉัน
ดัมพ์ข้อมูลของคุณไปที่ 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 บางแห่งเพื่อบอกให้คุณทราบ
ogr2ogr -f "PostgreSQL" PG:"dbname=mydbname user=postgres" SanDiegoData.gdb -sql "GetLayerDefinition Parcels"
จะถ่ายโอนข้อมูลเมตาของ ESRI XML ไปยังเขตข้อมูลในฐานข้อมูลนั้น
ฉันไม่ได้ลองสิ่งนี้ดังนั้นจึงไม่สามารถยืนยันได้ แต่File Geodatabase APIอาจอนุญาตให้คุณส่งออกข้อมูลจากไฟล์ Geodatabase ไปยัง SHP (และจากนั้น PostGIS) เอกสารบอกว่า:
With the API you can... Read and write data
Esri ไฟล์ของ Geodatabase API เท่านั้นทำงานร่วมกับไฟล์ geodatabases สร้างขึ้นโดยใช้ 10.x - รุ่นเก่าจะไม่ทำงานกับ GDAL, QGIS หรือสิ่งอื่นที่ขึ้นอยู่กับการเปิดไฟล์ของ Geodatabase 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 express edition และสร้าง GDAL ของตัวเอง, ปลั๊กอิน ogr และ 1.3 ของไฟล์ Geodatabase API ที่เปิดอยู่
สิ่งที่ฉันไม่สามารถทำได้คือโอนย้ายฐานข้อมูล Geodatabase 9.x ที่เก่ากว่าโดยไม่ใช้ซอฟต์แวร์ esri (ไม่มีให้ฉันเลย atm) - ฉันไม่สามารถผ่านไปได้ ...
HRESULT = -2147220965, errorText = "GeoDatabase รุ่นนี้อาจไม่ถูกต้องหรือล้าสมัย"
... เมื่อพยายามเปิด 9.x "gdb" ด้วย API แบบเปิดที่รองรับ 10.x "gdb" เท่านั้น
ในขณะที่ฉันยังไม่ได้ลองด้วยตัวเองฉันเพิ่งเจอบทช่วยสอนนี้(ซึ่งก็คือ shapefile -> PostGIS) ซึ่งใช้ซอฟต์แวร์ geoETL แบบโอเพ่นซอร์สที่เรียกว่า " Spatial Data Integrator " ฉันไม่แน่ใจว่ารองรับ Esri GDB หรือไม่ แต่อาจคุ้มค่าที่จะตรวจสอบเพิ่มเติมเพื่อดูว่าคุณสามารถใช้ผลิตภัณฑ์นี้เพื่อทำการแปลงที่คล้ายกันจาก GDB เป็น PostGIS โดยไม่ใช้ผลิตภัณฑ์ ESRI หรือไม่
แพ็คเกจ ETL อื่น ๆ ที่ฉันเคยได้ยินคือFME จาก Safe Sofware ($, เป็นที่นิยมมาก) และGeoKettle (โอเพ่นซอร์ส) รวมถึงการอ้างอิงอื่น ๆ อีกมากมายในหน้าวิกิพีเดีย Spatial ETL
แก้ไข : เมื่อขุดอีกเล็กน้อยดูเหมือนว่าSDI ไม่สนับสนุนการอ่าน EsriGDB โดยตรงแต่สามารถอ่านรูปแบบไฟล์ OGR ที่มีอยู่ได้
งาน FWIW กำลังดำเนินการเพื่อสร้าง GDB ไปยังตัวโหลด postgis ขึ้นอยู่กับลำต้นของ GDAL ล่าสุดซึ่งมีการผูก GDB ยังไม่มีโอกาสรวบรวมและลองด้วยตัวเอง แต่หวังว่าก่อนที่ PostGIS 2.0 จะออกมา
ตรวจสอบ - http://trac.osgeo.org/postgis/browser/spike/pramsey/postgis2fgdb
คุณอาจให้ข่าวคราวกับพอลในกลุ่มข่าวของ PostGIS เพื่อทราบว่าเขาอยู่ที่ไหน http://www.postgis.org/mailman/listinfo/postgis-users
สำหรับรูปแบบ GeoDatabase ส่วนบุคคล GDAL สามารถอ่านได้ดีและนั่นคือสิ่งที่ฉันมักจะใช้เพื่อส่งออกข้อมูลจาก Geodb ส่วนบุคคล
ตอบคำถามของฉันเองที่นี่ที่ฉันโพสต์ที่นี่ในขณะที่กลับมา ...
ตัวเลือกอื่นที่ฉันพบทางออนไลน์ (นอกเหนือจากคำแนะนำข้างต้น) คือการใช้ pgdbf ( https://github.com/kstrauser/pgdbf ) ซึ่งทิ้งสคริปต์ SQL ที่คุณสามารถใช้เพื่อนำเข้าสู่ postgres ด้วยตนเอง