Toma como entrada un arivo llamado citys.txt con el formato "codigo postal, nombre ciudad".
Y devuelve un archivo con las coordenadas, y la provincia entre otras cosas.
import urllib import urllib2 import string from xml.dom import minidom import unicodedata def remove_accents(str): nkfd_form = unicodedata.normalize('NFKD', unicode(str)) only_ascii = nkfd_form.encode('ASCII', 'ignore') return only_ascii def get_text(arbol): return arbol.firstChild.data def es_el_que_busco(arbol): adds = arbol.getElementsByTagName('type') for a in adds: if get_text(a) == "administrative_area_level_1": return 1 return 0 def provincia(arbol): adds = arbol.getElementsByTagName('address_component') for a in adds: if es_el_que_busco(a) == 1: return get_text(a.getElementsByTagName('long_name')[0]) return "" def get_coordenadas(arbol): location = arbol.getElementsByTagName('location')[0] lat = get_text(location.getElementsByTagName('lat')[0]) lng = get_text(location.getElementsByTagName('lng')[0]) return (lat,lng) f = open("citys.txt", "r") ciudades = [] while True: linea = f.readline() if not linea: break ciudades.append( (linea[:4],linea[6:len(linea) - 2 ] ) ) f = open('coordenadas.txt', 'a') o = urllib2.build_opener() for ciudad in ciudades: ss = 'http://maps.googleapis.com/maps/api/geocode/xml?address=' + ciudad[1].replace(" ","%20") + '%20ARGENTINA&sensor=false' res = o.open(ss) pagina = res.read() arbol = minidom.parseString(pagina) if arbol.getElementsByTagName("status")[0].firstChild.data == "OK": c = get_coordenadas(arbol) p = provincia(arbol) f.write(ciudad[0] + "," + ciudad[1] + "," + remove_accents(p) + "," + str(c[0])+ "," + str(c[1]) + "\n" ) print (ciudad[0] + "," + ciudad[1] + "," + remove_accents(p) + "," + str(c[0])+ "," + str(c[1]) ) else: print (ciudad[1] + " No encontrado") f.close()
La idea del codigo es que aprendan como se maneja el minidom Javascript de python y su aplicacion en google. Supongo que no van a tener problema para modificar la entrada o la salida del programa.
No hay comentarios:
Publicar un comentario