Geo3D城市引擎大规模建筑植被渲染

devtools/2025/2/28 21:45:51/

import * as Geo3D from "../src";
import InitHelper from "./InitHelper";
//3D场景初始化
const sceneControl = InitHelper.init3D();
const container = document.querySelector("#map") as HTMLElement;
container && sceneControl.render(container);
const { scene, camera, renderer } = sceneControl;
const control = InitHelper._createControls(camera, container);
InitHelper.loadGltf(scene, 1);
renderer.shadowMap.type = PCFSoftShadowMap;
const light = InitHelper.addLight(scene, new Vector3(5000, 2000, 5000));
light.visible = true//插件初始化
const centerGeo = new Vector3(116.185600, 39.896326, 0);
const imageryLayers = new Geo3D.ImageryLayers()
const tdtImageryLayer = new Geo3D.TDTImageryLayer({token: 'b832b97649334239ascbb0919148c548b669ba',
})
const tdtImageryLayer2 = new Geo3D.TDTImageryLayer({token: 'b832b9764939cbfeeb0919148c548b669ba',style: 'cva_w',
})
imageryLayers.add(tdtImageryLayer);
imageryLayers.add(tdtImageryLayer2);
const map = new Geo3D.Map({threeModule: {scene, camera, renderer, control},center: centerGeo,useEarth: false,imageryLayers: imageryLayers,// terrainLayer: new Geo3D.TerrainLayer({//     maxLevel: 14,//     url: globalConfig.terrain_beijing// })
})map.addEventListener(Geo3D.MapEventType.ready, () => {const mask = document.getElementById('mask');mask!.style.display = 'none';
});function getFormatExtent(coords) {const results: Geo3D.Point[] = [];for (let index = 0; index < coords.length; index++) {const pointCoord = coords[index];const coord3DXYZ = Geo3D.CoordUtil.LonLatTo3DXYZ(pointCoord[0], pointCoord[1], 0);results.push([coord3DXYZ.x, coord3DXYZ.z]);}return results;
}
const minlon1 = 116.182892;
const minlat1 = 39.894874;
const maxlon1 = 116.188174;
const maxlat1 = 39.897445;
const excludeCoords = [[minlon1, minlat1],[maxlon1, minlat1],[maxlon1, maxlat1],[minlon1, maxlat1],[minlon1, minlat1]
]
const excludeExtent = getFormatExtent(excludeCoords);
// 116.182944, 39.901406
const minlon = 116.162944;
const minlat = 39.881406;
const maxlon = 116.202944;
const maxlat = 39.921406;
const extentCoords = [[minlon, minlat],[maxlon, minlat],[maxlon, maxlat],[minlon, maxlat],[minlon, minlat]
]
const exttent = getFormatExtent(extentCoords);
const treePipline = new Geo3D.TreeManager.TreePipeline({imageryLayer: tdtImageryLayer,extent: exttent,exclude: excludeExtent,scene: scene,camera: camera
})
treePipline.add();//
const buildingPipline = new Geo3D.BuildingPipline({pbfUrl: './static/shijingshan.bpf',scene: scene
})
buildingPipline.loadBuilding();


http://www.ppmy.cn/devtools/163453.html

相关文章

【Viewer.js】vue3封装图片查看器

效果图 需求 点击图片放大可关闭放大的 图片 下载 cnpm in viewerjs状态管理方法 stores/imgSeeStore.js import { defineStore } from pinia export const imgSeeStore defineStore(imgSeeStore, {state: () > ({showImgSee: false,ImgUrl: ,}),getters: {},actions: {…

Ubuntu 下通过 Docker 部署 Nginx 服务器

Docker 和 Nginx 简介 Docker 是一种开源平台&#xff0c;旨在简化应用程序的开发、交付和运行。通过容器化技术&#xff0c;Docker 能够将应用及其依赖项封装在一个独立的环境中&#xff0c;确保在任何地方都能一致地运行。Nginx 是一款高性能的 HTTP 和反向代理服务器&#…

C++ 常见面试知识点

主要介绍C常见面试题 1、说一下你理解的C中的四种智能指针 常用接口 T* get(); T& operator*(); T* operator->(); T& operator(const T& val); T* release(); 将 封装在内部的指针置为nullptr, 但并不会破坏指针所指向的内容, 函 数返回的是内部指针置空之前…

零基础学QT、C++(四)QT程序打包

项目包 链接&#xff1a;https://pan.quark.cn/s/6a3455161757 记得创建yolo的数据库&#xff0c;并把数据导入 目录 一、把项目变为release版 二、运行项目 三、找到windeployqt6.exe 四、运行exe 五、无法定位重新输入点 学习视频 QT程序打包发布教程&#xff01;&#xff01…

[Lc优选算法] 双指针 | 移动零 | 复写零 | 快乐数

目录 &#x1f3a2;1.移动零 题解 代码 ⭕2.复写零 题解 代码 ⭕3.快乐数 题解 代码 &#x1f3a2;1.移动零 题目链接&#xff1a;283. 移动零 题目描述&#xff1a; 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零…

Python 爬虫实战案例 - 获取社交平台事件热度并进行影响分析

目录 一、引言 二、数据爬取 三、数据分析 四、可视化展示 五、总结 一、引言 在当今信息爆炸的时代&#xff0c;社交平台成为了各类事件发酵和传播的重要场所。了解社交平台上事件的热度以及其潜在影响&#xff0c;对于舆情监测、市场营销、社会趋势分析等领域具有重要意…

前端性能测试面试题及参考答案

目录 前端性能测试中,首屏时间(FCP)和白屏时间的定义及测量方法是什么? 解释浏览器渲染过程中关键路径(Critical Rendering Path)的组成部分。 如何通过 Navigation Timing API 统计页面加载各阶段耗时? 什么是 LCP(Largest Contentful Paint)?如何优化? 前端性…

C#通过接口 继承接口的类 实现约束 对List内数据类型的值进行排序,可直接复制使用

工具类 通过接口 继承接口的类 实现约束 对List内数据类型的值进行排序,可直接复制使用 //工具类 Tools//说明接口的//1.先有接口 2.继承接口的类 3.实现约束public interface IComParable<T> //接口{int ComPareTo(T other); //在list的数组…