Tôi rất có thể đang làm điều gì đó sai ở đây, nhưng:
Nếu tôi nhập một số shapefile vào cơ sở dữ liệu PostGIS bằng shp2pgsql , trước tiên tôi phải tìm ra SRID / EPSG của shapefile đó. Tôi nghĩ rằng đây là, tối thiểu, một quá trình hai bước. Đầu tiên tôi truy vấn shapefile như thế này:
>ogrinfo -al -so someshapefile.shp
trong đó trả về thông tin chiếu văn bản (wkt) nổi tiếng, nhưng hơi dài dòng và hơi mờ [với tôi]. Cái gì đó như:
GEOGCS["NAD83",
DATUM["North_American_Datum_1983",
SPHEROID["GRS 1980",6378137,298.257222101,
AUTHORITY["EPSG","7019"]],
AUTHORITY["EPSG","6269"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4269"]]
Sau đó, tôi thường chạy thông tin wkt thông qua một công cụ chuyển đổi như Prj2EPSG để tìm EPSG / SRID.
Tại thời điểm này, tôi có thể nhập shapefile bằng cách sử dụng:
>shp2pgsql -I -s 4269 someshapefile.shp <schema>.<table> | psql -U <user> -d <dbname> -h <hostaddress> -p 5432
Lưu ý, tôi chỉ định SRID với -s
cờ.
Nếu, tôi chạy shp2pgsql mà không chỉ định SRID, không có phép chiếu nào được đặt và tôi nghĩ rằng cột geom phải được cập nhật thủ công để bao gồm một phép chiếu.
Ngoài ra, tôi có thể bỏ qua việc tra cứu và chỉ cần sử dụng ogr2ogr :
>ogr2ogr -f "PostgreSQL" "PG:host=<hostaddress> user=<user> dbname=<dbname> password=<password>" "C:/shapefile.shp" -nln <schema>.<table>
mà dường như thiết lập phép chiếu tốt, có lẽ trích xuất nó tự động từ shapefile / prj nguồn.
Câu hỏi
Vậy điều gì bất lợi khi sử dụng ogr2ogr? Trên thực tế có một cờ để shp2pgsql tự động trích xuất và thiết lập phép chiếu đúng không? Nếu không, tai sao không?
Phụ lục
Có một thú vị, có lẽ hơi ngày, phân tích so sánh của việc sử dụng ogr2ogr vs shp2pgsql sẵn trên naturalgis.pt . Nó chứng minh cho dữ liệu mẫu cụ thể của họ, rằng ogr2ogr hoạt động tốt hơn đáng kể trên các bộ dữ liệu nhỏ , nhưng shp2pgsql hoạt động tốt hơn một chút trên các bộ dữ liệu lớn hơn .
Tôi không cảm thấy điều này cung cấp một câu trả lời dứt khoát. Các cơ sở mã có thể đã phát triển, cải thiện hiệu suất của mỗi người. Họ chỉ thử nghiệm một bộ dữ liệu mẫu rất nhỏ. Bộ dữ liệu "lớn" đại diện không thực sự lớn như vậy. Ngoài ra, chủ yếu là thảo luận về các vấn đề về hiệu suất, điều này chắc chắn ảnh hưởng đến khả năng sử dụng, nhưng câu hỏi ban đầu quan tâm nhiều hơn đến các yêu cầu đầu vào của người dùng liên quan đến khả năng sử dụng.