在地图上绘制数据点

plot data points on map

尝试从名为 test_gps.csv 的 CSV 文件在地图上绘制 gps 坐标时出现错误:

ValueError: Some errors were detected !
    Line #1 (got 2 columns instead of 2)
    Line #2 (got 2 columns instead of 2)
    ...

我的代码是:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

airports = np.genfromtxt("test_gps.csv",
                         delimiter=';', 
                         dtype=[('lat', np.float32), ('lon', np.float32)], 
                         usecols=(1, 2))

fig = plt.figure()

themap = Basemap(projection='gall',
              llcrnrlon = -15,             
              llcrnrlat = 28,               
              urcrnrlon = 45,               
              urcrnrlat = 73,               
              resolution = 'l',
              area_thresh = 100000.0,
              )

themap.drawcoastlines()
themap.drawcountries()
themap.fillcontinents(color = 'gainsboro')
themap.drawmapboundary(fill_color='steelblue')

x, y = themap(airports['lon'], airports['lat'])
themap.plot(x, y, 
            'o',                    
            color='Indigo',         
            markersize=4            
            )

plt.show()

CSV 的格式为:

-344.586.792;-585.306.702
-314.071.598;-641.856.689
-3.435.215;-587.938.194
-346.999.893;-583.838.615
-517.951.889;-594.954.567
-517.951.889;-594.954.567
474.808.006;97.561.398

我尝试将数据格式更改为其他扩展名和分隔符,但我仍然得到相同的 error.Any 想法我做错了什么?!谢谢

这是因为 usecols 中的索引从 0 而不是 1 开始。并且代码期望另一列读取数据并抛出错误。

代码中的此更改能够读取值。

airports = np.genfromtxt("test_gps.csv",
                     delimiter=';', 
                     dtype=[('lat', np.float32), ('lon', np.float32)], 
                     usecols=(0, 1))

另外请尝试将 .csv 文件中的值更改为只有一位小数,因为这些值被读取为 nan,如果它有两位小数。