我想在字图上绘制IP地址,我一直在使用带有动画的Basemap,它完全符合我的要求,但它不会全屏显示图形。
为了全屏显示,我使用pygame将世界地图(从Basemap生成)设置为背景图像,并为每个x / y添加圆圈,但是,并非所有城市都正确绘制;哥德堡和开普敦是正确的,纽约无处可寻,悉尼正在开普敦绘制。
绘图编码(米勒圆柱投影): {
map = Basemap(projection='mill', long_0=210)
map.drawcoastlines(color='blue')
map.drawmapboundary(fill_color='black')
map.fillcontinents(color='black',lake_color='black')
plt.savefig('map.png', bbox_inches='tight', pad_inches=0, dpi=200)
pygame.init()
bmap = pygame.image.load('map.png')
brect = bmap.get_rect()
size = (width, height) = bmap.get_size()
#Gothenburg
lat = 57.70812489
lng = 11.94975493
#Map size 620 x 454
lat = math.radians(lat)
lng = math.radians(lng)
xlat = (width / 2) + (width / (2 * math.pi + 0.4 * lat))
xlng = 1.25 * math.log(math.tan(0.25 * math.pi + 0.4 * lat))
xlng = (height / 2) - (height / (2 * 2.303412543)) * xlng
screen = pygame.display.set_mode(size)
screen.blit(bmap, brect)
pygame.draw.circle(screen, (250, 0, 0), [int(xlat), int(xlng)], 2)
pygame.display.flip()
}
我真的不知道哪两种方法最适合哪种方法。或者我可以考虑其他解决方案吗?