博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PostGIS 坐标转换(SRID)的边界问题 - ST_Transform
阅读量:6979 次
发布时间:2019-06-27

本文共 1253 字,大约阅读时间需要 4 分钟。

标签

PostgreSQL , PostGIS , ST_Transform , SRID , 26986


背景

某个用户在使用PostgreSQL ST_Transform转换坐标时,遇到一个边界问题(暂时不清楚是不是BUG,因为对SRID还不算太了解),导致距离计算不准确。

例子

下面两个4326坐标系的坐标,只相差了一点点,但是转换为26986坐标系时,出现了翻转。

postgres=# select ST_AsEWKT(ST_Transform(ST_GeomFromText('POINT(108.50000000001 22.8)', 4326), 26986));                        st_asewkt                        -----------------------------------------------------   SRID=26986;POINT(8123333.59043839 12671815.6459695)  (1 row)    postgres=# select ST_AsEWKT(ST_Transform(ST_GeomFromText('POINT(108.5000000001 22.8)', 4326), 26986));                        st_asewkt                         ------------------------------------------------------   SRID=26986;POINT(-7723333.59044452 12671815.6459593)  (1 row)

使用转换后的坐标,计算距离,导致数据不准确。

解决方法,不要转换为26986坐标系统坐标

try this:    postgres=# select ST_Distance(ST_GeographyFromText('SRID=4326;POINT(108.51 22.8)'), ST_GeographyFromText('SRID=4326;POINT(108.499999999999999 22.79)'));  -[ RECORD 1 ]--------------------  st_distance | 1510.16913796499989    -- Geography example -- same but note units in meters - use sphere for slightly faster less accurate    -- Geometry example - units in meters (SRID: 26986 Massachusetts state plane meters) (most accurate for Massachusetts)

转载地址:http://oeypl.baihongyu.com/

你可能感兴趣的文章
linux的ftp服务器
查看>>
Mysql INSERT、REPLACE、UPDATE的区别
查看>>
oracel 不为null 保存空字符串
查看>>
函数循环的理解
查看>>
CCNA 第一章 网际互联
查看>>
mysql基于replication实现最简单的M-S主从复制
查看>>
对 Thinking in java 4th Edition I/O DirList.java的疑问
查看>>
找不到包含 OwinStartupAttribute 的程序集
查看>>
ZStack--通过Ansible实现全自动化
查看>>
Jmeter连接Oracle数据库
查看>>
unity3d中旋转
查看>>
我的友情链接
查看>>
详解 Vue & Vuex 实践
查看>>
python 库
查看>>
ls和find命令查找的一些小技巧
查看>>
OpenStack快速入门
查看>>
EOS Chain/Wallet RPC API的PHP开发包
查看>>
mysql5.6基于GTID主从复制设置
查看>>
作为程序员应有10项权利
查看>>
Django 错误汇总
查看>>