admin

第 1 位会员

管理员
个人信息
  • 加入于 2018-06-21 23:46:36
  • 最后登录时间 1天前
个人成就
  • 发表文章次数 171
  • 发布回复次数 1382
  • 个人主页浏览次数 83
[Cesium中文网]可视分析专题4天前

基于Cesium的简单可视域分析 https://blog.csdn.net/fengyekafei/article/details/90212714?tdsourcetag=s_pcqq_aiomsg

源代码如下:

// 加载3dtile模型
var tileset = new Cesium.Cesium3DTileset({
	url: ''
});
viewer.scene.primitives.add(tileset);
 
// 观察点
var viewPoint = Cesium.Cartesian3.fromDegrees(114.46430512179235, 30.436947239947525, 100);
 
// 世界坐标转换为投影坐标
var webMercatorProjection = new Cesium.WebMercatorProjection(viewer.scene.globe.ellipsoid);
var viewPointWebMercator = webMercatorProjection.project(Cesium.Cartographic.fromCartesian(viewPoint));
 
// 目标点集合
var destPoints = [];
 
// 观察点和目标点的距离
var radius = 1000; // 视距1000米
 
// 计算45°和135°之间的目标点
for (var i = 45; i <= 135; i++) {
	// 度数转弧度
	var radians = Cesium.Math.toRadians(i);
	// 计算目标点
	var toPoint = new Cesium.Cartesian3(viewPointWebMercator.x + radius * Math.cos(radians), viewPointWebMercator.y + radius * Math.sin(radians), 30);
	// 投影坐标转世界坐标
	toPoint = webMercatorProjection.unproject(toPoint);
	destPoints.push(Cesium.Cartographic.toCartesian(toPoint.clone()));
}
 
// 绘制线
function drawLine(leftPoint, secPoint, color) {
	viewer.entities.add({
		polyline: {
			positions: [leftPoint, secPoint],
			arcType: Cesium.ArcType.NONE,
			width: 5,
			material: color,
			depthFailMaterial: color
		}
	})
}
 
// 一定要等3dtile模型加载完成后执行
setTimeOut(function(){
	pickFromRay();
}, 2000)
 
function pickFromRay() {
	for (var i = 0; i < destPoints.length; i++) {
		// 计算射线的方向,目标点left 视域点right
		var direction = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(destPoints[i], viewPoint, new Cesium.Cartesian3()), new Cesium.Cartesian3());
		// 建立射线
		var ray = new Cesium.Ray(viewPoint, direction);
		var result = viewer.scene.pickFromRay(ray, objectsToExclude); // 计算交互点,返回第一个
		showIntersection(result, destPoints[i], viewPoint);
	}
}
 
// 处理交互点
function showIntersection(result, destPoint, viewPoint) {
	// 如果是场景模型的交互点,排除交互点是地球表面
	if (Cesium.defined(result) && Cesium.defined(result.object)) {
		drawLine(result.position, viewPoint, Cesium.Color.GREEN); // 可视区域
		drawLine(result.position, destPoint, Cesium.Color.RED); // 不可视区域
	} else {
		drawLine(viewPoint, destPoint, Cesium.Color.GREEN);
	}
}

原文效果图:

cesium 的VR模式,支持HTC VIVE?5天前

@jerry #3楼 有的,github搜一搜

求教,按线路飞行如何以第一视角方式飞行?9天前

@tinglizi #12楼

这是一个向量运算的问题吧,最开的时候您的飞机头的朝向你应该知道的,路线如果您自己制定的,怎么拐弯你也知道,你就按向量来计算。

cesium加载arcgis发布的线图层服务,如何点击查询线的属性10天前

@zanyehuoyiba #2楼

如果是整个模型高亮做过,3D Tiles的部分模型高亮也做过,但是线图层没做过,你尝试能否pick了吗

求教,按线路飞行如何以第一视角方式飞行?10天前

@tinglizi #10楼 heading的position和指向你都有了的话 你在lookat就是对的

lookAt heading的角度应该就可以啊

谁知道在地图上任意位置点击获得的2维坐标如何转换成经纬度10天前

movement.position 转换为空间坐标:

var cartesian = viewer.camera.pickEllipsoid(new Cesium.Cartesian2(e.clientX, e.clientY), ellipsoid);
            if (cartesian) {
                var cartographic = ellipsoid.cartesianToCartographic(cartesian);
                var plon = Cesium.Math.toDegrees(cartographic.longitude);
                var plat = Cesium.Math.toDegrees(cartographic.latitude);
                var slon = lon - plon;
                var slat = lat - plat;
                console.log(`Click point coordinate: (${plon.toFixed(10)}, ${plat.toFixed(10)}) - (${slon.toFixed(10)}, ${slat.toFixed(10)})`);
            }            

加载的arcgis发布的wms服务总是把影像盖住11天前

按层叠加,盖住是应该的啊?

Cesium 加载本地的地图影像12天前

@MrAar0n #2楼 对啊 就是叠图层呗

如何获取马路的路线数据并且绘制上去12天前

@dataangel #2楼

马路数据我也不知道在哪儿下载,但是只要数据可是对的话,cesium直接就加载,cesium支持的书格式,您可以在教程中自己获得

cesium加载arcgis发布的线图层服务,如何点击查询线的属性12天前

请问点击什么查询什么线的信息,如果您像弹出一个窗口的吧,请搜索InfoBox

http://cesium.coinidea.com/docs/InfoBox.html?classFilter=Info

如何获取马路的路线数据并且绘制上去13天前

题主是想问:

  1. 去哪儿下载马路数据
  2. 如何将马路数据加载到ceisum中?

黑色天空盒如何替换16天前

可以的,替换掉源码中的的图片路径即可。也可以去assets文件夹中找对应的图片。

\Source\Assets\Textures\SkyBox

cesiumlab的3Dtiles加载问题18天前

你这个模型是在cesiumlab预览没问题吧?但是自己的cesium代码启动不了。

是这样的,你的9002端口上的服务还在吗,说直白一点,您的cesiumlab上的预览服务是否还运行着。

为CeisumLab工具下载地图,影像数据的.pak文件架设地图服务19天前

图片因为盗链的关系挂了,建议您重新上传,或者您退出自己的csdn账号,您就能发现问题。

Cesium中geocoder地理编码修改23天前

在最近的版本中,确实没找到loadJsonP,不过这篇博客的重点应该是通过请求url,获得返回的结果,实在不行,可以使用ajax试试。

Your Site Analytics