Comment ajouter une projection à un Shapefile à l'aide d'outils open-source?

10

On m'a donné des fichiers de formes SANS projection. J'ai donc besoin d'ajouter la projection afin de l'afficher sur google map. J'ai trouvé les informations de projection dont j'ai besoin sur http://spatialreference.org/ref/epsg/2066 .

Question:
Comment puis-je ajouter la projection en utilisant une méthode open source (je n'ai pas accès au logiciel ESRI)?

Merci
Chris

ChrisJ
la source

Réponses:

16

Utilisez ogr2ogr de GDAL :

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

Ce qui est bien avec ogr, c'est qu'il peut également utiliser un fichier PRJ existant en entrée:

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

SaultDon
la source
2
J'obtiens l'erreur suivante lorsque j'essaie l'utilitaire ci-dessus: "Impossible de transformer les coordonnées, la couche source n'a pas de système de coordonnées. Utilisez -s_srs pour en définir une."
ChrisJ
@chris J'ai écrit le mauvais usage, alors essayez a_srs pour "assigner" une projection de sortie
SaultDon
Je ne savais pas que vous pouviez fournir un .prj à -a_srs. Merci!
aendrew
7

La projection dans le fichier .shp se trouve dans shapefilename.prj. Il s'agit essentiellement d'un fichier texte, avec des informations que vous avez trouvées. Jetez un œil à certains de vos fichiers de formes et découvrez comment les informations sont écrites. Ou moins compliqué, si vous avez un autre fichier .shp dans la même projection, copiez-le et changez le nom en conséquence.

Tomek
la source
J'ai créé manuellement un fichier avec les informations que j'ai trouvées en ligne. Mais il ne s'affiche toujours pas correctement. Existe-t-il un utilitaire que je peux utiliser pour créer le fichier de projection avec ces données ??
ChrisJ
3
Vous pouvez également utiliser spatialreference.org où vous pouvez trouver et télécharger un fichier .PRJ, puis le renommer avec le même préfixe que le fichier .SHP
Mike T
2

Téléchargez le fichier .prj sur le lien que vous avez publié, puis renommez-le pour qu'il corresponde à votre fichier de forme.

RK
la source
1
c'est aussi probablement la méthode la plus simple étant donné qu'il n'est pas nécessaire de créer de données intermédiaires
SaultDon
0

Trouvez ci-joint un petit script qui écrit la référence de projection de spatialreference.org dans un fichier .prj. Il ajoute un fichier de projection à tous les fichiers spécifiés dans un répertoire. Par exemple, tous les fichiers de formes dans le répertoire E: \ .Je vous inquiétez seulement du code EPSG de la projection que vous souhaitez intégrer, de l'extension des fichiers auxquels vous souhaitez ajouter un fichier de projection et du répertoire où ils se trouvent. Il parcourra récursivement tous les sous-répertoires, donc utilisez-le avec précaution.

    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
la source
-1

Essayez d'utiliser Geokettle http://www.spatialytics.org/ il lit les fichiers de formes et a une option pour ajouter un SRS dans ses transformations. Sinon, utilisez ogr2ogr gui (windows uniquement) pour voir le srid

Stevetech
la source