Làm cách nào để thêm phép chiếu vào Shapefile bằng các công cụ nguồn mở?


10

Tôi đã được đưa ra một số shapefiles KHÔNG CÓ chiếu. Vì vậy, tôi cần thêm phép chiếu để hiển thị nó trên google map. Tôi tìm thấy thông tin chiếu tôi cần tại http://spatialreference.org/ref/epsg/2066 .

Câu hỏi:
Làm cách nào tôi có thể thêm phép chiếu bằng phương thức nguồn mở (không có quyền truy cập vào phần mềm của ESRI)?

Cảm ơn
Chris

Câu trả lời:


16

Sử dụng ogr2ogr từ GDAL :

ogr2ogr -a_srs EPSG:2066 output.shp input.shp

Điều thú vị về ogr là nó cũng có thể sử dụng tệp PRJ hiện có làm đầu vào:

ogr2ogr -a_srs input.prj output.shp input.shp


2
Tôi gặp lỗi sau khi thử tiện ích ở trên: "Không thể chuyển đổi tọa độ, lớp nguồn không có hệ tọa độ. Sử dụng -s_srs để đặt một."
ChrisJ

@chris Tôi đã viết sai cách sử dụng, vì vậy hãy thử a_srs để "gán" một phép chiếu đầu ra
SaultDon

Không biết bạn có thể cung cấp .prj cho -a_srs. Cảm ơn!

7

Phép chiếu trong tệp .shp nằm trong shapefilename.prj. Nó về cơ bản là tập tin văn bản, với thông tin bạn tìm thấy. Hãy xem một số tệp hình dạng của bạn và tìm hiểu cách thông tin được viết. Hoặc ít được khen ngợi hơn, nếu bạn có tệp .shp khác trong cùng một phép chiếu, chỉ cần sao chép nó và thay đổi tên accordinagly.


Tôi đã tự tạo một tệp với thông tin tôi tìm thấy trên mạng. Nhưng nó vẫn không được hiển thị chính xác. Có tiện ích nào tôi có thể sử dụng để tạo tệp chiếu với dữ liệu này không ??
ChrisJ

3
Bạn cũng có thể sử dụng spatialreference.org nơi bạn có thể tìm và tải xuống tệp .PRJ, sau đó đổi tên thành tiền tố tương tự như tệp .SHP
Mike T


2

Tải xuống tệp .prj tại liên kết bạn đã đăng và sau đó đổi tên tệp để khớp với tệp hình dạng của bạn.


1
đây có lẽ cũng là phương pháp đơn giản nhất mà không cần tạo bất kỳ dữ liệu trung gian nào
SaultDon

0

Tìm một tập lệnh nhỏ đính kèm tham chiếu chiếu từ spatialreference.org vào tệp .prj. Nó thêm một tệp chiếu vào tất cả các tệp được chỉ định trong một thư mục. Chẳng hạn, tất cả các shapefile trong thư mục E: \. Hãy lo lắng về mã EPSG của phép chiếu mà bạn muốn nhúng, phần mở rộng của các tệp bạn muốn thêm tệp chiếu vào và thư mục chứa các tệp này. Nó sẽ đệ quy đi qua tất cả các thư mục con, vì vậy hãy cẩn thận khi sử dụng.

    import os

    def getWKT_PRJ (epsg_code):
     import urllib.request, urllib.parse, urllib.error

    # Access projection information
     wkt = urllib.request.urlopen("http://spatialreference.org/ref/epsg/{0}/prettywkt/".format(epsg_code))
     decoded = (wkt.read().decode('utf-8')) 

    # Remove spaces between charachters
     remove_spaces = decoded.replace(" ","")        
    # Place all the text on one line
     output = remove_spaces.replace("\n","")
     return output

    def referencer(folder_path, extension):
        for path, subdirs, files in os.walk(folder_path):
            for name in files:
                file_extension = os.path.splitext(name)[-1]
                if(extension in file_extension):
                    file_path = os.path.join(path,name)
                    file_name = os.path.splitext(file_path)[0]
                    prj = file_name + ".prj"
                    projection = open(prj,"w")
                    projection.write(epsg)
                    projection.close()

    epsg = getWKT_PRJ("25831")              
    referencer('E:\Testfolder', '.shp')

-1

Hãy thử sử dụng Geok Ấm http://www.spatialytics.org/ nó đọc shapefiles và có một tùy chọn để thêm SRS trong các biến đổi của nó. Nếu không, hãy sử dụng ogr2ogr gui (chỉ cửa sổ) để xem srid

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.