Cesium-常用坐标转换

本文介绍了Cesium中常用的坐标转换函数,包括从经纬度弧度/度数到Cartesian3,从Cartesian3到窗口位置,再从窗口位置反推出经纬度。还涉及到Cartesian3到Cartographic和反之的转换,以及高度处理。这些转换在3D场景渲染和交互中至关重要。
摘要由CSDN通过智能技术生成

Cesium常用坐标转:

    //lat lon radians to cartesian3
	__viewer.getCartesian3FromRadians = function (lng, lat, height) {
		var cartesian3 = Cesium.Cartesian3.fromRadians(lng, lat, height) //lng\lat为弧度制
		return cartesian3;
	}

	//lat lon to cartesian3
	__viewer.getCartesian3FromDegrees  = function (lng, lat, height) {
		var cartesian3 = Cesium.Cartesian3.fromDegrees(lng, lat, height)
		return cartesian3;
	}
	

	//cartesian3 to windows positions
	__viewer.getWindowsPositionByCartesian3 = function (cartesian3) {
		var windowPosition = Cesium.SceneTransforms.wgs84ToWindowCoordinates(__viewer.scene, cartesian3);
		return windowPosition;
	}

	//windows positions to cartesian3
	__viewer.getCoordinateByWindowsPosition = function (windowsPosition) {
		var ray = __viewer.camera.getPickRay(windowsPosition);
		var cartesian3 = __viewer.scene.globe.pick(ray, __viewer.scene);
        
        //__viewer.scene.pickPosition(movement.position);
        // if use scene.pickPosition, need to set follow config:
        //__viewer.scene.globe.depthTestAgainstTerrain = true;

		var cartographic = Cesium.Cartographic.fromCartesian(cartesian3);
		var lat = Cesium.Math.toDegrees(cartographic.latitude);
		var lon = Cesium.Math.toDegrees(cartographic.longitude);
		return { lat: lat, lon: lon };
	}

	//cartesian3 to cartographic
	__viewer.getCartographicFromCartesian3 = function (cartesian3) {
		var cartographic = Cesium.Cartographic.fromCartesian(cartesian3);
		//Cesium.Ellipsoid.WGS84.cartesianToCartographic(position);
		//var ellipsoid=viewer.scene.globe.ellipsoid;
		return cartographic;
	}

	//cartographic to cartesian3
	__viewer.getCartesian3FromCartographic = function (cartographic) {
		var cartesian3 = Cesium.Ellipsoid.WGS84.cartographicToCartesian(cartographic);
		return cartesian3;
	}

	//cartesian3 to coordinate
	__viewer.getCoordinateFromCartesian3 = function (cartesian3) {
		var cartographic = Cesium.Cartographic.fromCartesian(cartesian3);
		var lat = Cesium.Math.toDegrees(cartographic.latitude);
		var lon = Cesium.Math.toDegrees(cartographic.longitude);
		var alt = cartographic.height;
		alt = roundFun(alt, 7);
		return { lat: lat, lon: lon, height: alt };
	}

    function roundFun(value, n) {
		return Math.round(value * Math.pow(10, n)) / Math.pow(10, n);
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值