Bagaimana cara menambahkan proyeksi ke Shapefile menggunakan alat sumber terbuka?

10

Saya telah diberi beberapa shapefile TANPA proyeksi. Jadi saya perlu menambahkan proyeksi untuk menampilkannya di google map. Saya menemukan informasi proyeksi yang saya butuhkan di http://spatialreference.org/ref/epsg/2066 .

Pertanyaan:
Bagaimana saya dapat menambahkan proyeksi menggunakan metode open source (tidak memiliki akses ke perangkat lunak ESRI)?

Terimakasih
Chris

ChrisJ
sumber

Jawaban:

16

Gunakan ogr2ogr dari GDAL :

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

Apa yang rapi tentang ogr adalah ia dapat menggunakan file PRJ yang ada sebagai input juga:

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

SaultDon
sumber
2
Saya mendapatkan kesalahan berikut ketika saya mencoba utilitas di atas: "Tidak dapat mengubah koordinat, lapisan sumber tidak memiliki sistem koordinat. Gunakan -s_srs untuk mengatur satu."
ChrisJ
@ Chris Saya menulis penggunaan yang salah, jadi coba a_srs untuk "menetapkan" proyeksi keluaran
SaultDon
Tidak tahu Anda bisa menyediakan .prj ke -a_srs. Terima kasih!
aendrew
7

Proyeksi dalam file .shp ada di shapefilename.prj. Ini pada dasarnya adalah file teks, dengan info yang Anda temukan. Lihatlah beberapa file bentuk Anda dan cari tahu bagaimana informasi ditulis. Atau kurang puas, jika Anda memiliki file .shp lain dalam proyeksi yang sama, cukup salin dan ganti nama secara serempak.

Tomek
sumber
Saya secara manual membuat file dengan informasi yang saya temukan online. Tapi itu masih belum ditampilkan dengan benar. Apakah ada utilitas yang dapat saya gunakan untuk membuat file proyeksi dengan data ini ??
ChrisJ
3
Anda juga dapat menggunakan spatialreference.org di mana Anda dapat menemukan dan mengunduh file .PRJ, lalu mengganti namanya menjadi awalan yang sama dengan file .SHP
Mike T
2

Unduh file .prj di tautan yang Anda poskan lalu ganti namanya agar sesuai dengan file bentuk Anda.

RK
sumber
1
ini mungkin juga merupakan metode termudah mengingat tidak perlu membuat data antara
SaultDon
0

Temukan skrip kecil terlampir yang menulis referensi proyeksi dari spatialreference.org ke dalam file .prj. Itu menambahkan file proyeksi ke semua file yang ditentukan dalam direktori. Misalnya, semua shapefile di direktori E: \. Hanya khawatir tentang kode EPSG dari proyeksi yang ingin Anda sematkan, ekstensi file yang ingin Anda tambahkan file proyeksi, dan direktori di mana ini berada. Ini akan secara rekursif melewati semua subdirektori, jadi gunakan dengan hati-hati.

    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')
Roberto Zeeland
sumber
-1

Coba gunakan Geokettle http://www.spatialytics.org/ ia membaca shapefile dan memiliki opsi untuk menambahkan SRS dalam transformasinya. Kalau tidak, gunakan ogr2ogr gui (hanya windows) untuk melihat srid

Stevetech
sumber