Unity3d Gis 坐标转换
最近在做unity3d与Gis结合的项目,最基本的就是坐标的转换问题,比如把经纬度为(166.23.9.27 , 39.55.15.74) 转换到unity里面成相应的位置点,废话不多说 上代码:
using UnityEngine;
using System.Collections; public class SaiGetLatLog : MonoBehaviour { public Transform firstPoint; //Unity中左上点
public Transform secondPoint;//Unity中右下点 public SaiEarth firstSai;//地图中对应的左上经纬度点
public SaiEarth secondSai;//地图中对应的右下经纬度点 private float z_offset,x_offset,z_w_offset,x_w_offset; private RaycastHit rayHit; // Use this for initialization
void Start () {
InitBasicNum ();//初始化参数
} // Update is called once per frame
void Update () {
if (Input.GetMouseButton () && Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out rayHit, Mathf.Infinity)) { print ( getWorldPoint(firstSai).x+","+ getWorldPoint(firstSai).z); }
} void InitBasicNum()
{ firstSai = new SaiEarth (new Vector3 (116f, 23f, 9.27f), new Vector3 (39f, 55f, 15.74f));
secondSai = new SaiEarth (new Vector3(116f,23f,44.39f),new Vector3(39f,54f,44.27f)); z_offset = Mathf.Abs ((firstSai.latitude.x+firstSai.latitude.y/+firstSai.latitude.z/) - (secondSai.latitude.x+secondSai.latitude.y/+secondSai.latitude.z/));//地图中的维度差
x_offset = Mathf.Abs ((firstSai.longitude.x+firstSai.longitude.y/+firstSai.longitude.z/)-(secondSai.longitude.x+secondSai.longitude.y/+secondSai.longitude.z/));//地图中的经度差 z_w_offset = Mathf.Abs (firstPoint.localPosition.z - secondPoint.localPosition.z);//unity中的维度差
x_w_offset = Mathf.Abs (firstPoint.localPosition.x - secondPoint.localPosition.x);//unity中的经度差 } Vector3 getWorldPoint(SaiEarth se)//由经纬度得到位置点
{ float tempX = (float)(se.longitude.x + se.longitude.y / + se.longitude.z / - (secondSai.longitude.x + secondSai.longitude.y / + secondSai.longitude.z / ));
float tempZ = (float)(se.latitude.x + se.latitude.y / + se.latitude.z / - (secondSai.latitude.x + secondSai.latitude.y / + secondSai.latitude.z / )); float _tempX = (float)(tempX * x_w_offset / x_offset + secondPoint.localPosition.x);
float _tempZ = (float)(tempZ * z_w_offset / z_offset + secondPoint.localPosition.z); return new Vector3((float)_tempX,0f,(float)_tempZ); } SaiEarth getLatLon(Vector3 curPoint)//由位置点得到经纬度
{
SaiEarth tempEarth = new SaiEarth(); float _z_offset = Mathf.Abs (curPoint.z - secondPoint.localPosition.z) * z_offset / z_w_offset;
float _x_offset = Mathf.Abs (curPoint.x - secondPoint.localPosition.x) * x_offset / x_w_offset; float resultX = _x_offset + (secondSai.longitude.x + secondSai.longitude.y/ + secondSai.longitude.z/);
float resultZ = _z_offset + (secondSai.latitude.x + secondSai.latitude.y/ + secondSai.latitude.z/); tempEarth.longitude = new Vector3 ((int)resultX, (int)((resultX - (int)resultX)*),((resultX - (int)resultX)* - (int)((resultX - (int)resultX)*))*);
tempEarth.latitude = new Vector3 ((int)resultZ, (int)((resultZ - (int)resultZ)*),((resultZ - (int)resultZ)* - (int)((resultZ - (int)resultZ)*))*); return tempEarth; } }
上面有一个SaiEarth的类,其实写的很简单:
using UnityEngine;
using System.Collections; public class SaiEarth { public Vector3 longitude;
public Vector3 latitude; public SaiEarth()
{ } public SaiEarth(Vector3 longitude,Vector3 latitude)
{
this.latitude = latitude;
this.longitude = longitude;
} public string toString()
{
return "Lat:"+this.latitude + ",Long:" + this.longitude;
}
}
来源:http://blog.csdn.net/saide6000/article/details/26992945
Unity3d Gis 坐标转换的更多相关文章
- GDAL坐标转换
一.引言 最近研究了一下GIS.测绘学的坐标转换的问题,感觉大部分资料专业性太强,上来就是一通专业性论述:但感觉对于相关从业者来说,其实不必了解那么多背景知识的:就通过GDAL这个工具,来简单总结下坐 ...
- 从三十而立的迷茫,到30K
很标题党的标题,但是希望分享一下自己的经历,一份有点儿不寻常的经历. 12年创业,到17年末,举步维艰,没有项目,公司只剩下两个人,负债,现实给我这个每见过什么市面,却自命不凡的人狠狠的一个耳光.加上 ...
- GIS空间参考及坐标转换
空间参考(Spatial Reference)是 GIS 数据的骨骼框架,能够将我们的数据定位到相应的位置,为地图中的每一点提供准确的坐标. 在同一个地图上显示的地图数据的空间参考必须是一致的,如果两 ...
- gis空间分析案例_7参数单坐标转换
gis空间分析案例_7参数单坐标转换 商务科技合作:向日葵,135-4855__4328,xiexiaokui#qq.com 功能: 对输入的单个坐标,利用7参数,一步进行坐标变换,使用极为直观,极大 ...
- Android GIS开发系列-- 入门季(7) 利用GeometryEngine坐标转换、计算距离与面积等
GeometryEngine是Arcgis的重要工具类,利用此工具类,可以计算地图上的距离.面积,将点.线.面转化为Json数据,将Json转化为点线面,坐标转换作用非常强大. 一.坐标转化 将用到方 ...
- 分享:Unity3D模型跟随鼠标移动功能的小脚本 (屏幕坐标和三维空间坐标转换)
using UnityEngine; using System.Collections; public class ModelsPosChange : MonoBehaviour { RaycastH ...
- HTML5 网络拓扑图整合 OpenLayers 实现 GIS 地图应用
在前面<百度地图.ECharts整合HT for Web网络拓扑图应用>我们有介绍百度地图和 HT for Web 的整合,我们今天来谈谈 OpenLayers 和 HT for Web ...
- 去百度API的百度地图准确叠加和坐标转换的解决方案研究
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 目前项目上如果要使用百度地图,得加载百度的开发包,然后通过百 ...
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(二)鹰眼模块
讲解GIS功能模块实现之前,先大概说一下flexviewer的核心配置文件config.xml,系统额GIS功能widget菜单布局.系统的样式.地图资源等等都是在这里配置的,这里对flexviewe ...
随机推荐
- React.js 小书 Lesson11 - 配置组件的 props
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson11 转载请注明出处,保留原文链接和作者信息. 组件是相互独立.可复用的单元,一个组件可能在不 ...
- Programmer Competency Matrix--ref--http://sijinjoseph.com/programmer-competency-matrix/
Note that the knowledge for each level is cumulative; being atlevel n implies that you also know eve ...
- AndroidManifest.xml配置文件详解(转载)
AndroidManifest.xml配置文件详解 2013-01-05 10:25:23 分类: Android平台 AndroidManifest.xml配置文件对于Android应用开发来说是 ...
- C# url获取图片流转字符串
//http url获取图片流转字符串 //string url = serverUrl.TrimEnd('/') + PUrl; //WebRequest request = WebRequest. ...
- LINQ和.NET数据访问
.NET数据访问 在.NET中对于数据的访问大致有三个层面,数据访问层.内存数据集.业务逻辑层.数据层,包括了XML配置文件以及一些常用的数据库(使用SQL语句):内存数据集,主要是DataSet数据 ...
- HDU 5012 骰子旋转(DFS)
http://acm.hdu.edu.cn/showproblem.php?pid=5012 保存骰子的状态,然后用dfs或者bfs搜索 还是再讲一下dfs 我们的目标是找一个与b相同,且转次数最少的 ...
- drupal对数据库操作
// nodenode_load($nid = NULL, $vid = NULL, $reset = FALSE);node_load_multiple($nids = array(), $cond ...
- MySQL远程连接:Host 'x' is not allowed to connect to this MySQL server
远程连接MySQL时发现如下错误: java.sql.SQLException: null, message from server: "Host '192.168.30.23' is no ...
- JDE获取所有字典数据
select a.*,b.DTDL01 FROM crpctl.f0004 a,crpctl.f0004d b where a.dtsy =b.dtsy(+) and a.dtrt =b.dtrt(+ ...
- JSTL格式化标签库
导入标签库需要使用taglib指令! <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/forma ...