Ultima modifica:
Urgente: ho un codice che dato un testo estrapola i nomi delle città e ne permette la visualizzazione su mappa (utilizzato geopy e folium). Sempre con geopy ora devo memorizzare le località che trova nel testo in una lista (quindi preservando l’ordine in cui vengono trovate nel testo) e calcolare la distanza tra un elemento della lista e il precedente. Come posso fare? Help
Codice:
testo = open("Testo.txt", mode="r", encoding="UTF-8")
print(testo)
pip install geopy
pip install geopy locationtagger
import nltk
import spacy
import locationtagger
testo = open("Testo.txt", mode="r", encoding="UTF-8")
testor = testo.read()
place_entity = locationtagger.find_locations(text = testor)
print ("Città nel testo:", place_entity.cities)
import csv
listaCitta = place_entity.cities
with open("Citta.csv", "w", newline="") as Citta:
fieldnames = ["Citta"]
writer = csv.DictWriter(Citta, fieldnames=fieldnames)
writer.writeheader()
for element in listaCitta:
writer.writerow({"Citta":element})
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent = "Mappa", timeout = 2)
import pandas as pd #Importiamo la libreria Pandas con l'alias "pd"
pd.set_option("max_rows", 400)
pd.set_option("max_colwidth", 400)
def find_location(row):
Citta = row["Citta"]
location = geolocator.geocode(Citta)
if location != None:
print(location.address, location.latitude, location.longitude)
return(location.address, location.latitude, location.longitude)
else:
return "Not Found", "Not Found", "Not Found"
Citta = pd.read_csv("Citta.csv")
Citta[["address", "lat", "lon"]] = Citta.apply(find_location, axis="columns", result_type="expand")
print(Citta)
import folium
map = folium.Map([39.571625, 2.650544], zoom_start=3)
def create_markers(row, map_name):
folium.Marker(location=[row["lat"], row["lon"]], popup=row["Citta"]).add_to(map_name)
found_locations = Citta[Citta["address"] != "Not Found"]
found_locations.apply(create_markers, map_name = map, axis = "columns")
map
from geopy import distance
location1 = geolocator.geocode("Valencia")
location2 = geolocator.geocode("Pamplona")
a=(location1.latitude, location1.longitude)
b=(location2.latitude, location2.longitude)
print("La distanza tra Valencia e Pamplona è di:")
print((distance.distance(a, b).km), "km")