โอนย้ายข้อมูลจาก ArcSDE ไปยัง PostGIS หรือไม่


19

มันบอกว่าผมถามคำถามนี้อีกครั้ง แต่อาจจะเป็นคำพูดที่แตกต่างกว่าวิธีการโหลดเป็นกลุ่ม shapefiles หลาย PostGIS

ฉันใหม่กับ postgis และ sql แต่ฉันต้องการใช้ postgis เป็นทาส (ในขณะนี้) กับ ArcSDE ดังนั้นสิ่งที่ฉันเป็นช่วยในการปลุกฉันจะไปเกี่ยวกับการอัปโหลดชุดข้อมูล ArcSDE ลงใน PostGIS ทุกคืน

ฉันสามารถสร้างสคริปต์ไพ ธ อนเพื่อส่งออกข้อมูล ArcSDE ไปยัง SHP ทุกคืน แต่ฉันก็ไม่แน่ใจว่าจะทำการอัปโหลดไฟล์ SHP ที่ส่งออกไปยัง PostGIS เป็นอย่างไรเขียนทับสิ่งที่มีอยู่แล้วใน postgis ทั้งหมดเป็นงานอัตโนมัติ )

แผนใหญ่ของฉันคือการแทนที่ ArcSDE / ArcGIS ทันเวลาด้วย PostGIS, QGIS และ GeoServer หรือ MapServer


1
ArcSDE ไม่จัดการ RDBMS ที่เก็บข้อมูลหรือไม่ ข้อมูลของคุณในตอนนี้คืออะไร?
— ฌอน

1
คุณใช้ ArcSDE เวอร์ชั่นใด - ArcSDE 10 สามารถเขียนถึง Postgres resources.arcgis.com/content/arcsde/10.0/…
— Mapperz

หากคุณอ่านคำถามของ Med อย่างระมัดระวังฉันคิดว่าเขา / เธอพยายามจำลองข้อมูลลงใน PostGIS เพื่อการทดสอบและการเผยแพร่ทางเว็บจนกว่าเขาจะสามารถเปลี่ยนจาก ArcSDE ได้สำเร็จ ดังนั้นประเด็นคือไม่ต้องซิงโครไนซ์ ArSDE กับ PostGIS ดั้งเดิมในระยะยาว แต่สำหรับระยะสั้นเท่านั้น
— RyanKDalton-OffTheGridMaps

บางทีการซิงโครไนซ์อาจเลือกชื่อคำถามไม่ดี แน่นอนว่าฉันต้องการให้นี่เป็นวิธีระยะสั้นในการเคลื่อนย้ายและบำรุงรักษาชุดข้อมูลจาก SDE ไปยัง PostGIS SDE ของฉันมีชุดข้อมูลประมาณ 600 ชุดและฉันไม่ต้องการสร้างความประหลาดใจให้ข้อมูลด้วยตนเอง ยา (mr)
— geosmiles

คำตอบ:


19

แทนที่จะทำ DB -> ไฟล์ -> การแปลง DB โดยที่ Esri Shapefiles เป็นองค์ประกอบที่ใช้ไฟล์คนกลางมันอาจคุ้มค่าที่จะตรวจสอบการถ่ายโอน DB โดยตรง -> DB ที่คุ้มค่ากว่า มีเครื่องมือสองสามอย่างที่สามารถทำสิ่งนี้ได้ แต่ฉันแค่มุ่งเน้นไปที่เครื่องมือGDAL / OGRโอเพนซอร์ส

