如何用GeoDjango创建HTML世界地图?
GeoDjango教程讲解了如何将世界边界数据插入到空间数据库中。
我想用这些数据在HTML中创建一个世界地图,使用map
和area
标签。就像这个例子。
不过我不知道怎么获取每个国家的坐标(这是area
标签的coords
属性所需要的)。
from world.models import WorldBorders
for country in WorldBorders.objects.all():
print u'<area shape="poly" title="%s" alt="%s" coords="%s" />' % (v.name, v.name, "???")
谢谢!
2 个回答
0
要在SVG中使用经纬度,你需要把它们转换成像素坐标(x/y)。一个简单的转换方法可能是这样的:
>>> x = (lon + 180) / 360 * image_width
>>> y = (90 - lat) / 180 * image_height
如果你的图片宽度是高度的两倍(image_width == 2 * image_height
),那么你得到的效果就像链接中展示的地图(看起来像是等距矩形投影)。
如果你想使用其他类型的投影(比如墨卡托投影),可以在应用转换之前,使用GeoDjango中的GEOSGeometry.transform方法。