如何理解类型geometry和geography以及4326、3857坐标系

如何理解类型geometry和geography以及4326、3857坐标系一 地理坐标系和的投影坐标系 一 地理坐标系和的投影坐标系 地理坐标系 Geographic coordinate system 或称 球面坐标系 投影坐标系 Projected coordinate systems 或称 平面坐标系 二 地理信息的表示

大家好,我是讯享网,很高兴认识大家。

一、地理坐标系和的投影坐标系

一、地理坐标系和的投影坐标系
地理坐标系(Geographic coordinate system),或称 球面坐标系;
在这里插入图片描述
讯享网

投影坐标系(Projected coordinate systems)或称 平面坐标系
在这里插入图片描述

二、地理信息的表示

  1. 地理信息的表示:
    地理信息通常是以经纬度来表示,如东径多少北纬多少;但在不同的坐标系和投影标准中,表示地理信息经纬度的单位是不同的。

如:在地理坐标系中经纬度的单位是度,坐标表示为:(117. 33.);但在投影坐标系中不同的投影标准有不同的单位,如常用到的投影标准:3857以米为单位,4326以度为单位。

类型 geography 的数值单位是度,如数据(117. 33.) 表示 东径 117. 度, 北纬33.度;

但对于 geometry 类型,在 4326 投影标准中表示为 东径 117. 度, 北纬33.度,但在 3857的投影标准中则表示为东径 117. 米 北纬33.米

· 单位的差异

单位 例子 值范围限制
geography (117. 33.) 径度: 0 ~ ±180; 纬度: 0~ ±90,超出异常或负值
geometry-4326 (117. 33.) 径度: 0 ~ ±180; 纬度: 0~ ±90,超出异常或负值
geometry-3857 (.,.) 具体参照3857标准

·类型的转换
在数据库操作中通过 :: 进行类型转换时,表示只修改类型,但值不会改变,如 1::text, ‘1’::int 等
因此数据在范围(径度: 0 ~ ±180; 纬度: 0~ ±90)中的地理信息,可以直接用 :: 操作符进行geography和geometry的转换,但经过转换后实际的含义也会发生变化,如

geography geometry-4326 geometry-3857
geography 可以 可以 可以
geometry-4326 可以 可以 可以
geometry-3857 不可以 可以 可以

geography → geometry-3857

3、实际数据操作

A、经纬度转换,POINT(117.,33.6) 单位度

select
–(POINT(117.,33.6)::geography), --不能直接转换
(POINT(117.,33.6)::geometry), --没有投影标准的平面坐标系,没有单位,没有实际含义,在平面地图上不能展现
(POINT(117.,33.6)::geometry)::geography, --原值转换,在平面地图上能展现, 与实际坐标一致 不建议使用
st_setsrid(POINT(117.,33.6)::geometry, 4326), --4326 投影标准的平面坐标系,单位是度,与实际坐标一致,标准用法
st_setsrid(POINT(117.,33.6)::geometry, 3857), --3857 投影标准的平面坐标系,单位是米,在平面地图上展现与实际偏差大, 错误用法
st_setsrid(POINT(117.,33.6)::geometry, 4326)::geography, --球面坐标系,单位是度,在平面地图上正常展现
st_transform(st_setsrid(POINT(117.,33.6)::geometry, 4326), 3857) --4326转换成3857 投影标准的平面坐标系,单位是米,与实际坐标一致 标准用法

B、经纬度转换,POINT(.,.) 单位米

select
–(POINT(.,.)::geography), --不能直接转换
(POINT(.,.)::geometry), --没有投影标准的平面坐标系,没有单位,没有实际含义,在平面地图上不能展现
(POINT(.,.)::geometry)::geography, --原值后数据异常,错误用法
st_setsrid(POINT(.,.)::geometry, 4326), --4326 投影标准的平面坐标系,单位是米,在平面地图上展现与实际偏差大, 错误用法
st_setsrid(POINT(.,.)::geometry, 3857), --3857 投影标准的平面坐标系,单位是度,与实际坐标一致,标准用法
st_setsrid(POINT(.,.)::geometry, 4326)::geography, --原值后数据异常,错误用法
–st_setsrid(POINT(.,.)::geometry, 3857)::geography, --3857不能直接转成 geography; ERROR: Only lon/lat coordinate systems are supported in geography.
st_transform(st_setsrid(POINT(.,.)::geometry, 3857), 4326) --3857转换成4326 投影标准的平面坐标系,单位是度,与实际坐标一致 标准用法

4、使用地理坐标的正确姿势

通过 point::geometry、st_geogfromtext、st_geometryfromtext等方式将 坐标信息转换成 geometry 或 geography, 通常平面坐标用 geometry
确定坐标系的投影标准?以投影标准3857和4326举例,从数值上判断 POINT(.,.) 是3857, POINT(117.,33.6) 是4326,4326的经纬度单是度,情况比较特殊;实际的投影标准有很多且的值很近似,不能直接从数值进行判断
确认投影标准后,用函数 st_setsrid 设置正确的投影标准,如: st_setsrid(POINT(.,.)::geometry, 3857), st_setsrid(POINT(117.,33.6)::geometry, 4326)
投影标准转换可以通过方法 st_transform进行
坐标系的使用,根据实际场景和方法函数有参数要求进行标准转换后使用坐标值
统一地理坐标数据的投影标准

小讯
上一篇 2025-01-16 16:40
下一篇 2025-02-20 09:37

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/117799.html