【发布时间】:2013-07-18 03:34:06
【问题描述】:
我正在使用 GeoDjango 和 Postgis,并在从 4326 到 24877 的点上进行转换,当我检查结果时,结果不一样
我的价值观是:
Latitude -16.42238172128686
Longitude -71.47541752550751
使用 long lat 作为 x,y 坐标
In [63]: pnt = Point(-71.47541752550751, -16.42238172128686, srid=4326)
In [64]: pnt.transform(CoordTransform(SpatialReference(4326), SpatialReference(24877)))
In [65]: pnt.x, pnt.y, pnt.srid
Out[65]: (1521142.247877425, 8160547.8770980425, 24877)
逆向
In [66]: pnt = Point( 1521142.247877425,8160547.8770980425, srid=24877 )
In [67]: pnt.transform(CoordTransform(SpatialReference(24877), SpatialReference(4326)))
In [68]: pnt.x, pnt.y, pnt.srid
Out[68]: (-71.47541753138003, -16.42238165040434, 4326)
Postgres 上的 SQL
SELECT ST_AsText(ST_Transform(ST_SetSRID(ST_MakePoint(-71.47541752550751, -16.42238172128686), 4326),24877))
POINT(1520903.86571082 8160169.90886929)
从 postgis 结果中获取数据
In [69]: pgs = Point(1520903.86571082, 8160169.90886929, srid=24877)
In [70]: pgs.transform(CoordTransform(SpatialReference(24877), SpatialReference(4326)))
In [71]: pgs.x, pnt.y, pgs.srid
Out[71]: (-71.47745375612124, -16.42238165040434, 4326)
正如您所见,geodjango 和 postgres 之间存在至少 300 米的差异,这意味着不同的地方
在一些论坛和聊天中阅读并询问后,我发现这与presition有关,我在互联网上询问了更多关于这个问题的信息,作为这个话题的新手,这得到了一些听说。
我正在寻找能够为我提供足够知识以继续工作的信息,例如:
- 这样做的正确方法
- 造成这种差异的原因
- 系统之间的差异是多少米或计算该差异的正确方法
- 如何验证此职位
- 这些信息的最佳工作方式是什么
【问题讨论】:
-
正确的坐标轴顺序是经度/纬度,即:x=经度,y=纬度。此外,哪个 SRID?
28477还是24877?SELECT postgis_full_version()返回什么? -
感谢您的回答,这是一个类型写入错误,我正在寻找的 srid 是 24877
标签: django postgresql postgresql-9.1 postgis geodjango