Tại sao QGIS không phát hiện CRS từ tệp .prj?


9

Tôi có một số lưới hình lục giác dài 1 km bao gồm nhiều quận khác nhau ở Hoa Kỳ trong cơ sở dữ liệu postgreQuery / postGIS. Mỗi lưới có CRS EPSG: 3857 và lớp hạt có EPSG: 3857. Khi xem các lưới với các hạt trong QGIS, mọi thứ đều có vẻ lớn.

Nhưng ... để chia sẻ các lưới này với các đồng nghiệp, tôi đã phải xuất chúng thành các shapefile bằng ogr2ogr. Xem những điều này trong QGIS, mỗi lưới có vẻ như bị đẩy lên khoảng 20 km hoặc hơn, và QGIS sẽ tự động đặt CRS thành EPSG: 3395 (không phải là CRS của dự án).

Khi tôi xuất các bảng postGIS dưới dạng shapefiles từ QGIS , tệp .prj trông giống hệt như các shapefile đã xuất ogr2ogr , nhưng các bảng đã xuất postGIS được hiển thị chính xác. Tôi nhận thấy rằng QGIS tạo tệp .qpj khi xuất shapefiles từ QGIS , vì vậy tôi đã đi đến kết luận rằng QGIS đang bỏ qua .prj và tìm kiếm một .qpj thay thế. Tại sao nó không thể đọc .prj mà không có .qpj? Các shapefile khác (chẳng hạn như các điều tra từ Tổng điều tra Hoa Kỳ) không có .qpj nhưng QGIS hiển thị chính xác những điều này.

Tôi đã đưa ra một cách giải quyết bằng cách lưu default.qpj và tạo một .qpj mới từ tệp này cho mọi tệp xuất bằng ogr2ogr, nhưng điều này có vẻ lộn xộn và rõ ràng là không thể tái tạo vì nó chỉ hoạt động cho EPSG: 3857.

Sidenote: Tôi đang sử dụng QGIS 2.0.1.

BIÊN TẬP:

Đây là lệnh ogr2ogr tôi đã sử dụng:

ogr2ogr -f "ESRI Shapefile" /home/matt/data/hex_grid_1 PG:'dbname=mydb user=matt' hex_grid_1

Nội dung của .prj:

PROJCS ["WGS_84_Pseudo_Mercator", GEOGCS ["GCS_WGS_1984", DATUM ["D_WGS_1984", SPUM, [" ["Mercator"], PARAMETER ["trung tâm ]

Nội dung của .qpj:

PROJCS ["WGS 84 / Pseudo-Mercator", GEOGCS ["WGS 84", DATUM ["WGS_1984", SPHEROID ["WGS 84", 6378137,298.257223563, AUTHORITY ["EPSG", " EPSG "," 6326 "]], PRIMEM [" Greenwich ", 0, AUTHORITY [" EPSG "," 8901 "]], UNIT [" độ ", 0,0174532925199433, AUTHORITY [" EPSG "," 9122 "] ["EPSG", "4326"]], DỰ ÁN ["Mercator_1SP"], PARAMETER ["centre_meridian", 0], PARAMETER ["scale_factor", 1], PARAMETER ["false_easting", 0], PARAMETER ["false_easting", 0] , 0], UNIT ["mét", 1, AUTHORITY ["EPSG", "9001"]], AXIS ["X", EAST], AXIS ["Y", BẮC], EXTENSION ["PROJ4", "+ proj = merc + a = 6378137 + b = 6378137 + lat_ts = 0.0 + lon_0 = 0.0 + x_0 = 0.0 + y_0 = 0 + k = 1.0 + đơn vị = m + nadgrids = @ null + wktext + no_defs "], AUTHORITY [" EPSG "," 3857 "]]

CHỈNH SỬA :

Vấn đề đã được giải quyết bằng cách chuyển đổi EPSG: 3857 thành EPSG: 2163 trong tất cả các tập lệnh của tôi. Tôi vẫn không chắc vấn đề là gì vì các lưới được hiển thị chính xác trong QGIS khi được tải ban đầu từ bảng postgreQuery (với EPSG: 3857).

Cách giải quyết của tôi tỏ ra thô thiển như tôi nghĩ, vì đồng nghiệp của tôi không thể sử dụng tệp trong ArcGIS, không đọc đúng .prj hoặc .qpj.


Bạn có thể thêm lệnh ogr2ogr không?
alphabetasoup

Bạn cũng có thể đăng nội dung của cả hai tệp .prj và .qpj không?
mkennedy

1
Có thể có những khả năng hạn chế trên "Phép chiếu Mercator Web trên một quả cầu phụ" en.wikipedia.org/wiki/Web_Mercator .. Không giống như Mercator hình elip và Mercator hình cầu, Mercator Web không hoàn toàn phù hợp do sử dụng ellipsoidal tọa độ địa lý so với một hình chiếu cầu.
huckfinn

@huckfinn Tôi đã thay đổi tất cả các EPSG: 3857 thành EPSG: 2163 trong kịch bản của tôi và vấn đề của tôi đã được giải quyết. Tôi vẫn không chắc tại sao lại như vậy vì tất cả các lưới hiển thị chính xác khi được tải từ các bảng postgreQuery với EPSG: 3857. Cảm ơn vì tiền hỗ trợ.
haff

Câu trả lời:


4

Các EPSG:3857định nghĩa là một bẩn hack để có được những dự báo rằng Google đã phát minh vào phần mềm GIS hiện đại. Đó là sự kết hợp của hình cầu và hình elip không được sử dụng bởi các phép chiếu "thông thường". Đáng tiếc, mọi phần mềm sử dụng một cách khác để điều chỉnh nó.

QGIS sử dụng tệp .qpj, ARCGIS WKT trong tệp .prj và GDAL định nghĩa proj.4. Tệp .qpj kết hợp định nghĩa proj.4 vào định nghĩa WKT.

Cách an toàn nhất để giải quyết các vấn đề như vậy là tránh Google Mercator. Bạn có thể sử dụng tốt hơn máy bay Nhà nước địa phương, UTM hoặc một số dự đoán Lambert hoặc Albers trên toàn lục địa.


Tốt để biết. Cảm ơn câu trả lời của bạn. Tuy nhiên, tôi đã nhận thấy rằng khi tôi xuất tệp hình dạng với EPSG 2163 bằng ogr2ogr, không có .qpj được tạo, nhưng QGIS vẫn đọc đúng. Vì vậy, tôi giả định rằng QGIS sẽ đọc thông tin từ một .prj trong trường hợp không có .qpj. Ngoài ra, các phép chiếu máy bay trạng thái sẽ hoạt động tốt nếu chỉ hoạt động ở một tiểu bang, nhưng các tập lệnh của tôi lấy mã fips của quận từ nhiều tiểu bang, vì vậy máy bay của tiểu bang sẽ không thực tế trong trường hợp của tôi.
haff

1
QGIS thường hoạt động tốt với tệp .prj, nhưng không phải với các tệp được chiếu của World Merctaor đến từ các phần mềm khác. CRS phù hợp nhất luôn phụ thuộc vào quy mô của khu vực nghiên cứu. EPSG 2163 sẽ ổn cho nhiệm vụ của bạn.
AndreJ
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.