2022-01-24 cesium中的坐标转

2022-01-24  本文已影响0人  MrSwilder

1.cesium中的常用坐标系统

笛卡尔平面坐标(Cartesian2)

new Cesium.Cartesian2(x, y)

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

new Cesium.Cartesian3(x, y, z)

地理坐标(Cartographic)

注:默认弧度

new Cesium.Cartographic(longitude, latitude, height)

屏幕坐标(Cartographic)

2.实践中获取坐标

  1. 获取鼠标点在屏幕中的坐标
// 获取画布
var canvas = viewer.scene.canvas;

var mouseHander = new Cesium.ScreenSpaceEventHandler(canvas);

// 绑定鼠标左点击事件
mouseHander.setInputAction(function (event){
    // 获取鼠标点的windowPosition
    var windowPosition = event.position;
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);)

2.屏幕坐标转换为笛卡尔空间直角坐标

var ray = viewer.camera.getPickRay(windowPosition);

var cartesian = viewer.scene.globe.pick(ray, viewer.scene);
  1. 三维笛卡尔空间直角坐标转换为地理坐标
    3.1 三维笛卡尔空间直角坐标转换为地理坐标(弧度)
var ellipsoid=viewer.scene.globe.ellipsoid;

var cartographic=ellipsoid.cartesianToCartographic(cartesian);

3.2三维笛卡尔空间直角坐标转换为地理坐标(经纬度)

var ellipsoid=viewer.scene.globe.ellipsoid;

var cartographic=ellipsoid.cartesianToCartographic(cartesian);

var lat=Cesium.Math.toDegrees(cartographic.latitude);
var lng=Cesium.Math.toDegrees(cartographic.longitude);
var alt=cartographic.height;

4.地理坐标转换为三维笛卡尔空间直角坐标
4.1.经纬度转换为笛卡尔空间直角坐标

# Cesium.Cartesian3.fromDegrees(longitude, latitude, height, ellipsoid, result)
var position = Cesium.Cartesian3.fromDegrees(-115.0, 37.0);

4.2 弧度转化为笛卡尔空间直角坐标

var ellipsoid=viewer.scene.globe.ellipsoid;
var cartographic=Cesium.Cartographic.fromDegrees(lng, lat, alt);
var cartesian = ellipsoid.cartographicToCartesian(cartographic);
  1. 笛卡尔空间直角坐标转换为屏幕坐标
var pick = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, cartesian);

常见的其他转换

  1. 三维笛卡尔坐标转换为二维笛卡尔坐标
Cesium.Cartesian2.fromCartesian3(cartesian, result)

2.弧度与经纬度的相互转换
2.1 经纬度转换为弧度

Cesium.Math.toRadians(degrees) 

2.2 弧度转换为经纬度

Cesium.Math.toDegrees(radians)
上一篇 下一篇

猜你喜欢

热点阅读