GeoDjango,用于PointField与Google Maps V3 API接口的SRID是什么?

use*_*703 9 django google-maps postgis geodjango google-maps-api-3

我有点困惑,我应该在我的GeoDjango PointField中设置我的SRID值,以便在地址通过谷歌地图api进行地理编码的情况下保持准确到坐标和通过django-postgis查询的距离?

我得到了混合意见阅读网络和堆栈流程的线程,我不确定该怎么做.正如您所看到的,我的应用程序使用geopy和google maps api来对地址进行地理编码.现在我的坐标字段没有SRID集,默认为4326,即(EPSG:4326).现在显然,这将地球视为地球仪,而不是平坦的地面.

根据以下问题的东西,如谷歌地图的答案使用(EPSG 3857),这显然有900913.的SRID https://gis.stackexchange.com/questions/48949/epsg-3857-or-4326-for-谷歌地图,OpenStreetMap的和小叶

那么这是否意味着我应该将我的SRID设置为900913?我所有的餐厅模型的坐标都使用地理编码器以下面看到的相同方法保存.我会这么认为.

现在,这是我得到揭去,下面的教程http://invisibleroads.com/tutorials/geodjango-googlemaps-build.html使用pointfield与他们的SRID设置为4326(默认)和他们的标志点完全出现在谷歌地图.

目前我的查询非常准确但仍然感觉有点偏.

感谢帮助,谢谢!

from geopy.geocoders import GoogleV3
from django.contrib.gis.geos import *
from django.contrib.gis.measure import D

geo = GoogleV3()
def home_page(request):
distance = 3680
address, coordinates = geo.geocode('Swanston Street, Melbourne Australia')
ref_location = Point(coordinates)
query = Restaurant.objects.filter(restaurant_location__distance_lte=(ref_location, D(m=distance))).distance(ref_location).order_by('distance')
    return render(request, 'swings/home.html', {'restaurants': query})
Run Code Online (Sandbox Code Playgroud)

餐厅模特

class Restaurant(models.Model):
    name = models.CharField(max_length=25, blank=False)
    user = models.ForeignKey(User)
    address = models.CharField(max_length=50, blank=False)
    restaurant_location = models.PointField(null=False, blank=False)
    objects = models.GeoManager()

    def __str__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

Joh*_*ell 22

您应该使用4326(这意味着纬度和经度,使用WGS84基准面和椭球体来模拟地球的形状)来向Google地图添加点数.记录您在地球上的位置的GPS等设备将在4326中保存数据,然后在Google地图内部将数据投影到3857(以米为单位).如果您查看加载GeoJSON示例,您将看到这些点位于4326.

900913(这只是GOOGLE在计算器编写中)引起了很多混乱,并且出现了这样一个事实,即最初EPSG对于他们认为是不准确的投影非常嗤之以鼻,主要是因为它假设世界是一个球体.无论如何,它变得流行,因为谷歌的全球突出性和数学易处理性.随后,EPSG给它一个新的官方名称3857(技术上还有另一个,3587,只是为了引起更多的混乱).所以,虽然人们仍然在谈论900913,但正式你应该使用3587. 3587以米为单位投影并用于生成瓷砖以便在谷歌地图中显示,但不应该用它来添加点源,你绝对想要使用4326 .

如果您想了解更多关于此历史的文章,请点击此处:http://alastaira.wordpress.com/2011/01/23/the-google-maps-bing-maps-spherical-mercator-projection /