Làm thế nào để tái dự án shapefiles?


10

Tôi muốn lập lại dự án QGIS, nhưng không có lựa chọn nào như vậy. Khi tìm kiếm một câu trả lời tôi thấy được ogr2ogrđề xuất cho nhiệm vụ này, bằng cách chiếu lại từng lớp vectơ (shapefile trong ví dụ này). Tuy nhiên tôi không nhận được kết quả như mong đợi:

C:\temp>ogrinfo -al -so misc.shp
INFO: Open of `misc.shp'
      using driver `ESRI Shapefile' successful.

Layer name: misc
Geometry: Line String
Feature Count: 10
Extent: (21.267388, 42.015857) - (21.270225, 42.017470)
Layer SRS WKT:
PROJCS["MGI_Balkans_zone_7_deprecated",
    GEOGCS["GCS_MGI",
        DATUM["Militar_Geographische_Institute",
            SPHEROID["Bessel_1841",6377397.155,299.1528128]],
        PRIMEM["Greenwich",0],
        UNIT["Degree",0.017453292519943295]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",21],
    PARAMETER["scale_factor",0.9999],
    PARAMETER["false_easting",7500000],
    PARAMETER["false_northing",0],
    UNIT["Meter",1]]
id: Integer (10.0)

C:\temp>ogr2ogr -t_srs EPSG:4326 misc_re.shp misc.shp

C:\temp>ogrinfo -al -so misc_re.shp
INFO: Open of `misc_re.shp'
      using driver `ESRI Shapefile' successful.

Layer name: misc_re
Geometry: Line String
Feature Count: 10
Extent: (-34.004490, 0.000230) - (-34.004490, 0.000230)
Layer SRS WKT:
GEOGCS["GCS_WGS_1984",
    DATUM["WGS_1984",
        SPHEROID["WGS_84",6378137,298.257223563]],
    PRIMEM["Greenwich",0],
    UNIT["Degree",0.017453292519943295]]
id: Integer (10.0)

Vì vậy, tệp mới đã thay đổi hệ tọa độ địa lý, nhưng nó không được chiếu.
Làm thế nào để làm điều đó?


Bạn đang cố gắng để từ chối một shapefile? Một tệp dự án có một .qqskết thúc, một shapefile kết thúc bằng .shp. Tôi không nghĩ rằng bạn có thể dự án lại một tệp dự án nhưng tôi có thể sai.
djq

1
Tôi giả sử bạn đã biết tính năng từ chối "nhanh chóng" trong QGIS cho phép từ chối bất kỳ lớp vectơ nào.
steko

@steko: Nếu "trên đường bay" là câu trả lời của djq, vâng tôi đã biết điều đó.
zetah

1
Không, đó là một cách khác và nó sẽ thay đổi dữ liệu vĩnh viễn. Việc từ chối bay chỉ được xác định trong dự án QGIS và sẽ ảnh hưởng đến cách các lớp được trực quan hóa nhưng không chạm vào các tệp bên dưới.
steko

Cảm ơn tôi đã không biết về điều đó, và Google cho tôi biết ý của bạn là gì. Đó chính xác là những gì tôi cần. Nếu bạn chỉ có thể đăng bình luận cuối cùng của bạn ngày hôm qua ... Tôi đã gõ rất nhiều để đến đó;)
zetah

Câu trả lời:


20

Giả sử bạn muốn từ chối một shapefile, một cách bên trong QGISlà tải tệp, right-clicktrên lớp, chọn Save As…và sau đó cửa sổ sau xuất hiện:

nhập mô tả hình ảnh ở đây

Nếu bạn nhấp vào browsebên cạnh, CRSbạn có thể chọn một phép chiếu mới để lưu tệp của mình vào.

BIÊN TẬP:

Để từ chối tất cả các shapfiles trong một thư mục, một cái gì đó như thế này có thể hoạt động:

set "str1=_projected"
for %f in (E:\data\*.shp) do ogr2ogr -t_srs EPSG:4326 %str1%"misc_re.shp %f

(Tôi đã không kiểm tra này và tôi không quen với chuỗi nối trên cửa sổ, cũng không phải tôi đang giải quyết vấn đề ogr2ogr -. Nhưng đoạn mã này vòng qua một thư mục và chạy một cái gì đó trên mỗi file)


Vâng, điều đó thật tuyệt, nhưng tôi sẽ phải làm điều đó cho mọi lớp, việc này rất tốn thời gian. Bằng cách sử dụng dòng lệnh, tôi đã hy vọng lập lại tất cả các shapefile cùng một lúc (với vòng lặp for)
zetah

Có phải tất cả các shapefiles trong một thư mục?
djq

Vâng, chúng nằm trong cùng một thư mục
zetah

cảm ơn cho nỗ lực của bạn, nhưng bạn đã thực sự đọc câu hỏi của tôi?
zetah

3
vâng ... bạn không thể từ chối một tệp dự án qgis, đó là lý do tại sao tôi đưa ra câu trả lời đầu tiên của mình. Sau đó, tôi nhận ra rằng bạn muốn định hướng lại các shapefiles hàng loạt. Một cách để làm điều này là lặp qua tất cả các tệp trong một thư mục bằng cách sử dụng dòng lệnh với ogr (một cách khác là để xem liệu bạn có thể truyền ogr một thư mục của shapefiles không).
djq
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.