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

一、地理坐标系和的投影坐标系
地理坐标系(Geographic coordinate system),或称 球面坐标系;

投影坐标系(Projected coordinate systems)或称 平面坐标系

二、地理信息的表示

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

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

2、地理数据的类型:geography和geometry
在数据库中, 地理坐标系类型是 geography;投影坐标系的类型是 geometry

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

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

· 单位的差异

单位 例子 值范围限制
geography (117.435974 33.609617) 径度: 0 ~ ±180; 纬度: 0~ ±90,超出异常或负值
geometry-4326 (117.435974 33.609617) 径度: 0 ~ ±180; 纬度: 0~ ±90,超出异常或负值
geometry-3857 (13072912.8999608,3976502.86726954) 具体参照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.43597465998,33.609617443496) 单位度

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

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

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

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

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

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

  1. PostGIS 距离计算规范 - 投影 与 球 坐标系, geometry 与 geography 类型

    平面坐标,球面坐标 SRID=2369  投影坐标 SRID=4326  球面坐标 ST_Transform(ST_GeomFromText('POINT(120.08 30.96)', 4326), ...

  2. PostGIS中geometry与geography的区别

    作者:WuMY 摘要:除了geometry,PostGIS还定义了geography,用于不同的场景需求.以下通过实战对比介绍geometry与geography之间的差异.适用场景及互转方法. ge ...

  3. mysql stdistance_C#开发SQLServer的Geometry和Geography存储

    SQL Server2008推出后最大的变化就是提供了支持空间数据存储的Geometry和Geography,这个也是如果将ArcSDE和SQLServer数据库相结合后可以供用户选择的一种数据存储模 ...

  4. OpenLayers5在EPSG:4326投影坐标系下测量长度和面积

    ol/sphere里有getLength()和getArea()可以用来测量距离和区域面积,默认的投影坐标系是EPSG:3857, 其中有个options的参数,可以设置投影坐标系.使用时, 可以先把 ...

  5. SqlServer geometry 转 geography

    SQL Server 2008后就支持地理信息类型 Table中有geometry类型的一列名为geom,新增geography类型的空列名为geog update [Table] set geog ...

  6. PostgreSQL , PostGIS , 球坐标 , 平面坐标 , 球面距离 , 平面距离

    标签 PostgreSQL , PostGIS , 球坐标 , 平面坐标 , 球面距离 , 平面距离 背景 PostGIS中有两种常用的空间类型geometry和geography,这两种数据类型有什 ...

  7. Geography V.S. Geometry

    Geography V.S. Geometry Geography 和 Geometry 其实是Sq lServer 2008支持的两种空间数据类型Spatial.Geography指的是球面的数据, ...

  8. mybatis类型转换器处理PostGis数据库geometry类型转换

    在入库和查询中需要自动的让geometry的类型和实体类中的类型映射. 实体类中接收参数是String类型(geoJson) PostGis中的geometry类型是十六进制的扩展WKB类型(EWKB ...

  9. PostGIS Geography Type

    PostGIS Geography Type 地理类型为以"地理"坐标(有时称为"大地"坐标,或"lat/ lat",或"lon/ ...

最新文章

  1. thinkphp mysql 密码加密_thinkphp框架实现mysql读写分离
  2. boost::endian模块宏BOOST_SCOPED_ENUM的测试程序
  3. iOS中监测来电方案
  4. js+获取当前域名及跳转、下载操作
  5. ios开发循环网络请求_如何简化网络请求接口开发
  6. 笔记-计算机软件技术基础(一)资源管理技术-操作系统
  7. java对象gc恢复_JVM垃圾回收与对象状态
  8. hdu 1106 字符串处理
  9. 动态网站Web开发用什么语言好?PHP、ASP还是ASP.NET
  10. 老李分享:5个衡量软件质量的标准
  11. 产品经理OR售前支持
  12. 移动SI:如何开拓企业客户市场?
  13. struct的构造函数
  14. EXCEL应用:思迈特软件Smartbi数据可视化终极教程
  15. 程序员需要晓得是术语
  16. 少儿人工智能编程教育入门推荐《人工智能编程趣味启蒙-Mind+图形化编程玩转AI》
  17. SSM毕设项目校园书蜀黍易购平台xk9g6(java+VUE+Mybatis+Maven+Mysql)
  18. c语言程序设计教程博客,嵌入式C语言教程以及C编程要素
  19. Vue微信网页微信支付
  20. 中职计算机英语教学计划,中职英语基础模块1教学计划.docx

热门文章

  1. 软件工程(一)——软件开发模型和方法
  2. [已解决] 输入信号超出范围,调整为1600x900@60Hz
  3. MySQL——数据库读写分离原理
  4. 如何做一个自己的开源聊天项目?(仿微信)
  5. HBase thrift2
  6. 【LeetCode】三维型体的投影面积和表面积
  7. 高中数学立体几何知识汇总(暑假复习资料)
  8. 下列HTML标签是段落标签的是,HTML段落标签
  9. php printer 使用,printer扩张的一些使用疑问
  10. Lua程序设计 | 字符串、表、函数与IO