Wie füge ich einer Shapefile mit Open-Source-Tools eine Projektion hinzu?

10

Ich habe einige Shapefiles OHNE Projektion erhalten. Ich muss also die Projektion hinzufügen, um sie auf Google Map anzuzeigen. Ich fand die Projektionsinformationen, die ich benötige, unter http://spatialreference.org/ref/epsg/2066 .

Frage:
Wie kann ich die Projektion mit einer Open Source-Methode hinzufügen (habe keinen Zugriff auf die ESRI-Software)?

Danke
Chris

ChrisJ
quelle

Antworten:

16

Verwenden Sie ogr2ogr von GDAL :

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

Das Schöne an ogr ist, dass es auch eine vorhandene PRJ-Datei als Eingabe verwenden kann:

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

SaultDon
quelle
2
Beim Versuch mit dem obigen Dienstprogramm wird die folgende Fehlermeldung angezeigt: "Koordinaten können nicht transformiert werden, die Quellenebene hat kein Koordinatensystem. Verwenden Sie -s_srs, um eine festzulegen."
ChrisJ
@chris Ich habe die falsche Verwendung geschrieben, also versuche a_srs, eine Ausgabeprojektion "zuzuweisen"
SaultDon
Ich wusste nicht, dass Sie -a_srs eine .prj liefern können. Vielen Dank!
Aendrew
7

Die Projektion in der .shp-Datei erfolgt in shapefilename.prj. Es handelt sich im Grunde genommen um eine Textdatei mit Informationen, die Sie gefunden haben. Schauen Sie sich einige Ihrer Formdateien an und finden Sie heraus, wie Informationen geschrieben werden. Oder weniger kompliziert, wenn Sie eine andere .shp-Datei in derselben Projektion haben, kopieren Sie sie einfach und ändern Sie den Namen entsprechend.

Tomek
quelle
Ich habe manuell eine Datei mit den Informationen erstellt, die ich online gefunden habe. Es wird jedoch immer noch nicht richtig angezeigt. Gibt es ein Dienstprogramm, mit dem ich die Projektionsdatei mit diesen Daten erstellen kann?
ChrisJ
3
Sie können auch strictreference.org verwenden, wo Sie eine .PRJ-Datei finden und herunterladen und sie dann in dasselbe Präfix wie die .SHP-Datei umbenennen können
Mike T
2

Laden Sie die PRJ-Datei unter dem von Ihnen geposteten Link herunter und benennen Sie sie entsprechend Ihrer Formdatei um.

RK
quelle
1
Dies ist wahrscheinlich auch die einfachste Methode, da keine Zwischendaten erstellt werden müssen
SaultDon
0

Im Anhang finden Sie ein kleines Skript , das die Projektionsreferenz von Spatialreference.org in eine PRJ-Datei schreibt . Es fügt allen angegebenen Dateien in einem Verzeichnis eine Projektionsdatei hinzu. Beispielsweise sorgen sich alle Shapefiles im Verzeichnis E: \ .Nur um den EPSG-Code der Projektion, die Sie einbetten möchten, die Erweiterung der Dateien, denen Sie eine Projektionsdatei hinzufügen möchten, und das Verzeichnis, in dem sich diese befinden. Es wird rekursiv alle Unterverzeichnisse durchlaufen, verwenden Sie es daher mit Vorsicht.

    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
quelle
-1

Versuchen Sie es mit Geokettle http://www.spatialytics.org/. Es liest Shapefiles und bietet die Möglichkeit, einen SRS in seine Transformationen einzufügen . Verwenden Sie andernfalls ogr2ogr gui (nur Windows), um den srid anzuzeigen

Stevetech
quelle