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 运维 搜索推荐
《揭秘,阿里开源自研搜索引擎Havenask的在线检索服务》
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了Havenask的在线检索服务,它具备高可用、高时效、低成本的优势,帮助企业和开发者量身定做适合业务发展的智能搜索服务。
85638 138
|
7月前
|
人工智能 自然语言处理 监控
Gartner 2025 AI曲线揭示:驾驭周期波动的选型战略
Gartner《2025生成式AI技术成熟度曲线》揭示:市场正从泡沫期迈向“生产力爬升”。企业选型需超越技术炫技,聚焦可衡量的商业价值。本文以三大核心维度——复合AI架构、AI就绪数据转化、生产力平台成熟度,穿透评估万数科技、即搜AI等主流GEO服务商,为企业提供穿越周期的理性决策地图,锚定确定性增长。
621 5
|
小程序
TDesign电商小程序模板解析01-自定义底部导航栏(二)
TDesign电商小程序模板解析01-自定义底部导航栏(二)
|
弹性计算 前端开发 JavaScript
前端开发基础2:VS Code和Edge的联动开发
介绍edge tools, live server两个常用插件的用法。
|
API 开发者
提供一份 1688 商品详情接口的错误码及解决方法
本文介绍了 1688 商品详情接口常见的错误码及其解决方法,包括 401(未授权)、403(禁止访问)、404(未找到)、429(请求过多)和 500/502/504(服务器错误)。详细说明了每个错误码的含义及相应的解决步骤,帮助开发者快速定位并解决问题。
|
数据安全/隐私保护
访问云效的仓库地址会提示403,这是什么问题啊
访问云效的仓库地址会提示403,这是什么问题啊
1184 2
|
Java jenkins 应用服务中间件
nginx启动、停止和重启(一)
nginx启动、停止和重启
1534 0
|
网络协议 安全 Go
【Go语言专栏】Go语言中的WebSocket编程
【4月更文挑战第30天】本文介绍了在Go语言中使用WebSocket进行实时Web应用开发的方法。通过第三方包`gorilla/websocket`,开发者可建立WebSocket服务器和客户端。文中展示了如何创建服务器,升级HTTP连接,以及处理读写消息的示例代码。同时,客户端的创建和通信过程也得以阐述。文章还提及WebSocket的生命周期管理、性能与安全性考虑,以及实践中的最佳做法。通过学习,读者将能运用Go语言构建高效、实时的Web应用。
1200 0
|
机器学习/深度学习 存储 弹性计算
阿里云服务器X86计算、ARM计算、GPU/FPGA/ASIC等架构区别及选择参考
在我们选购阿里云服务器的时候,云服务器架构有X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、超级计算集群之分,很多初次接触阿里云服务器的用户并不知道他们之间有何区别,本文来介绍一下阿里云服务器各个架构的特点及适用场景,以供大家了解他们之间的区别,从而对选择哪种架构做一个参考。
2413 2
阿里云服务器X86计算、ARM计算、GPU/FPGA/ASIC等架构区别及选择参考
|
存储 NoSQL Java
如何使用Spring Boot与Redis集成
2月更文挑战第12天】
975 0