¿Cómo agregar una proyección a un Shapefile usando herramientas de código abierto?

10

Me han dado algunos archivos de forma SIN una proyección. Entonces necesito agregar la proyección para mostrarla en el mapa de Google. Encontré la información de proyección que necesito en http://spatialreference.org/ref/epsg/2066 .

Pregunta:
¿Cómo puedo agregar la proyección usando un método de código abierto (no tengo acceso al software de ESRI)?

Gracias
Chris

ChrisJ
fuente

Respuestas:

16

Utilice ogr2ogr de GDAL :

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

Lo bueno de ogr es que también puede usar un archivo PRJ existente como entrada:

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

SaultDon
fuente
2
Recibo el siguiente error cuando pruebo la utilidad anterior: "No se pueden transformar las coordenadas, la capa de origen no tiene un sistema de coordenadas. Utilice -s_srs para establecer una".
ChrisJ
@chris Escribí el uso incorrecto, así que intente con a_srs para "asignar" una proyección de salida
SaultDon
No sabía que podía proporcionar un .prj a -a_srs. ¡Gracias!
aendrew
7

La proyección en el archivo .shp está en shapefilename.prj. Básicamente es un archivo de texto, con la información que encontraste. Eche un vistazo a algunos de sus archivos de formas y descubra cómo se escribe la información. O menos cumplido, si tiene otro archivo .shp en la misma proyección, simplemente cópielo y cambie el nombre según corresponda.

Tomek
fuente
Creé manualmente un archivo con la información que encontré en línea. Pero todavía no se muestra correctamente. ¿Hay alguna utilidad que pueda usar para crear el archivo de proyección con estos datos?
ChrisJ
3
También puede usar spatialreference.org donde puede encontrar y descargar un archivo .PRJ, luego cambiarle el nombre al mismo prefijo que el archivo .SHP
Mike T
2

Descargue el archivo .prj en el enlace que publicó y luego cámbiele el nombre para que coincida con su archivo de forma.

RK
fuente
1
Este también es probablemente el método más fácil dado que no es necesario crear ningún dato intermedio
SaultDon
0

Encuentra adjunto un pequeño script que escribe la referencia de proyección desde spatialreference.org en un archivo .prj. Agrega un archivo de proyección a todos los archivos especificados en un directorio. Por ejemplo, todos los archivos de forma en el directorio E: \. Simplemente preocúpese por el código EPSG de la proyección que desea incrustar, la extensión de los archivos a los que desea agregar un archivo de proyección y el directorio donde están. Recorrerá recursivamente todos los subdirectorios, así que úselo con cuidado.

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

Intente utilizar Geokettle http://www.spatialytics.org/ , lee archivos de forma y tiene la opción de agregar un SRS en sus transformaciones. De lo contrario, use ogr2ogr gui (solo Windows) para ver la cuadrícula

Stevetech
fuente