django - ST_Transform 和 CoordTransform 之间涉及 preset 的不同计算

标签 django postgresql postgresql-9.1 postgis geodjango

我正在使用GeoDjango和Postgis,并对一个点从4326到24877进行转换,当我检查结果时,它不一样

我的值(value)观是:

Latitude -16.42238172128686
Longitude -71.47541752550751

Initial position

使用长纬度作为 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)

Position after calculus

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)

Image on sql results

正如你所看到的,geodjango 和 postgres 之间至少有 300 米的差异,这意味着不同的地方

在阅读和询问一些论坛和聊天后,我发现这与 presition 有关,我在互联网上询问了更多有关它的信息,作为这个主题的新手,这已经得到了一些了解。

我正在寻找能够为我继续研究提供足够知识的信息,例如:

  1. 正确的做法
  2. 造成这种差异的原因
  3. 系统之间的差异是多少米,或者正确的计算方法
  4. 如何验证此职位
  5. 此信息的最佳工作方式是什么

最佳答案

如果你看http://spatialreference.org/ref/epsg/24877/您可以看到 EPSG 24877 仅在 -84.0000、-10.4000、-78.0000、0.0000 之间有效,而您尝试转换的点位于该范围之外(-71.475 不在 -84、-78 内,而 -16.422 不在内) t 在-10.4,0)以内

第二个问题可能是从 WGS84 转换为 PSAD56。这里涉及到网格转移。除非您有一些数据已经存在于 PSAD56 中,否则我建议使用 WGS 84/UTM zone 19S (EPSG:32719),其边界为 -72.0000、-80.0000、-66.0000、0.0000。

如果您绝对需要 PSAD56,您可能会更幸运地使用 PSAD56/UTM zone 19S (EPSG:24879),但仍然可能存在网格移位问题。

关于django - ST_Transform 和 CoordTransform 之间涉及 preset 的不同计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17736086/

相关文章:

python - 从 Django View 类中的 URL 访问主键

python - Django 中从 sqlite 迁移到 postgresql

java - Postgres/hibernate 运算符不存在 : text = bytea

sql - 重构函数,以便它们可以在 CTE 中使用

postgresql - 连接到 amazon ec2 上的远程 postgresql 服务器

postgresql - 如何修复postgresql服务器自动重启

python - "django-admin.py makemessages -l en"将复数形式添加到输出文件

python - Django 。 ."join"查询?

django - 在 Django 中使用 Polymer

postgresql - 语法错误 - postgresql