0

我有大量坐标存储在 XML 文件中。它们在 Python 中进行解析并存储到 Pandas DataFrame 中,我想用它来将所有这些坐标映射到地图上。

整个解析工作正常,即使 DataFrame 是正确的。我试图通过 AUR 安装 folium,但同样的错误。

#!/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>

我想要达到的是,我将所有这些坐标映射为地图上的点。但是没有得到 Folium 的 QT 窗口,堆栈跟踪中只有以下消息:

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

我不知道堆栈跟踪的实际原因在哪里。即使我从这里尝试原始示例:https ://georgetsilva.github.io/posts/mapping-points-with-folium/ 我也会收到相同的错误消息。

4

0 回答 0