รุ่นที่โหลดรูปร่างหลายไฟล์เพื่อ Postgis


11

ตามที่shp2pgsqlช่วยเหลือตัวเลือกวาง , ผนวก , สร้างและเตรียมความพร้อมเป็นพิเศษร่วมกัน ดังนั้นถ้าฉันต้องการสร้างตารางจากรูปร่างและต่อท้ายผนวกรูปร่างหลาย ๆ ไฟล์ฉันจะทำสิ่งต่อไปนี้โดยรักษาตัวนับเพื่อระบุว่าเราอยู่ในโหมดสร้างหรือผนวก

cnt=0
for shp in $(ls *.shp); do

if [ $cnt -eq  0 ]  ; then

   shp2pgsql -s 27700 -c $shp schema.table_name | psql -h localhost db 

else

   shp2pgsql -s 27700 -a $shp schema.table_name | psql -h localhost db 

fi
((cnt++))
done

ใช้งานได้ตามที่คาดไว้ แต่ฉันมักจะสงสัยว่ามีวิธีที่ง่ายกว่านี้ไหม?

คำตอบ:


4

หากคุณสามารถใช้ ogr2ogr มันจะไม่สนใจตัวเลือกการสร้างเมื่อผนวกและละเว้นตัวเลือกผนวกเมื่อสร้าง

for shp in $(ls *.shp);
do
  ogr2ogr -f "PostgreSQL" PG:dbname=databasename -append -a_srs 27700 -nln schema.table_name $shp
done

หรือใน windows ในบรรทัดคำสั่ง:

for /R %f in (*.shp) do ogr2ogr -f "PostgreSQL" PG:dbname=databasename -append -nln schema.table_name "%f"

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