-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconversor.py
More file actions
195 lines (125 loc) · 5.94 KB
/
Copy pathconversor.py
File metadata and controls
195 lines (125 loc) · 5.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
__author__ = 'Ariel Anthieni'
'''
Created on 20/04/2015
'''
#Cargo las librerias
import xml.dom.minidom
class txttoxml():
'''
Esta clases se encarga de convertir un txt separado por un caracter especificado a xml
'''
def __init__(self):
'''
Constructor
'''
"""Funcion para procesar los datos de un txt y convertirlo a xml
Parametros
filesource: Nombre del archivo de origen
filedestination: Nombre del archivo de destino
separator: string que separa etiqueta de elemento
"""
def toxml(self, filesource, filedestination, separator = "="):
#Obtenemos los datos del archivo de metadatos
f=open(filesource, "r")
#Leemos el archivo y lo cortamos en renglones
lines=f.read().split("\n")
#Creamos el diccionario
metadatos_origen={}
#Recorremos el archivo y guardamos los terminos que estan separados con el string pasado
#y que no son vacios
for line in lines:
line = line.replace ('"','')
if len(line.strip()) > 0 and line.rfind(separator)> 0:
clave = line.split(separator)[0]
valor = line.split(separator)[1]
metadatos_origen[clave.strip(" ")]=valor.strip(" ")
#Imprimo el diccionario
print(metadatos_origen)
#Cierro el archivo
f.close()
#################################################################################
## Generacion de campos combinado
#################################################################################
#Para productos landsat 8
try:
metadatos_origen['DATE_INSTANT']= metadatos_origen['DATE_ACQUIRED']+'T'+metadatos_origen['SCENE_CENTER_TIME'].strip("Z")
metadatos_origen['FILE_DATE']= metadatos_origen['FILE_DATE'].strip("Z")
metadatos_origen['CORNER_UL']= metadatos_origen['CORNER_UL_LAT_PRODUCT']+' '+metadatos_origen['CORNER_UL_LON_PRODUCT']
metadatos_origen['CORNER_UR']= metadatos_origen['CORNER_UR_LAT_PRODUCT']+' '+metadatos_origen['CORNER_UR_LON_PRODUCT']
metadatos_origen['CORNER_LL']= metadatos_origen['CORNER_LL_LAT_PRODUCT']+' '+metadatos_origen['CORNER_LL_LON_PRODUCT']
metadatos_origen['CORNER_LR']= metadatos_origen['CORNER_LR_LAT_PRODUCT']+' '+metadatos_origen['CORNER_LR_LON_PRODUCT']
except:
print( "No existen campos de origen para Landsat8 combinar en este metadato")
#Para productos ciudades 2013
try:
metadatos_origen['Key']= metadatos_origen['Province']+' , '+metadatos_origen['City']
metadatos_origen['obs']= 'Las Imagenes del Satelite Spot 5 para este producto poseen fecha ' + metadatos_origen['Start'] + ' y del Satelite Landsat 8 la fecha ' + metadatos_origen['StartAux']
except:
print( "No existen campos de origen para ciudades combinar en este metadato")
#################################################################################
## Creacion del xml a partir del diccionario generado
#################################################################################
dom = xml.dom.minidom.Document()
x = dom.createElement("Metadata") # creo el principal
dom.appendChild(x) #agrego el primer hijo
#recorro el diccionario generando con la clave la etiqueta y asignandole el valor
for elemento in metadatos_origen.items():
x = dom.createElement(elemento[0])
txt = dom.createTextNode(elemento[1])
x.appendChild(txt)
dom.childNodes[0].appendChild(x) #agrega el hijo al primer hijo
#imprimo el XML
print(dom.toxml())
#Abro el archivo para escritura XML
f = open(filedestination, "w")
#Escribo el archivo XML
f.write(dom.toprettyxml())
#Cierro el archivo XML
f.close()
"""Funcion incluir datos al xml generado
Parametros
filesource: Nombre del archivo a modificar
dataraster: diccionario de elementos a insertar
"""
def includedataxml(self, filesource, dataraster):
#parseo el xml a incluir
dom = xml.dom.minidom.parse(filesource)
#recorro el diccionario generando con la clave la etiqueta y asignandole el valor
for elemento in dataraster.items():
x = dom.createElement(elemento[0])
txt = dom.createTextNode(elemento[1])
x.appendChild(txt)
dom.childNodes[0].appendChild(x) #agrega el hijo al primer hijo
#imprimo el XML
#print(dom.toxml())
#Abro el archivo para escritura XML
f = open(filesource, "w")
#Escribo el archivo XML
f.write(dom.toprettyxml())
#Cierro el archivo XML
f.close()
def metadataxml(self, filesource, dataciudad, dataraster):
#Creamos la esctructura xml
dom = xml.dom.minidom.Document()
x = dom.createElement("Metadata") # creo el principal
dom.appendChild(x) #agrego el primer hijo
#recorro el diccionario generando con la clave la etiqueta y asignandole el valor
for elemento in dataciudad.items():
x = dom.createElement(elemento[0])
txt = dom.createTextNode(elemento[1])
x.appendChild(txt)
dom.childNodes[0].appendChild(x) #agrega el hijo al primer hijo
#recorro el diccionario generando con la clave la etiqueta y asignandole el valor
for elemento in dataraster.items():
x = dom.createElement(elemento[0])
txt = dom.createTextNode(elemento[1])
x.appendChild(txt)
dom.childNodes[0].appendChild(x) #agrega el hijo al primer hijo
#imprimo el XML
#print(dom.toxml())
#Abro el archivo para escritura XML
f = open(filesource, "w")
#Escribo el archivo XML
f.write(dom.toprettyxml())
#Cierro el archivo XML
f.close()