Come aggiungere una proiezione a uno Shapefile usando strumenti open source?


10

Mi sono stati dati alcuni shapefile SENZA una proiezione. Quindi devo aggiungere la proiezione per visualizzarla su google map. Ho trovato le informazioni sulla proiezione di cui ho bisogno su http://spatialreference.org/ref/epsg/2066 .

Domanda:
Come posso aggiungere la proiezione usando un metodo open source (non ho accesso al software ESRI)?

Grazie
Chris

Risposte:


16

Usa ogr2ogr da GDAL :

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

La cosa interessante di ogr è che può usare anche un file PRJ esistente come input:

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


2
Ricevo il seguente errore quando provo l'utilità sopra: "Impossibile trasformare le coordinate, il livello sorgente non ha un sistema di coordinate. Usa -s_srs per impostarne uno."
ChrisJ,

@chris Ho scritto un uso sbagliato, quindi prova a_srs per "assegnare" una proiezione in uscita
SaultDon

Non sapevo che potresti fornire un .prj a -a_srs. Grazie!
Annunciato il

7

La proiezione nel file .shp è in shapefilename.prj. È fondamentalmente un file di testo, con le informazioni che hai trovato. Dai un'occhiata ad alcuni dei tuoi file di forma e scopri come vengono scritte le informazioni. O meno complimentato, se hai altri file .shp nella stessa proiezione, basta copiarlo e cambiare il nome di conseguenza.


Ho creato manualmente un file con le informazioni che ho trovato online. Ma non viene ancora visualizzato correttamente. Esiste un'utilità che posso usare per creare il file di proiezione con questi dati ??
ChrisJ,

3
Puoi anche usare spatialreference.org dove puoi trovare e scaricare un file .PRJ, quindi rinominarlo nello stesso prefisso del file .SHP
Mike T


2

Scarica il file .prj al link che hai pubblicato e quindi rinominalo in modo che corrisponda al tuo file di forma.


1
questo è probabilmente anche il metodo più semplice dato che non è necessario creare dati intermedi
SaultDon

0

Trova in allegato un piccolo script che scrive il riferimento di proiezione da spatialreference.org in un file .prj. Aggiunge un file di proiezione a tutti i file specificati in una directory. Ad esempio, tutti i file di forma nella directory E: \ .Piuttosto preoccupati del codice EPSG della proiezione che desideri incorporare, dell'estensione dei file a cui vuoi aggiungere un file di proiezione e della directory in cui si trovano. Passerà in modo ricorsivo in tutte le sottodirectory, quindi usalo con cura.

    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

Prova a utilizzare Geokettle http://www.spatialytics.org/ , legge i file di forma e ha un'opzione per aggiungere un SRS nelle sue trasformazioni. Altrimenti usa ogr2ogr gui (solo windows) per vedere lo srid

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.