29 votos

¿Definición de proyecciones para múltiples shapefiles en ArcMap?

Tengo más de 100 archivos de forma que no tienen archivo .prj y por lo tanto cuando los traigo a ArcMap 10 muestran el sistema de coordenadas como desconocido. Sé que el sistema de coordenadas de todos los archivos shape es GCS WGS 1984. También sé que puedo utilizar la herramienta Definir Proyección GP para asignar individualmente el sistema de coordenadas a cada archivo, pero eso tomará una eternidad.

Esperaba que hubiera una herramienta de GP para definirlas por lotes, pero no la veo. Luego pensé que tal vez podría usar python para hacer esto, así que busqué en el menú de ayuda y encontré un script, pero me da un error.

Aquí está el código python que probé (esto es para un solo archivo shp por lo que todavía tendría el dolor de escribir el nombre para cada archivo:

import arcpy
infc = r"C:\Documents and Settings\User\My Documents\ArcGIS\shpfiles\Site_2.shp"
prjfile = r"<install directory>\Coordinate Systems\Geographic Coordinate Systems\World\WGS 1984.prj"
arcpy.DefineProjection_management(infc, prjfile)

1voto

Sarah Jamie Lewis Puntos 141

Esto es lo que yo uso... sólo definirá la proyección para los archivos rasterizados que no tienen una proyección. Espero que sea de ayuda. También crea una lista de los archivos sin proyección para fines de control de calidad.

Para sus vectores sólo necesita un ligero mod - FileList=arcpy.ListFeatureClasses()

# Defines projection for all rasters with undefined projection
# CAUTION - make sure you know that the projection you are defining is the correct one
# for all files in the current directory.

#Licence: Creative Commons
#Created by: George Corea; georgec@atgis.com.au, coreagc@gmail.com

import arcpy, glob, os, sys, arcgisscripting
from arcpy import env, mapping
path = os.getcwd()
env.workspace = path
env.overwriteOutput = True

print 'Reading files from ' + path
os.chdir(path)
prjFile=r'C:\\Python26\\GDA_1994_MGA_Zone_55.prj'

x=0
z=x+1
NoProjCount=0
FileList= arcpy.ListRasters()
for File in FileList:
    desc = arcpy.Describe(File)
    SR = desc.spatialReference
    if SR.name == "Unknown":
        print "Projection of " + str(File) + " is " + SR.name + " so defining projection."
        f = open('NoProjection.txt', 'a')
        f.write(str(File)+"\n")
        f.close()
        arcpy.DefineProjection_management(File, prjFile) 
        NoProjCount=NoProjCount+1
    else:    
        print File + " is projected " + str(SR.name)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X