编程语言
首页 > 编程语言> > python-matplotlib底图错误地绘制纬度/经度坐标

python-matplotlib底图错误地绘制纬度/经度坐标

作者:互联网

我正在尝试学习matplotlib和映射函数Basemap,并试图在地图上绘制经纬度的简单列表.但是,将底图坐标转换为简单的x / y坐标会在地图上疯狂地绘制点,我不知道为什么.我的代码如下:

locationData = parseFile(locationFile)

fig = plt.figure(figsize=(8,8))
m = Basemap(projection='merc', resolution='h',
            llcrnrlat=49, llcrnrlon=-13.5,
            urcrnrlat=59.5, urcrnrlon=4)
m.drawcoastlines()
m.drawmapboundary(fill_color='aqua')
m.fillcontinents(color='green', lake_color='aqua')

index=0
for entry in locationData:
    lat = entry["latitudeE7"]/1E7
    long = entry["longitudeE7"]/1E7
    x,y = m(lat, long)
    print("Plotting {} {} to x{} y{}".format(lat,long,x,y))
    plt.plot(x,y, 'ok', markersize=20)
    # break at 30 points for testing
    if index>30: break
    index+=1
plt.show()

这是我从print语句获得的输出:

Plotting 52.------- 1.------- to x79364--.------- y-31476--.-------
Plotting 52.------- 1.------- to x79368--.------- y-31475--.-------
Plotting 52.------- 1.------- to x79362--.------- y-31471--.-------
Plotting 52.------- 1.------- to x79361--.------- y-31472--.-------
Plotting 52.------- 1.------- to x79360--.------- y-31475--.-------
Plotting 52.------- 1.------- to x79365--.------- y-31476--.-------
Plotting 52.------- 1.------- to x79361--.------- y-31476--.-------
...

由于明显的原因,我已经检查了确切的值,但是您可以看到指向英国的52°N 1°E的预期值正偏离英国的图表.将地图扩展到整个地球仪,可以看出它正在绘制马达加斯加北海岸的测绘点.

我正在从Google定位记录下载中获取坐标,然后将它们除以10 ^ 7,因为它们存储为整数.打印语句显示这些已正确解析.

我是matplotlib和basemap的新手,并且在Windows 10上运行Python 3.6.有帮助吗?

编辑-发布我的旧代码我的错误

解决方法:

basemap documentation开始

Calling a Basemap class instance with the arguments lon, lat will convert lon/lat (in degrees) to x/y map projection coordinates (in meters). If optional keyword inverse is True (default is False), the inverse transformation from x/y to lon/lat is performed.

因此,您需要代替x,y = m(lat,long)

x,y = m(long, lat)

标签:matplotlib-basemap,python,matplotlib
来源: https://codeday.me/bug/20191012/1898654.html