У меня есть масса координат, хранящихся в XML-файле.Они анализируются в Python и сохраняются в Pandas DataFrame, который я хочу использовать для отображения всех этих координат на карте.
Весь синтаксический анализ работает, даже DataFrame корректен.Я пытался установить фолиум через AUR, но та же ошибка.
#!/usr/bin/env python
import pandas as pd
import requests
from xml.etree import ElementTree
import numpy as np
import folium
xml_data = "coords.xml"
tree = ElementTree.parse(xml_data)
counter = tree.find('counter')
id = []
name = []
latitude = []
longitude = []
for c in tree.findall('counter'):
id.append(c.attrib['id'])
name.append(c.find('name').text)
latitude.append(c.find('latitude').text)
longitude.append(c.find('longitude').text)
df_counters = pd.DataFrame(
{'ID' : id,
'Name' : name,
'latitude' : latitude,
'longitude' : longitude
})
df_counters.head()
locations = df_counters[['latitude', 'longitude']]
locationlist = locations.values.tolist()
map = folium.Map(location=[47.3, 5.2], zoom_start=10)
for point in range(0, len(locationlist)):
folium.Marker(locationlist[point], popup=df_counters['Name'][point]).add_to(map)
map
Анализированный XML-файл выглядит следующим образом:
<counter id="10084">
<name>DSC_00458.JPG</name>
<latitude>47.4340525</latitude>
<longitude>8.208285</longitude>
</counter>
<counter id="10085">
<name>DSC_01287.JPG</name>
<latitude>47.3563725</latitude>
<longitude>12.449092499999999</longitude>
</counter>
Я хочу достичь того, чтобы я отобразил все эти координаты в виде точек на карте.Но вместо того, чтобы получить QT-окно Folium, в stacktrace есть только следующее сообщение:
Traceback (most recent call last):
File "./map.py", line 40, in <module>
folium.Marker(locationlist[point], popup=df_counters['Name'][point]).add_to(map)
File "/home/rtfm/.local/lib/python3.7/site-packages/folium/map.py", line 252, in __init__
self.location = _validate_coordinates(location)
File "/home/rtfm/.local/lib/python3.7/site-packages/folium/utilities.py", line 39, in _validate_coordinates
if _isnan(coordinates):
File "/home/rtfm/.local/lib/python3.7/site-packages/folium/utilities.py", line 65, in _isnan
return any(math.isnan(value) for value in _flatten(values))
File "/home/rtfm/.local/lib/python3.7/site-packages/folium/utilities.py", line 65, in <genexpr>
return any(math.isnan(value) for value in _flatten(values))
TypeError: must be real number, not str
Я не могу понять, где настоящая причина для stacktrace.Даже если я попробую оригинальный пример отсюда: https://georgetsilva.github.io/posts/mapping-points-with-folium/ Я получу то же сообщение об ошибке обратно.