在Geodjango应用程序中将几何点转换为纬度/经度

时间:2013-09-24 15:29:42

标签: django openlayers latitude-longitude point geodjango

我正在使用Django,Geodjango,OpenLayers和PostGIS创建一个Web地图应用程序。我想将OpenLayers底图放大到从组合框中选择的城市的位置,我想通过将纬度/经度坐标和缩放级别传递给OpenLayers来实现这一点。

我有一个视图函数,它运行带有所选城市过滤器的django查询,然后计算返回的QuerySet的质心,如下所示。

centroid = LGA.objects.get(name=lga).geom.centroid

我目前正在设置地图中心的方式是静态地使用以下代码:

var center = new OpenLayers.LonLat(133.0, -27.0).transform(
    new OpenLayers.Projection("EPSG:4326"),
    map.getProjectionObject()
    );

这些坐标是针对澳大利亚的中心,但我想使用带有Lat和Long变量的Django模板为所选城市动态设置地图中心。我不确定如何从我在视图函数中计算的质心中获取Lat和Long,或者,如果有其他方法通过传递几何而不是坐标来设置OpenLayers中的地图中心。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

啊,我想通了,这很简单。您可以通过在django查询的末尾添加“.x”或“.y”来访问Lat和Long值,如下所示:

centroid = LGA.objects.get(name=lga).geom.centroid.x

答案 1 :(得分:0)

您的几何点格式是什么?你能举个例子吗? 根据我的理解,您的几何点不在投影 EPSG:4236 (用于纬度和经度),而是其他格式(投影)对吗?通常的方法是使用 Point.transform 方法在Openlayers中转换投影,但不能在GeoDjango中计算。