-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgeolocation-to-csv-kml.py
68 lines (52 loc) · 1.95 KB
/
geolocation-to-csv-kml.py
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
import os
import pandas as pd
import csv
import ipinfo
import simplekml
# Función para obtener ubicación con 'ipinfo'
def get_ubicacion_ipinfo(direccion_ip, handler):
details = handler.getDetails(direccion_ip)
return pd.DataFrame({
'Ciudad': [details.city],
'Región': [details.region],
'País': [details.country],
'Latitud': [details.latitude],
'Longitud': [details.longitude],
'ASN': [details.org],
'Direccion_ip': [direccion_ip]
})
# Inicializamos el DataFrames vacío
df_ipinfo = pd.DataFrame(
columns=['Ciudad', 'Región', 'País', 'Latitud', 'Longitud', 'ASN', 'Direccion_ip'])
# Token para 'ipinfo'
access_token = 'you_token'
handler = ipinfo.getHandler(access_token)
# Crear un objeto KML
kml = simplekml.Kml()
# Leer el archivo CSV
with open('geo.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
direccion_ip = row['direcciones']
print(f"Consultando IP: {direccion_ip}")
# Obtener ubicación con 'ipinfo' y agregar al DataFrame
ubicacion_ipinfo = get_ubicacion_ipinfo(direccion_ip, handler)
df_ipinfo = pd.concat([df_ipinfo, ubicacion_ipinfo], ignore_index=True)
# Obtener las coordenadas para el KML
latitud = ubicacion_ipinfo['Latitud'].iloc[0]
longitud = ubicacion_ipinfo['Longitud'].iloc[0]
ciudad = ubicacion_ipinfo['Ciudad'].iloc[0]
# Agregar el punto al archivo KML
kml.newpoint(name=ciudad, coords=[(longitud, latitud)])
# Ruta al archivo CSV
csv_path = 'ipinfo_resultados.csv'
# Check si el CSV existe
if os.path.exists(csv_path):
existing_df = pd.read_csv(csv_path)
df_ipinfo = pd.concat([existing_df, df_ipinfo], ignore_index=True)
df_ipinfo = df_ipinfo.drop_duplicates()
# Guardar el DataFrames en archivo CSV
df_ipinfo.to_csv(csv_path, index=False)
# Guardar el archivo KML
kml.save("ipinfo_resultados.kml")
print("Archivos CSV y KML guardados exitosamente.")