我正在使用 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有关,我在互联网上询问了更多关于它的信息,作为这个话题的新手,这得到了一些听说。
我正在寻找能够为我提供足够知识以继续工作的信息,例如:
- 这样做的正确方法
- 这种差异的原因
- 系统之间的差异是多少米,或者计算的正确方法是多少米
- 如何验证这个职位
- 这些信息的最佳工作方式是什么