如何使用GeoDjango创建HTML世界地图?

时间:2010-06-05 18:04:29

标签: python html django gis geodjango

GeoDjango tutorial解释了如何将世界边界插入空间数据库。

我想使用这些数据创建包含maparea标记的HTML世界地图。 Something like that

我只是不知道如何检索每个国家/地区的坐标(area的{​​{1}}属性所需)。

coords

谢谢!

2 个答案:

答案 0 :(得分:0)

在worldborders示例中,属性mpoly是实际存储地理多边形的位置。

在您的示例中,您将要访问v.mpoly

您无法直接使用它,因为mpoly本身就是MultiPolygon field。考虑像加拿大这样拥有一堆岛屿的国家,每个岛屿和主要陆地都是多边形。因此,要获得您的要点以及加拿大边境的完整描述,您需要:

  1. 迭代多边形内的多边形。每个多边形对应一个区域(因此,在每个国家/地区的一个区域的示例中,您的假设是错误的。)
  2. 迭代每个polygon内的点。
  3. point坐标(纬度/经度)转换为svg图形使用的坐标。

答案 1 :(得分:0)

要在SVG中使用lat / lon,需要将它们投影到像素(x / y)空间。简单的转换可能如下所示:

>>> x = (lon + 180) / 360 * image_width
>>> y = (90 - lat) / 180 * image_height

对于image_width == 2 * image_height的图片,这会在发布的链接上显示类似地图的内容(看起来像equirectangular projection)。

要使用其他投影(例如Mercator),请在应用变换之前使用GeoDjango中的GEOSGeometry.transform方法。