【问题标题】:geodjango returning locations in hawaii instead of lageodjango 在夏威夷而不是洛杉矶返回地点
【发布时间】:2015-08-04 05:23:58
【问题描述】:

我的地理空间查询返回远离纬度和经度坐标的位置。

这是我的模型的样子:

geometry = models.PointField(srid=4326)
geography = models.PointField(srid=3857, null= True)

我正在尝试使用地理字段,因此我可以使用米来表示距离,这就是查询的样子:

pnt = fromstr("POINT(%s %s)" % (lat, lng), srid=3857)
Location.objects.filter(geography__dwithin=(pnt, 3500)).distance(pnt).order_by('distance')[:75]

【问题讨论】:

  • 把你的 (lat, lng) 换成另一种方式,所以它是 (X, Y)
  • 您需要像这样创建点:pnt = fromstr("POINT(%s %s)" % (lng, lat), srid=4326) 然后转换为 3857。
  • 我是否将该点保存到数据库然后转换?这就是我在模型 self.geography = fromstr("POINT(%s %s)" % (self.lng, self.lat), srid=3857) 的 save 方法中生成它的方式
  • 感谢 jonaz!

标签: django postgis geodjango


【解决方案1】:

只需正确转换点这里是 django 的代码:

pnt = fromstr("POINT(%s %s)" % (self.lng, self.lat), srid=4326)
ct = CoordTransform(SpatialReference(4326), SpatialReference(3857))
pnt.transform(ct)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-14
    • 2019-03-22
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多