一、Cesium中的常用坐标介绍

1、WGS84经纬度坐标(longitude,latitude)

World Geodetic System 1984,是为GPS全球定位系统使用而建立的坐标系统。
坐标原点为本初子午线与赤道的交点。手机上的指南针显示的经纬度就是这个坐标系下的坐标,经度范围[-180,180],纬度范围[-90,90]。

在Cesium中没有实际的对象来描述WGS84坐标,都是以弧度的方式来进行运用。也就是Cartographic类

2、WGS84弧度坐标(Cartographic)

new Cesium.Cartographic(longitude, latitude, height)
//longitude弧度, latitude弧度, height米

3、笛卡尔空间直角坐标(Cartesian3)

笛卡尔空间坐标(世界坐标)的原点就是椭球的中心,我们在计算机上进行绘图时,不方便使用经纬度直接进行绘图,一般会将坐标系转换为笛卡尔坐标系,使用计算机图形学中的知识进行绘图。

new Cesium.Cartesian3(x, y, z)

4、平面坐标(Cartesian2)

平面坐标系也就是平面直角坐标系,是一个二维笛卡尔坐标系,与Cartesian3相比少了一个z的分量。Cartesian2经常用来描述屏幕坐标系,比如鼠标在电脑屏幕上的点击位置,返回的就是Cartesian2,返回了鼠标点击位置的xy像素点分量。

new Cesium.Cartesian2(x, y)

二、坐标转换

1、经纬度和弧度

经纬度转弧度:

var radians = Cesium.CesiumMath.toRadians(degrees);

弧度转经纬度:

var degrees = Cesium.CesiumMath.toDegrees(radians)

2、WGS84经纬度或弧度 转换为 笛卡尔空间直角坐标

第一种方式:直接转换:

经纬度坐标生成
var cartesian3 = Cesium.Cartesian3.fromDegrees(longitude, latitude, height) //高度height可不填写。
弧度坐标生成
var cartesian3 = Cesium.Cartesian3.fromRadians(longitude, latitude, height)

第二种方式:先转换成弧度再转换

var ellipsoid = viewer.scene.globe.ellipsoid;
var cartographic = Cesium.Cartographic.fromDegrees(lng,lat,alt); //lng经度, lat维度, alt米
var cartesian3 = ellipsoid.cartographicToCartesian(cartographic);

3、笛卡尔空间直角坐标 转换为 WGS84经纬度或弧度

第一种方式:直接转换

var cartographic= Cesium.Cartographic.fromCartesian(cartesian3)
转换得到WGS84弧度坐标系后再使用经纬度和弧度的转换,进行转换到目标值

第二种方式:间接转换

var cartographic= Cesium.Ellipsoid.WGS84.cartesianToCartographic(cartesian3)var ellipsoid = viewer.scene.globe.ellipsoid;
var cartographic = ellipsoid.cartesianToCartographic(cartesian3);var lat = Cesium.Math.toDegrees(cartograhphic.latitude);
var lng = Cesium.Math.toDegrees(cartograhpinc.longitude);
var alt = cartographic.height;

4、屏幕坐标和世界坐标相互转换

  • 平面坐标系转笛卡尔空间直角坐标系
    注意:这里屏幕坐标一定要在球上,否则生成出的cartesian对象是undefined

      1. 屏幕坐标转 场景坐标,场景坐标是包含了地形、倾斜、模型的坐标。var cartesian3= viewer.scene.pickPosition(Cartesian2),2. 屏幕坐标转 地表坐标,地球表面的坐标,包含地形,不包括模型、倾斜摄影表面。var pick1= new Cesium.Cartesian2(0,0);var cartesian = viewer.scene.globe.pick(viewer.camera.getPickRay(pick1),viewer.scene);   3. 屏幕坐标转 椭球面坐标,椭球面坐标是参考椭球的坐标,不包含地形、模型、倾斜摄影表面。var cartesian3= viewer.scene.camera.pickEllipsoid(Cartesian2)
    
  • 笛卡尔空间直角坐标系转平面坐标系

    var cartesian2 = Cesium.SceneTransforms.wgs84ToWindowCoordinates(scene, Cartesian3);
    结果是Cartesian2对象,取出X,Y即为屏幕坐标。
    

