Thêm shapefiles vào cơ sở dữ liệu PostGIS


30

Tôi đã có thể tạo một cơ sở dữ liệu Postgresql và sau đó tôi đã thực thi,

createlang plpgsql geospecies
psql -d geospecies -f postgis.sql
psql -d geospecies -f spatial_ref_sys.sql

Vì vậy, bây giờ tôi có thể nhập trực tiếp các shapefiles? Đây sẽ là lệnh đúng,

ogr2ogr -f PostgreSQL PG:"host=server_ip user=username dbname=dbname password=password" yourshapefile.shp;

Tôi không chắc làm thế nào để cấu trúc cơ sở dữ liệu, nó sẽ không cần một bảng? Cuối cùng tôi sẽ cần thêm một loạt các shapefiles và vì vậy có một lệnh để làm điều đó?

Câu trả lời:


49

Hãy thử shp2pgsql. Cú pháp cơ bản giống như:

shp2pgsql -s SRID SHAPEFILE.shp SCHema.TABLE | psql -h HOST -d CƠ SỞ DỮ LIỆU -U NGƯỜI DÙNG

Tôi luôn luôn tìm thấy điều này cheatsheet từ http://www.bostongis.com hữu ích. Nếu bạn cuộn xuống một chút, bạn sẽ tìm thấy các ví dụ đơn giản về cách tải dữ liệu.

Hy vọng nó giúp.


Nhưng tôi không có bàn. Tôi nên tạo bảng và lược đồ nào?
Sam007

1
Nếu bạn nhìn vào chiếc áo choàng , (-d|-a|-c|-p)là những lá cờ cho các bảng. Nếu bạn không chỉ định bất cứ điều gì, nó sẽ chọn -ctheo mặc định (tạo một bảng mới và điền vào bảng). Đối với SRID, tôi không biết - điều đó phụ thuộc vào việc chiếu dữ liệu của bạn. Nếu bạn có .projtệp đi kèm với các shapefiles, bạn có thể kiểm tra nó chiếu tại prj2epsg.org/search . Hy vọng nó sẽ giúp ..

cảm ơn vì đã trả lời @Haziq. Tôi chỉ bối rối khi đến nơi -c? Tôi đã thử shp2pgsql -s 4326 /var/www/geo/shapefile/PimaPine.shp -c public.Pima | psql -h localhost -d geospecies -U smaranhnhưng tôi gặp lỗi dpaste.com/834563
Sam007

Tôi nghĩ rằng -cnên đi sau -s 4326, và trước /var/www/geo/shapefile/PimaPine.shp.. Cú pháp là shp2pgsql [OPTIONS] shapefile [schema.]table. Có phải thay đổi vị trí của các -chiệu ứng vẫn còn lỗi?

Không vẫn còn lỗi. Nó cũng có thể phải đối mặt với lỗi ROLLBACK, gis.stackexchange.com/questions/41807/ chủ đề
Sam007

4

À! Không thể bình luận nào!

Những gì Haziq đăng sẽ là cách chính xác để thực hiện Sam.

TABLE chỉ là bất cứ thứ gì bạn muốn đặt tên và sẽ là tên để sử dụng khi gọi nó từ truy vấn, bảng sẽ được tạo khi nhập.

Nếu bạn trở nên lười biếng như tôi, tôi chỉ cần sử dụng SPIT tuyệt vời (Shapefile để PostGIS Import Tool) có sẵn như là một plugin QGIS để nhập tất cả các shapefiles của tôi ngay bây giờ. Giả sử bạn đang sử dụng QuantumGIS như bạn đã nói bạn đang sử dụng OpenGeo trước đó.


1
vấn đề là tôi không có GUI. Tôi đang làm việc trên Ubuntu Server từ xa.
Sam007

SPIT sẽ hoạt động từ xa, tôi làm tất cả thời gian từ DB đến nhà của tôi, bạn chỉ cần điền thông tin kết nối như bạn đã làm để đăng nhập vào psql.
RomaH

Làm cách nào để tôi thực thi nó
Sam007

Vâng, tôi đã giả sử bạn đang lấy các tệp shp cục bộ và đưa chúng vào máy chủ từ xa của bạn. Bạn sẽ khởi động QGIS và sử dụng plugin SPIT trên máy cục bộ của mình, kết nối máy chủ từ xa và tải lên.
RomaH

Tất cả tệp shp của tôi đều có trên máy chủ
Sam007
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.