PostGIS 坐标转换(SRID)的边界问题 - ST_Transform

简介:

标签

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坐标系统坐标

http://postgis.net/docs/manual-2.0/ST_Distance.html

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)  
目录
相关文章
|
SQL 关系型数据库 数据库
|
小程序
TDesign电商小程序模板解析01-自定义底部导航栏(二)
TDesign电商小程序模板解析01-自定义底部导航栏(二)
|
机器学习/深度学习 人工智能 算法
【数据挖掘】2022年2023届秋招奇虎360机器学习算法工程师 笔试题
本文提供了奇虎360公司2022年秋招机器学习算法工程师岗位的笔试题内容,包括选择题和编程题,涉及概率统计、数据结构、机器学习、计算机组成原理等多个领域。
268 5
|
算法 数据挖掘 索引
【数据挖掘】2022年2023届秋招Kanaries雾角科技算法岗 笔试题
本文介绍了2022年Kanaries雾角科技算法岗位的笔试题目,涵盖了LeetCode和牛客网的题目,包括字符串处理、几何问题、矩阵操作、数组搜索、二叉树遍历、幂运算及概率计算等多种算法题目,并提供了部分题目的Python代码实现。
239 1
|
存储 算法 数据挖掘
【数据挖掘】2022年京东算法工程师笔试题(23届)
2022年京东面向23届的算法工程师笔试题,包含了关于MySQL内部存储代码的优势、SQL使用、数学问题、ReLU函数特性、栈操作以及F1-Score计算等方面的问题。
442 0
yyyy-MM-dd'T'HH:mm:ss.SSSZZ和yyyy-MM-dd'T'HH:mm:ss.SSSXXX之间的区别
【5月更文挑战第7天】yyyy-MM-dd'T'HH:mm:ss.SSSZZ和yyyy-MM-dd'T'HH:mm:ss.SSSXXX之间的区别
1619 0
|
XML 数据格式
日志文件logback.xml配置文件超简单(含中文注释)
这是我个人用到的logback.xml,我自己手写。
1288 0
日志文件logback.xml配置文件超简单(含中文注释)
|
安全 Linux Docker
制作 Python Docker 镜像的最佳实践
制作 Python Docker 镜像的最佳实践
基于C#的ArcEngine二次开发34:使用ConstructUnion方法进行多要素合并(上)
基于C#的ArcEngine二次开发34:使用ConstructUnion方法进行多要素合并
基于C#的ArcEngine二次开发34:使用ConstructUnion方法进行多要素合并(上)
|
前端开发 定位技术 Python
GIS开发:分享osm切片计算
GIS开发:分享osm切片计算
452 0