Batch tải nhiều shapefiles vào Postgis


11

Theo sự shp2pgsqlgiúp đỡ, các tùy chọn thả , nối , tạochuẩn bị là loại trừ lẫn nhau. Vì vậy, nếu tôi muốn tạo một bảng từ một hình dạng và sau đó nối thêm nhiều shapefile khác, tôi làm một cái gì đó như sau, giữ một bộ đếm để cho biết chúng ta đang ở chế độ tạo hay chắp thêm.

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

Điều này hoạt động, như mong đợi, nhưng tôi thường tự hỏi nếu có một cách đơn giản hơn?

Câu trả lời:


4

Nếu bạn có thể sử dụng ogr2ogr, nó sẽ bỏ qua các tùy chọn tạo khi nối thêm và bỏ qua các tùy chọn chắp thêm khi tạo.

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

Hoặc trong các cửa sổ trong dòng lệnh:

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

1
Chắc chắn, ogr2ogr hoạt động. Hình sẽ có một giải pháp đơn giản. Cảm ơn
John Powell
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.