On Miércoles 13 Abril 2011 14:40:19 Oscar Fonts escribió: > Iván, mira a ver si puedes aprovechar algo y me dices.
A ver si puedo hacer algo con mi propio script en python para parsear los .cat... y aprender GIT a marchas forzadas. -- ---------------------------------- Iván Sánchez Ortega <[email protected]> <[email protected]> http://ivan.sanchezortega.es MSN:[email protected] Jabber:[email protected] ; [email protected] IRC: ivansanchez @ OFTC & freenode
# -*- coding: utf-8 -*- # Parser para ficheros CAT de Catastro # Básicamente es la especificación de los campos, metida a capón para extraer subcadenas del fichero .cat # @author <[email protected]> filename = "Catastro_SantaEugeniaDeBerga/Urbana/08_246_U_2011-01-30.CAT" # Itera sobre las líneas del fichero for line in open(filename,'r'): tipoRegistro = int(line[0:2]) if tipoRegistro == 1: entidadGeneradoraTipo = line[2:2+1] # Siempre "G" de Gerencia entidadGeneradoraCodigo = line[3:3+9] entidadGeneradoraNombre = line[12:12+27] # FIXME: parsear correctamente fecha y hora ficheroFechaGeneracion = line[39:39+8] # YYYYMMDD ficheroHoraGeneracion = line[47:47+6] # HHMMSS ficheroTipo = line[53:53+4] # CCAT (Información de fincas de Catastro) ficheroDescripcion = line[57:57+39] ficheroNombre = line[96:96+21] ficheroEntidadDestinaria = line[117:117+3] # Código print "Cabecera:" print " Entidad generadora: %s - %s - %s" % (entidadGeneradoraTipo, entidadGeneradoraCodigo, entidadGeneradoraNombre) print " Info fichero: %s - %s - %s - %s - %s - %s" % (ficheroFechaGeneracion, ficheroHoraGeneracion, ficheroTipo, ficheroDescripcion, ficheroNombre, ficheroEntidadDestinaria) print elif tipoRegistro == 11: idDelegacionMEH = int(line[23:23+2] ) idMunicipio = int(line[25:25+3] ) # Según DGC idParcela = line[30:30+14] domicilioProvinciaCodigo = int(line[50:50+2]) domicilioProvinciaNombre = line[52:52+25] domicilioMunicipioCodigoDGC = int(line[77:77+3]) # Según DGC domicilioMunicipioCodigoINE = int(line[80:80+3]) # Según INE, sin dígito de control domicilioMunicipioNombre = line[83:83+40] domicilioEntidadMenor = line[123:123+30] domicilioViaCodigo = int(line[153:153+5]) # Según DGC, se usa para cruzarlo con shape de ejes y de parcelas domicilioViaTipo = line[158:158+5] domicilioViaNombre = line[163:163+25] domicilioNumeroPolicia1 = int(line[188:188+4]) # Se usa para cruzarlo con el shape de parcelas domicilioNumeroPolicia1Letra = line[192:192+1] # a, b, c, etc, como en 12a, 12b, 12c. Se usa para cruzarlo con el shape de parcelas domicilioNumeroPolicia2 = int(line[193:193+4]) domicilioNumeroPolicia2Letra = line[197:197+1] domicilioKilometro = int(line[198:198+5]) / 100.0 # tres enteros, dos decimales domicilioBloque = line[203:203+4] domicilioDirNoEstructurada = line[215:215+25] domicilioCodigoPostal = int(line[240:240+5]) domicilioDistrito = line[245:245+2] domicilioMunicipioAgregado = int(line[247:247+3]) # Código de municipio origen en agregaciones domicilioZonaConcentracion = line[250:250+2] domicilioPoligono = line[252:252+3] domicilioParcela = line[255:255+5] domicilioParajeCodigo = line[260:260+5] domicilioParajeNombre = line[265:265+30] fisicoSuperficieFinca = int(line[295:295+10]) # En metros cuadrados fisicoSuperficieConstruida = int(line[305:305+7] ) # En metros cuadrados fisicoSuperficieSobreRasante = int(line[312:312+7] ) # En metros cuadrados fisicoSuperficieBajoRasante = int(line[319:319+7] ) # En metros cuadrados fisicoSuperficieCubierta = int(line[326:326+7] ) # En metros cuadrados fisicoCoordenadaX = int(line[333:333+9] ) / 100.0 # UTM, dos decimales sin separador fisicoCoordenadaY = int(line[342:342+10]) / 100.0 # UTM, dos decimales sin separador biceReferencia = line[581:581+20] biceDenominacion = line[601:601+65] fisicoCoordenadaEPSG = line[666:666+10] print "Finca" print " ID %s - %s - %s" % (idDelegacionMEH, idMunicipio, idParcela) print " Provincia/municipio: %s - %s - %s - %s - %s - %s" % (domicilioProvinciaCodigo, domicilioProvinciaNombre, domicilioMunicipioCodigoDGC, domicilioMunicipioCodigoINE, domicilioMunicipioNombre, domicilioEntidadMenor) print " Via/número policía: %s - %s - %s - %s - %s - %s - %s - %s - %s" % (domicilioViaCodigo, domicilioViaTipo, domicilioViaNombre, domicilioNumeroPolicia1, domicilioNumeroPolicia1Letra, domicilioNumeroPolicia2, domicilioNumeroPolicia2Letra, domicilioKilometro, domicilioBloque) print " CP/distrito/etc: %s - %s - %s - %s - %s" % (domicilioDirNoEstructurada, domicilioCodigoPostal, domicilioDistrito, domicilioMunicipioAgregado, domicilioZonaConcentracion ) print " Poligono/Parcela/Paraje: %s - %s - %s - %s" % (domicilioPoligono, domicilioParcela, domicilioParajeCodigo, domicilioParajeNombre) print " Superficie: %s - %s - %s - %s - %s" % (fisicoSuperficieFinca, fisicoSuperficieConstruida, fisicoSuperficieSobreRasante, fisicoSuperficieBajoRasante, fisicoSuperficieCubierta) print " Coordenadas: %s,%s @ %s" % (fisicoCoordenadaX, fisicoCoordenadaY, fisicoCoordenadaEPSG) #print line #print "---"
_______________________________________________ Spanish mailing list http://lists.osgeo.org/mailman/listinfo/spanish http://es.osgeo.org http://twitter.com/osgeoes
