学习过程中遇到的坑,搜索了半天没找到好的解决办法,最后翻API找到了方法,共享出来大家讨论借鉴。

首先,Cesium 中的坐标可分为两种情况:二维和三维,三维又有地形和模型之分;

1、二维坐标,获取椭球体表面的经纬度坐标:

var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(function(evt) {var cartesian=viewer.camera.pickEllipsoid(evt.position,viewer.scene.globe.ellipsoid);var cartographic=Cesium.Cartographic.fromCartesian(cartesian);var lng=Cesium.Math.toDegrees(cartographic.longitude);//经度值var lat=Cesium.Math.toDegrees(cartographic.latitude);//纬度值var mapPosition={x:lng,y:lat,z:cartographic.height};//cartographic.height的值始终为零。
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

2、三维坐标,获取地形表面的经纬度高程坐标:

方法一

var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(function(evt) {var ray=viewer.camera.getPickRay(evt.position);var cartesian=viewer.scene.globe.pick(ray,viewer.scene);var cartographic=Cesium.Cartographic.fromCartesian(cartesian);var lng=Cesium.Math.toDegrees(cartographic.longitude);//经度值var lat=Cesium.Math.toDegrees(cartographic.latitude);//纬度值var mapPosition={x:lng,y:lat,z:cartographic.height};//cartographic.height的值为地形高度。
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

方法二

var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(function(evt) {var ray=viewer.camera.getPickRay(evt.position);var cartesian=viewer.scene.globe.pick(ray,viewer.scene);var cartographic=Cesium.Cartographic.fromCartesian(cartesian);var lng=Cesium.Math.toDegrees(cartographic.longitude);//经度值var lat=Cesium.Math.toDegrees(cartographic.latitude);//纬度值//height结果与cartographic.height相差无几,注意:cartographic.height可以为0,也就是说,可以根据经纬度计算出高程。var height=viewer.scene.globe.getHeight(cartographic);var mapPosition={x:lng,y:lat,z:height.height};//height的值为地形高度。
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

3、三维坐标,获取模型表面的经纬度高程坐标(此方法借鉴于官方示例):

var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(function(evt) {var scene = viewer.scene;if (scene.mode !== Cesium.SceneMode.MORPHING) {var pickedObject = scene.pick(evt.position);if (scene.pickPositionSupported && Cesium.defined(pickedObject) && pickedObject.node) {var cartesian = viewer.scene.pickPosition(evt.position);if (Cesium.defined(cartesian)) {var cartographic = Cesium.Cartographic.fromCartesian(cartesian);var lng = Cesium.Math.toDegrees(cartographic.longitude);var lat = Cesium.Math.toDegrees(cartographic.latitude);var height = cartographic.height;//模型高度mapPosition={x:lng,y:lat,z:height}}}}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

Cesium 鼠标拾取椭球、地形、模型坐标点(经度+纬度+高程)相关推荐

  1. 地图坐标: 经度 纬度 解读

    坐标拾取器 - 腾讯地图// 坐标表示中 一般前面的是纬度,后面的是经度,但有些不是这样: // 纬度最大是90度,大于90度的一定是经度.// 经度 private String longitude ...

  2. cesium 鼠标点击事件获取各种坐标

    文章目录 cesium点击事件 屏幕坐标 世界坐标(也叫笛卡尔坐标Cartesian3) 场景坐标 问题列表: cesium点击事件 new Cesium.ScreenSpaceEventHandle ...

  3. PCL之鼠标拾取点云的三维坐标

    代码展示:  #include <string> #include <pcl/io/pcd_io.h> #include <pcl/point_cloud.h> # ...

  4. 通过proj4js实现不同椭球之间的坐标点的七参数转换

    一.本次转换是实现北京54地理坐标到国家2000地理坐标的转换: 1.引用proj4.js文件: <script type="text/javascript" src=&qu ...

  5. 椭球曲面拟合算法实现,matlab/C++

    椭球曲面的标准表达式:(x-x0)^2/A^2+(Y-Y0)^2/B^2+(Z-Z0)^2/C^2=R^2, 一般形式可以写为:x^2+ay^2+bz^2+cxy+dxz+eyz+f=0, 模型参数估 ...

  6. 【51单片机快速入门指南】4.4.1:python串口接收磁力计数据并进行最小二乘法椭球拟合

    目录 硬知识 Python代码 使用方法 串口收集数据 椭球拟合 验证 STC15F2K60S2 16.384MHz Keil uVision V5.29.0.0 PK51 Prof.Develope ...

  7. 不同参考系统(椭球)的坐标转换

    一.不同椭球基准的坐标转换方法之一 ①原坐标需先转换成所在椭球基准的空间直角坐标(X1, Y1, Z1) ②通过"七参转换"转换成目标所在椭球基准的空间直角坐标(X2, Y2, Z ...

  8. 【传感器】最小二乘法实现磁力计椭球校准

    总体思路 磁力计的数据在实际中是椭球的形状,在此之前使用了球体拟合进行校准,也就是简化为正球体的模型,得出的结果比较差,航向计算不准,还是需要用椭球的模型来估计偏移量,先使用标准的椭球方程,进行化简与 ...

  9. 高斯旋转热源与双椭球热源_【干货】论焊接,3D打印模拟的热源模型——焊缝、3D打印高度变换模拟...

    原标题:[干货]论焊接,3D打印模拟的热源模型--焊缝.3D打印高度变换模拟 焊接.3D打印是难度相对较高的数值模拟过程,在模拟温度场及应力场过程中,至关重要的是如何进行热源函数的建立和加载,同时配以 ...

最新文章

  1. 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录
  2. 2022-2028年中国导热硅胶行业市场研究及前瞻分析报告
  3. 对面向对象基本原则的总结
  4. 德国科学院院士:传统企业寻求变革,向智能制造靠近
  5. 快速提升网站收录量的技巧有哪些?
  6. 26.智能指针和动态内存
  7. 【小白学习PyTorch教程】十、基于大型电影评论数据集训练第一个LSTM模型
  8. mysql 连接池 100_mysql的最大连接数默认是100_MySQL
  9. ping不通Linux系统解决方法
  10. SASL讲解,以及在Spark中的应用
  11. ajax post提交数据_JavaEE学习——为什么get请求方式比post请求方式效率高
  12. 想学人工智能从哪入手?
  13. 计算机丨浏览器访问出现DNS_PROBE_POSSIBLE解决方法
  14. hibernate-annotation
  15. 计算机辅助翻译入门第十章课后答案,计算机辅助翻译简明教程
  16. 网页如何设置背景图片
  17. 《花花公子》的封面女郎,计算机图像界的女神
  18. 无root权限怎么完全卸载系统自带软件(捆绑软件)
  19. 阿里Java后端开发面经,面试官都替我感到绝望
  20. 盐城北大青鸟东台基地学员生日会 | 美好的时光里,你我同在

热门文章

  1. SQL 日期格式转换(转)
  2. JAVA毕业设计vue.js开发红酒网站计算机源码+lw文档+系统+调试部署+数据库
  3. 如何在SensorIMX178 中加入720p120fps
  4. 三维重建的研究思路与框架
  5. java 对象为空判断_java中判断对象是否为空的方法
  6. 01 Qt6.2.3播放YUV视频,使用QOpenGLWidget
  7. 业余学python数据挖掘怎么赚钱_如何在业余时学数据分析?
  8. 字母图形:利用字母可以组成一些美丽的图形,请找出这个图形的规律,并输出一个n行m列的图形。
  9. 专家视点:快手,社交新物种
  10. 手机恢复出厂设置文件怎么恢复