สมมติว่าคุณได้ใช้ Windows Server คุณสามารถติดตั้ง GDAL / OGR ใช้OSGeo4W ด้วยโหมดการติดตั้งขั้นสูงคุณมีความสามารถในการเลือกการกำหนดค่าแพคเกจที่กำหนดเองเช่นไดรเวอร์SDE (ดูรายการแพคเกจนี้เพื่อให้แน่ใจว่ามีการจับคู่ที่เหมาะสมสำหรับรุ่น SDE ของคุณ - รองรับเฉพาะ SDE รุ่น 9.0 ถึง 9.2) แพ็คเกจเหล่านี้เป็นเพียงส่วนหัวและส่วนห่อหุ้มและต้องการให้คุณติดตั้งไลบรารี SDE ซึ่งคุณควรมีใน CD / DVD ROM และให้แน่ใจว่าตัวแปร PATH นั้นถูกตั้งค่าอย่างเหมาะสมสำหรับ GDAL / OGR เพื่อค้นหา การติดตั้งที่สำเร็จจะแสดง "SDE" ที่ใดที่หนึ่งด้วยคำสั่งต่อไปนี้ในเชลล์ OSGeo4W:ogr2ogr --formats

หลังจากที่คุณกำหนดค่า GDAL / OGR คุณสามารถใช้เครื่องมือบางอย่าง:

  • เครื่องมือบรรทัดคำสั่งogr2ogrจาก OSGeo4W เปลือกซึ่งจะต้องมีบางสิ่งบางคำสั่งที่ชอบ: ogr2ogr -f "PostgreSQL" PG:"host=localhost user=someuser dbname=somedb password=somepassword port=5432" \ SDE:server,instance,database,username,password,layer,[version](คุณยังสามารถสำรวจต่างๆ-append, -overwriteหรือ-updateตัวเลือก)
  • คัดลอกและปรับเปลี่ยนสคริปต์ Python ที่มีอยู่ซึ่งเชื่อมต่อกับ SDE และคุณสามารถแก้ไขได้เพื่อถ่ายโอนข้อมูลไปยังแหล่งข้อมูลอื่น

ข้อแม้ที่สำคัญสำหรับวิธีนี้คือมันมีความซับซ้อนในการตั้งค่า


+1 สำหรับการตอบกลับที่ชัดเจนและเป็นประโยชน์ แม้จะมีความซับซ้อนมันเป็นเส้นทางโดยตรง
— DEWright

ในทางทฤษฎีฉันชอบความคิดในการถ่ายโอนฐานข้อมูลโดยตรง แต่ฉันกำลังมองหาบางสิ่งที่ 'พื้นฐานพื้นฐาน' อย่างไรก็ตามเราเป็น SDE 9.3.1 ที่ mo ดังนั้นคำตอบข้างต้นไม่ใช่ go'a อย่างที่ฉันบอกว่าฉันใหม่กับ PostGIS และ SQL แต่ฉันคิดว่ามีสคริปต์ 'ออกมี' ที่คุณสามารถทำการอัปโหลดจำนวนมากโดยอัตโนมัติ!
— geosmiles

1
อีกตัวเลือก "db-> DB" สำหรับทุกรุ่น SDE (และหลายร้อยรูปแบบอื่น ๆ / ดีบีเอส) เป็นFME FME นั้นไม่ปลอด (มีการทดลองใช้ฟรีที่คุณสามารถทดสอบได้) ซึ่งหมายความว่าพวกเขาสามารถให้การสนับสนุนเพื่อช่วยเหลือโซลูชันการซิงโครไนซ์ของคุณ แต่เห็นได้ชัดว่าต้องใช้งบประมาณ เลือกที่ดีที่สุดฟรีคือการตัดบทที่ดี BAT กับshp2pgsql, psqlฯลฯ
— ไมค์ T

2
หนึ่งในเหตุผลที่ฉันเขียนไดรเวอร์ ArcObjects GDAL คือการทำสิ่งนี้ เนื่องจากพวกเขามีใบอนุญาต ESRI ผู้ต้องการรักษา FeatureClasses ที่ซับซ้อนและทิ้งลงใน PostGIS ทุกคืน ไดรเวอร์ arcsde ผ่านเลเยอร์ arcsde api แต่ไดรเวอร์ arcobjects ทำงานได้ดีผ่าน arcobjects เราใช้มันมานานปีแล้วและใช้งานได้ดีมาก
— Ragi Yaser Burhum

