cesium 添加纽约城市模型

本文介绍了如何使用Cesium JavaScript库加载纽约的3D建筑,并通过Cesium3DTileset和Cesium3DTileStyle进行样式定制,包括不同高度建筑的颜色设定,以及如何设置相机视角。此外,还讲解了Cesium Ion资源的注册、资产添加和令牌使用步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、cesium 添加纽约3D建筑

效果

在这里插入图片描述

代码

Cesium.Ion.defaultAccessToken='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2MTVlZGNjMi1mMDMxLTQ1YzMtODE3NS1mZjNlM2ZlOWNhZTgiLCJpZCI6OTYzODcsImlhdCI6MTY2MjIwNDI0OH0.OYbdYQbWco0YihneBtqn1nXiIHI85Bqe2AQ8TtXW3Oo';

viewer = new Cesium.Viewer('box',{
    animation: false, // 是否显示左下角动画控件
    fullscreenButton: false, // 是否显示全屏按钮
    geocoder: false, // 是否显示地名查找控件
    homeButton: false, // 是否显示home键
    navigationHelpButton: false, // 是否显示帮助信息控件
    sceneModePicker: false, // 是否显示投影方式
    timeline: false, // 是否显示时间线控件
    baseLayerPicker: false, // 是否显示图层选择控件
    selectionIndicator: false, // 是否显示指示器组件
    terrainProvider: Cesium.createWorldTerrain(
        {
          // url: Cesium.IonResource.fromAssetId(1),
          requestVertexNormals:true,   //增加法线提高光照效果
          requestWaterMask:true,       //增加水面特效
        }
    ),
  });
  viewer._cesiumWidget._innerCreditContainer.style.display = 'none'; // 去除logo信息
  viewer.scene.debugShowFramesPerSecond = false;    // 显示帧速
  // 关闭地表大气层,默认是 true
  viewer.scene.globe.showGroundAtmosphere = false;
	
	// 相机设置到纽约
  viewer.camera.setView({
    destination:new Cesium.Cartesian3(1332761,-4662399,4137888),
    orientation:{
      heading:0.60,
      pitch:-0.66
    }
  })
// 添加纽约3D建筑,75343是资产ID
let city = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
    url:Cesium.IonResource.fromAssetId(75343)
  }))
  // 定义3d样式
  // 不同高度的建筑,使用不同颜色
  let heightStyle = new Cesium.Cesium3DTileStyle({
    color:{
      // 条件判断具体的颜色
      conditions : [
        ['${Height} >= 300','rgba(45,0,75,0.5)'],
        ['${Height} >= 200','rgb(102,71,151)'],
        ['${Height} >= 100','rgba(170,162,204,0.5)'],
        ['${Height} >= 50','rgba(224,226,238,0.5)'],
        ['${Height} >= 25','rgba(252,230,200,0.5)'],
        ['${Height} >= 10','rgba(248,176,87,0.5)'],
        ['${Height} >= 5','rgba(198,106,11,0.5)'],
        ["true","rgb(127,59,8)"]
      ]
    }
  })
  city.style = heightStyle;

二、城市3D建筑

cesium ion中有纽约城市3D建筑,直接调用即可
cesium ion 资产仓库

三、cesium ion资源使用

注册

使用电子邮箱注册账号
在这里插入图片描述

添加资产

登录之后,点击Asset Depot,该页面展示了cesium ion的资产,点击最右侧的+号,将资产添加到My Assets
在这里插入图片描述

使用资源的token

点击Access Tokes,复制token字符串
在项目中设置token
Cesium.Ion.defaultAccessToken=token;

### 如何在Cesium中创建或使用城市白模 #### 使用已有的Cesium Ion资源加载城市白模 为了快速展示城市白模,可以直接利用Cesium Ion平台上的已有资源。例如,纽约市的白模建筑群可通过如下方式加载: ```javascript let city = viewer.scene.primitives.add( new Cesium.Cesium3DTileset({ url: Cesium.IonResource.fromAssetId(75343) }) ); viewer.flyTo(city); // 将视角移动到该城市的白模位置[^1] ``` 这段代码展示了如何通过指定资产ID(如`75343`),从Cesium Ion服务器上获取预先准备好的三维瓦片集,并将其添加到场景中。 #### 自定义上传并集成本地的城市白模 如果想要自定义自己的城市白模,则需先注册一个Cesium Ion账号并将模型文件上传至其中。确保这些模型被转换成适合Web端渲染的形式——即3D Tiles格式。之后按照以下方法操作: 1. 创建Cesium Ion账户; 2. 上载所需模型文件,并设置为3D Tiles类型以便于Cesium处理; 3. 获取对应的资产ID用于后续编码引用; 4. 修改上述JavaScript片段中的`fromAssetId()`函数参数为你自己上传后的资产ID。 对于具体实现细节可以参见相关文档说明[^4]。 #### Vue项目中引入Cesium及其应用实例 考虑到性能优化以及简化开发流程,在Vue框架内推荐采用CDN链接的方式来引入必要的Cesium库文件而非直接通过npm安装整个包。这样做的好处是可以减少打包体积从而加快页面加载速度。具体的HTML头部配置如下所示: ```html <link href="https://cesium.com/downloads/cesiumjs/releases/1.74/Build/Cesium/Widgets/widgets.css" rel="stylesheet"> <script src="https://cesmium.com/downloads/cesiumjs/releases/1.74/Build/Cesium/Cesium.js"></script> ``` 完成以上步骤后就可以像平常一样编写基于Cesium的地图应用程序了[^3]。 #### 白模数据生成工具介绍 针对那些希望通过编程手段批量生产高质量城市白模的需求方来说,可以选择借助专门的数据加工软件比如CesiumLab来进行自动化建模工作。只要拥有合适的矢量边界数据作为输入源,就能很容易地构建起完整的城市结构体系[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值