Географическое отображение фолиума приводит к TypeError: должно быть действительным числом, а не str, пока - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть масса координат, хранящихся в 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/ Я получу то же сообщение об ошибке обратно.

...