คุณจะได้รับไดรเวอร์ "SDE" เพื่อให้คุณสามารถใช้สคริปต์ Python ที่มีอยู่นั้นได้ที่ไหน ฉันหาไม่ได้ ...
— ePascoal

6

PostGIS มีโหลดเดอร์ชื่อshp2pgsqlที่คุณสามารถใช้เพื่อโหลด shapefiles ลงในฐานข้อมูล PostGIS หนึ่งในตัวเลือก ("-d") จะลดลงจากตารางฐานข้อมูลที่มีอยู่ก่อนที่จะโหลดข้อมูล มันควรจะค่อนข้างง่ายในการสร้างแบตช์ไฟล์หรือสคริปต์ที่สามารถวนลูปผ่านไฟล์รูปร่างทั้งหมดและโหลดให้คุณ

หากคุณต้องการได้รับมากกว่านี้คุณสามารถติดตั้ง GDAL และใช้เครื่องมือ OGR (ซึ่งมีตัวเชื่อมต่อ ArcSDE) และข้ามการส่งออกรูปร่างไฟล์ ข้อมูลเกี่ยวกับช่องเสียบ ArcSDE สามารถพบได้ที่นี่


ในแง่พื้นฐานบิลลี่วิธี / สิ่งที่ฉันจะเขียนสคริปต์ (ที่จะเพิ่มเป็นงานที่กำหนดตารางเวลาหน้าต่าง) เพื่อวางตาราง exsiting ให้พูดว่าเรียกว่า Listed_Buildings แล้วอัปโหลดรุ่นที่ใหม่กว่าของมันถือเป็น shp ใน D: \ sde_export
— geosmiles

1
วิธี shapefile แย่ลงเมื่อชื่อเขตข้อมูลมากกว่า 11 ตัวอักษรเนื่องจาก 11 ตัวอักษรอื่น ๆ จะถูกลบ !!
— SIslam

1

ฉันรู้ว่าฉันมาปาร์ตี้ช้า แต่มีตัวเลือกอื่นสำหรับสิ่งนี้ที่หลีกเลี่ยงการมี 2 ฐานข้อมูล

คุณสามารถมี ArcSDE ที่ด้านบนของ Postgresql + Postgis นี่จะเป็นเจ้านายของคุณและมีเพียงฐานข้อมูลเท่านั้น

ArcSDE สามารถกำหนดค่าให้ใช้รูปทรงเรขาคณิตของ postgis และไม่ใช่ st_geometries (เป็นกรรมสิทธิ์ของ ESRI)

ซึ่งหมายความว่าคุณสามารถใช้เครื่องมือ postgis ใด ๆ เพื่อใช้ตารางอวกาศเชิงพื้นที่โหลด / แก้ไข ArcSDE โดยตรงเนื่องจากเป็นตารางดั้งเดิม postgis

ตัวอย่างเช่นคุณสามารถใช้ qgis เพื่อเชื่อมต่อกับฐานข้อมูล postgis โดยตรงและอ่านข้อมูลเดียวกับ arcgis ผ่าน arcsde


1

อีกวิธีคือการใช้ ETL เชิงพื้นที่เช่น Geokettle (โอเพ่นซอร์ส)

http://www.spatialytics.org/projects/geokettle/

ฉันใช้ Geokettle เพื่อย้ายข้อมูลระหว่าง sql server และ PostGIS ตลอดเวลา อย่างไรก็ตามในขณะที่มันทำงานได้ดีกับ PostGIS มีความท้าทายเมื่อทำงานกับชนิดข้อมูลเชิงพื้นที่ของ SQL Server (ดูคำแนะนำด้านล่าง) นอกจากนี้สมมติว่าคุณกำลังจัดเก็บรูปทรง SDE เป็นชนิดข้อมูลดั้งเดิมของ SQL Server คุณสามารถทำได้ด้วยคำสำคัญเรขาคณิตเมื่อโหลดข้อมูลผ่าน ArcCatalog

