我一直在按照用户pelson的说明创建一个填充国家/地区形状的地图。 (Fill countries in python basemap)
现在我很想知道如何更进一步并创建一个像这样的html网站: http://www.ethnologue.com/region/NEU 我不需要那些花哨的弹出窗口,但每个国家的那些链接(http://www.w3schools.com/tags/att_area_href.asp)将是非常好的。 是否可以使用cartopy创建坐标列表? 我正在寻找一个生成静态html文件的全自动脚本。
答案 0 :(得分:3)
是的,这绝对是可能的,但是如果你正在制作基于网络的地图,那么你可能值得看看D3.js(特别是地图上看到这个优秀的教程http://bost.ocks.org/mike/map/)。
然而,对于cartopy,我将逐步介绍它,因为它是matplotlib和cartopy中转换系统的一个很好的演练。
首先,我们可以得到图中任意点的像素坐标:
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
ax = plt.axes(projection=ccrs.PlateCarree())
ax.set_global()
ax.coastlines()
# Define a transformation which takes latitude and longitude values,
# and returns pixel coordinates.
ll_to_pixel = ccrs.Geodetic()._as_mpl_transform(ax)
# We need to call draw to ensure that the axes location has been defined
# fully.
plt.draw()
# Now lets figure out the pixel coordinate of Sydney.
x_pix, y_pix = ll_to_pixel.transform_point([151.2111, -33.8600])
# We can even plot these pixel coordinates directly with matplotlib.
plt.plot(x_pix, y_pix, 'ob', markersize=25, transform=None)
plt.savefig('figure_1.png', dpi=plt.gcf().get_dpi())
plt.show()
现在我们已经掌握了编写代码以生成区域地图所需的信息,我已经用它来写完整的注释(< 80行)。我已将此作为一个要点(https://gist.github.com/pelson/6308997)发布,以便您可以查看并随意使用,如果您愿意的话。有关结果的实时演示:https://rawgithub.com/pelson/6308997/raw/map.html