Cesium中的常用坐标及转换相关推荐

  1. cesium 经纬度绘制点_关于Cesium中的常用坐标系及说明

    Cesium是一个基于JavaScript的开源框架,可用于在浏览器中绘制3D的地球,并在其上绘制地图(支持多种格式的瓦片服务),该框架不需要任何插件支持,但是浏览器必须支持WebGL. Cesium ...

  2. Cesium中的各个坐标拾取

    1.屏幕坐标:鼠标点击位置距离canvas左上角的像素值 var handler= new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); h ...

  3. Anuglar中的常用通道-大小写转换、日期转换、小数位数、Json、slice、管道链

    场景 angular中的管道(pipe)是用来对输入的数据进行处理,如大小写转换.数值和日期格式化等. Angular介绍.安装Angular Cli.创建Angular项目入门教程: https:/ ...

  4. GIS数据处理-cesium中模型位置设置

    GIS数据处理-cesium中模型位置设置 介绍 最近我收到不少人私信询问我,在cesium中加载3dtiles模型后如何调整模型位置,这里我就统一的介绍一下,我是怎么处理的以供大家参考. 常见模型分 ...

  5. 学习【Cesium】第四篇,Cesium的坐标与转换(学不会揍我)

    Cesium坐标系 Cesium中常用的坐标有两种WGS84地理坐标系和笛卡尔空间坐标系,我们平时常用的以经纬度来指明一个地点就是用的WGS84坐标,笛卡尔空间坐标系常用来做一些空间位置变换如平移旋转 ...

  6. Cesium中的坐标系及转换

    在我们开始学习Entity之前,我们首先需要先学习下Cesium中的坐标系,Cesium中有多个坐标系,在进行添加Entity时经常会使用到. 一.坐标系介绍 我们先来列举下Cesium中的坐标系:W ...

  7. Cesium中的几种坐标和相互转换(2)

    Cesium中的几种坐标和相互转换 1.平面坐标系(Cartesian2) new Cesium.Cartesian2(x, y) 2.笛卡尔空间直角坐标系-世界坐标(Cartesian3) new ...

  8. cesium获取模型实时坐标_Cesium 顶点着色器中求解模型坐标

    1. 由世界坐标转模型坐标 顶点着色器: attribute vec3 position3DHigh; attribute vec3 position3DLow; attribute vec3 nor ...

  9. Cesium中绘制矩形,根据四角/对角坐标绘制矩形

    Cesium中绘制矩形,根据四角/对角坐标绘制矩形 import store from '@/store/index' import * as Cesium from 'cesium'export d ...

  10. 【QT小记】QT中QString与常用字符编码转换

    前言 记录在使用QString的过程中与常用字符编码的转换方法以及乱码的可能原因和解决方法 例子 字符串 编码方式 十六进制 林 Unicode 0x6797 GBK 0xC1D6 UTF8 0xE6 ...

最新文章

  1. MySQL自定义函数(CREATE FUNCTION)
  2. 奇异值分解SVD(证明全部省略)
  3. Wireshark工作笔记-TCP的状态解析,以及建立连接与关闭连接
  4. /etc/bashrc和/etc/profile
  5. 【Java】关于Java的一些基础知识点
  6. Android Studio3.2经常用的一些依赖(以后再加)
  7. oracle高压水位线,Oracle 高水位线详解(HWM)
  8. 双显卡单独分辨率_甜点光追显卡—带你实现GAMING梦!!!
  9. Win11玩永劫无间闪退怎么办?Win11玩永劫无间闪退的解决方法
  10. underscore源码学习笔记(一)
  11. 学计算机打字重不重要,怎么才能有效的学好电脑打字
  12. 学习记录:Monkey测试
  13. html图片长高如何设置,快速长高的方法 教你一个动作暴长10cm
  14. 现在AI发展到什么阶段了
  15. 解决Git出现rpc failed 问题
  16. FPGA驱动OLED Verilog代码 (五)------ 动态显示字符
  17. 【单片机】简单I/O口扩展
  18. 字母,数字,下划线或者数字的正则表达式
  19. 国内在线图表工具,你能说出几个?
  20. 考试驾照驾校软件自己测试软件

热门文章

  1. [ZT]javascript window resize 窗口改变事件
  2. Android项目实战(十):自定义倒计时的TextView
  3. chattr与lsattr命令
  4. Eclipse或者Myeclipse卡,慢的解决方法
  5. 从头开始写框架(二):孕育框架的种子_中
  6. 左右db_block_size了解和实验
  7. 面向对象软件设计原则
  8. css float用法 有关div溢出
  9. 12.统计 日志 ip
  10. 安全运维 - Linux系统攻击应急响应