เคล็ดลับที่ 1: เมื่อเลือกข้อมูลจากเซิร์ฟเวอร์ sql จะใช้. STATText () กับฟิลด์เรขาคณิตหรือ Geokettle จะทำให้หายใจไม่ออกในประเภทข้อมูลเซิร์ฟเวอร์ sql

คำแนะนำ 2: เมื่อทำการแทรกข้อมูลลงในเซิร์ฟเวอร์ sql คุณจะต้องแทรกรูปทรงเรขาคณิตเป็นข้อความลงในช่องข้อความ จากนั้นใช้ขั้นตอน sql เพื่อเพิ่มคอลัมน์เรขาคณิตใหม่ (ถ้าจำเป็น) และเติมจากเรขาคณิตข้อความ ด้วยวิธีนี้คุณใช้ SQL Server เพื่อสร้างรูปทรงเรขาคณิตจากการแสดงข้อความมาตรฐาน OGC ของรูปทรงเรขาคณิต

คำแนะนำ 3: อย่าลืมลงทะเบียนตารางอวกาศของคุณกับ SDE


หากต้องการใช้ SDE.ST_AsText () คุณจะต้องมี SDE.ST_GEOMETRY_SHAPELIB_PKG ใช่ไหม
— ePascoal

0

พิจารณาตั้งค่าการจำลองแบบฐานข้อมูลบน 9.3 db ต้นฉบับ
มันไม่ทำงานเช่นเดียวกับ 10 ใหม่ แต่ ...
ทำซ้ำไปยัง sde อื่นใน postgresql โดยใช้ชนิดข้อมูล postgis pg_geometry

นี่คือความช่วยเหลือบางอย่างของ ESRI
หมายเหตุ: การดำเนินการนี้จะต้องใช้สิทธิ์การใช้งานซ้ำซ้อนหากทั้ง dbs ไม่ได้อยู่ในเครื่องเดียวกัน


การขอใบอนุญาตซ้ำซ้อนดูเหมือนว่าจะเอาชนะจุดที่น่าอัศจรรย์ไปสู่โอเพนซอร์ส!
— geosmiles

หาก db ต้นฉบับของคุณอยู่ใน postgresql คุณสามารถทำได้ทั้งหมดใน db เดียวกัน (อินสแตนซ์หลาย sde) หรือติดตั้ง postgresql บนเครื่องเดียวกับ sde ของคุณ ถ้าไม่ใช่คุณอาจคิดว่าเป็นการพัฒนาและซื้อ EDN (อีก sde) สำหรับช่วงระยะเวลา 2.5 พันปี
— แบรดเนสซัม

0

คุณสามารถเขียน ArcObjects ไปที่:

A) ทิ้งฐานข้อมูล arcsde ของคุณ; B) รหัสธรรมดา c # เพื่อสร้าง sql shp2pgsql; C) รหัสธรรมดา c # เพื่อถ่ายโอนข้อมูลตารางเก่า; D) ธรรมดา c # เพื่อเรียกใช้ shp2pgsql ทั้งหมดลงใน postgresql ของคุณ

คุณสามารถใช้ไดรเวอร์ npgsql เพื่อให้บรรลุสิ่งนี้ดำเนินการฟังก์ชันและคำสั่ง sql ลงในฐานข้อมูล postgis ของคุณโดยตรง


0

เรขาคณิต ArcSDE ของคุณคืออะไร ( หน่วยเก็บข้อมูล Geodatabase ในฐานข้อมูลเชิงสัมพันธ์ ) ในสถานการณ์ดังกล่าวคุณอาจพิจารณาใช้ประเภท ST_Geometry จากนั้นใช้เครื่องมือจำลองแบบ PostGre / PostGIS ( PostGIS Replication @ FOSS4G ) แบบแผนนี้อาจมีข้อได้เปรียบในการใช้คุณสมบัติ ArcSDE / ArcGIS / geodatabase สำหรับรุ่น (ฐานข้อมูลรุ่น) และเครื่องมือโอเพ่นซอร์สสำหรับการแพร่กระจาย (ฐานข้อมูลการกระจายแบบจำลอง)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.