| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> GIS开发中关于常用坐标系转换的问题(以Unity和MapBox为例) -> 正文阅读 |
|
[游戏开发]GIS开发中关于常用坐标系转换的问题(以Unity和MapBox为例) |
前言在进行GIS开发的过程中,对于地理数据的可视化因为国内外各个主流的开发包或者第三方地图插件所使用的坐标系并不统一再加上精确度等问题,使得数据坐标位置的匹配成为一个难点,这里根据相关资料和自己掌握的内容,对常用坐标系以及转换进行简单介绍,并以Mapbox和Unity为例,将经纬度与unity世界坐标的转换进行了代码实现。 一、常用坐标系GIS开发过程中我们常接触到的坐标系主要有三类:地理坐标系、平面投影坐标系和空间直角坐标系,以下基于此进行介绍,并对unity中坐标系进行说明。 1.1 地理坐标系简单来说,地理坐标系就是用经纬度来表示地面点位的球面坐标系,单位是度,其中又可分为地心坐标系和参心坐标系。 1.1.1 地心坐标系以地球质心为原点建立的空间直角坐标系,或以球心与地球质心重合的地球椭球面为基准面所建立的大地坐标系。 1.1.2 参心坐标系参心坐标系是以参考椭球的几何中心为原点的大地坐标系,参心大地坐标系可以通过高斯投影计算转化为平面直角坐标系。 1.2 平面投影坐标系简单来说,就是按照一定的数学法则(投影类型)将经纬网投影到平面上,得到基于X、Y值来表示地面点位的坐标系统,单位通常是米,按照投影的类型又可分为若干投影坐标系,投影方法很多,以下仅介绍几种常用投影坐标系,墨卡托投影、高斯-克吕格投影,UTM投影、兰伯特等角投影。 1.2.1 墨卡托投影一种等角正切圆柱投影,假设把地球(椭球体)放在一个圆柱里,标准纬线与圆柱相切,然后再假想地球中心有一光源,将球面上的图形投影到圆柱上,再把这个圆柱体展开就是标准纬线的墨卡托投影。保证了方向和角度的正确性,但是离标准纬线越远。纬线的间隔会越大形状变形越严重。 1.2.2 UTM投影全称为“通用横轴墨卡托投影”,一种等角横轴割圆柱投影。椭圆柱割地球于南纬80度、北纬84度,中央经线的长度比为0.9996,投影后两条相割的经线没有变形。所有距离、方向、形状和面积在中央经线的 15o 范围内都相当准确。然而,在15°频带之外,横向墨卡托投影在尺寸、距离和方向方面的失真显著增加。横向墨卡托投影是保形的,形状在小区域中是真实的。 1.2.3 高斯-克吕格投影又名"等角横切圆柱投影”,中央经线的长度不变,也是横轴墨卡托投影的变种。这种投影在长度和面积上变形都很小,且计算简便,被广泛用在大比例尺地形图的绘制上。 圆柱投影在真实展现整个地球方面较为适用,墨卡托投影是流行的导航选择,横轴墨卡托投影是大比例尺制图的理想选择。 1.2.4 兰勃特等角圆椎投影设想用一个正圆锥切于或割于球面,应用等角条件将地球面投影到圆锥面上,然后沿一母线展开成平面。投影后纬线为同心圆圆弧,经线为同心圆半径。没有角度变形,经线长度比和纬线长度比相等。适于制作沿纬线分布的中纬度地区中、小比例尺地图。我国1:100万地形图采用兰勃特投影。 与圆柱地图不同,圆锥地图投影通常不适合绘制全球级的大尺度区域,更适合绘制大陆和区域地图。 1.3 空间直角坐标系也是unity中使用的三维坐标系,使用X,Y,Z值来表示空间中的点位,可以和经纬度坐标系进行转换,平面投影坐标系和空间直角坐标系都属于笛卡尔坐标系统。。 1.4 unity坐标系1.4.1 世界坐标unity中的世界坐标就是在unity世界中的三维坐标,使用左手坐标系。其中transform.Position 是指在整个unity世界中的位置坐标 ,transform.LocalPosition 是相对于父对象位置的坐标 即局部坐标 1.4.2 屏幕坐标以屏幕左下角为坐标原点,,向上为Y轴正方向,向右为X轴正方向,其Z轴坐标是相机的世界坐标中Z轴的负值。 1.4.3 视口坐标系将屏幕坐标参数标准化,其Z轴坐标是相机的世界坐标中Z轴的负值,表示深度。 1.4.4 GUI坐标系原点在左上角,属于二维坐标系,Z值永远为0 二、坐标系间的转换2.1 常用第三方地图使用的坐标系底层接口(HTML5 Geolocation或ios、安卓API)通过GPS设备获取的坐标使用的是WGS-84坐标系,即原始坐标数据,国内对WGS-84数据进行了严格限制,因此国内常用地图坐标系都或多或少存在着偏差; 2.2 常用坐标转换2.2.1几种常用投影坐标系与WGS84的转换坐标转换详细Python代码入口 2.2.2 球面坐标与笛卡尔坐标的转换球面坐标转换成原点位于地球中心的笛卡尔坐标(α,β,r)→(x,y,z): 三、mapbox经纬度坐标与unity坐标的互相转换主要为Mapbox相关函数的调用,具体函数内容可以在MapBox查看到。 3.1 屏幕坐标转经纬度(1)主要代码
(2)WorldToGeoPosition详细代码
3.2 经纬度转世界坐标(1)主要代码
(2)详细代码
四、结束语博客内容主要为自己搜集资料总结,加深自己对这部分理论的理解,不能保证完全正确,仅供参考,若有错误之处,敬请指正!
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/17 4:01:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |