cesium系列8:多颜色线段的折线实现方法

CESIUM例子学习(九)——Primitive(3) geometry实在是太多了,多也要一个一个地学。学习的过程中不仅仅是用Primitive加载各种geometry。在这个过程中也加深对cesium的印象,至少混过脸熟,然后熟就能生巧。特别是学习这种事,要自己亲手去做去练习才能有更好的体会。 一、Polyline(线) cesium提供了SimplePolylineGeometry、PolylineGeometry、PolylineVolumeGeometry、PolylineVolumeOutlineGeometry、GroundP... 阅读详情

一、背景

想在项目中实现不同颜色的一段折线的效果,找了些资料,看了api,最终将实现方法记录如下

二、结果

 三、实现步骤

3.1方法一

使用SimplePolylineGeometry 方法

主要写法如下

var positions = [];
var colors = [];
 
for ( var i = 0; i < 40; ++i) {
    positions.push(Cesium.Cartesian3.fromDegrees(-100.0 + i, 48.0));
    colors.push(Cesium.Color.fromRandom({alpha : 1.0}));
}

primitives.add(new Cesium.Primitive({
    geometryInstances : new Cesium.GeometryInstance({
        geometry : new Cesium.SimplePolylineGeometry({
            positions : positions,
            colors : colors
        })
    }),
    appearance : new Cesium.PerInstanceColorAppearance({
        flat : true,
        renderState : {
            // Override the appearance render state to change the
            // line width on system's that support it (Linx/Mac).
            lineWidth : Math.min(4.0, scene.maximumAliasedLineWidth)
        }
    })
}));

或者

createline(){
        //创建多段线和每段颜色
        const positions = [];
        const colors = [];
        for (let j = 0; j <= 50; j += 5) {
            positions.push(
                Cesium.Cartesian3.fromDegrees(-124.0 + j, 40, 50000.0 * (j % 10))
            );
            colors.push(Cesium.Color.fromRandom({ alpha: 1.0 }));
        }
        //设置线段的位置和颜色,一一对应,arcType为ArcType.NONE
        const perSegmentPolyline = new Cesium.GeometryInstance({
            geometry: new Cesium.SimplePolylineGeometry({
                positions: positions,
                colors: colors,
                arcType: Cesium.ArcType.NONE,
            }),
        });
        //使用逐顶点着色绘制多段线
        //对于逐顶点着色,将colorsPerVertex选项设置为true,并为colors选项提供长度等于位置数的颜色数组
        const perVertexPolyline = new Cesium.GeometryInstance({
            geometry: new Cesium.SimplePolylineGeometry({
                positions: Cesium.Cartesian3.fromDegreesArray([-100, 40, -80, 30]),
                colors: [Cesium.Color.RED, Cesium.Color.BLUE],
                colorsPerVertex: true,
            }),
        });
        //添加多段线instances到primitives
        scene.primitives.add(
            new Cesium.Primitive({
                geometryInstances: [perSegmentPolyline, perVertexPolyline],
                appearance: new Cesium.PerInstanceColorAppearance({
                    flat: true,
                    renderState: {
                        lineWidth: Math.min(2.0, scene.maximumAliasedLineWidth),
                    },
                }),
            })
        );

    }

 里面的数据是随机的,可以根据自己的数据进行修改,效果就是上图一的那种有颜色的折线

缺点:不能修改线段的宽度

如何在CesiumJS中将宽度设置为SimplePolylineGeometry原语

 3.2方法2

polyline with per vertex colors


// create a polyline with per vertex colors
var positions = [];
var colors = [];
for (var i = 0; i < 40; ++i) {
    positions.push(Cesium.Cartesian3.fromDegrees(-100.0 + i, 9.0));
    colors.push(Cesium.Color.fromRandom({alpha : 1.0}));
}

primitives.add(new Cesium.Primitive({
    geometryInstances : new Cesium.GeometryInstance({
        geometry : new Cesium.PolylineGeometry({
            positions : positions,
            width : 10.0,
            vertexFormat : Cesium.PolylineColorAppearance.VERTEX_FORMAT,
            colors : colors,
            colorsPerVertex : true
        })
    }),
    appearance : new Cesium.PolylineColorAppearance()
}));

 显示结果,下图或者开头的图2

3.3更多

3.3.1 polyline with per segment colors


// create a polyline with per segment colors
var positions = [];
var colors = [];
for (var i = 0; i < 40; ++i) {
    positions.push(Cesium.Cartesian3.fromDegrees(-100.0 + i, 12.0));
    colors.push(Cesium.Color.fromRandom({alpha : 1.0}));
}

primitives.add(new Cesium.Primitive({
    geometryInstances : new Cesium.GeometryInstance({
        geometry : new Cesium.PolylineGeometry({
            positions : positions,
            width : 10.0,
            vertexFormat : Cesium.PolylineColorAppearance.VERTEX_FORMAT,
            colors : colors
        })
    }),
    appearance : new Cesium.PolylineColorAppearance()
}));

显示:

四、参考文章

Cesium快速上手6-Primitive图元的讲

cesium-PolylineGeometry 使用PerInstanceColorAppearance 无效_A873054267的博客-优快云博客

cesium绘制动态线,多段线 cesium绘制动态线 阅读详情

相关推荐

cesium Entities的理解和使用

Cesium Entities是Cesium中的一个重要组件,用于表示和管理在地球上的实体对象,通过设置不同的属性和行为,可以实现丰富多样的地理可视化效果。Entities可以代表各种地理特征,如点、线、多边形、模型等。每个Entity对象都包含一系列属性,用于描述其外观、位置、姿态、行为等信息。以下是一些常见的Entity属性:position(位置):指定Entity在地球上的位置,可以是经纬度或笛卡尔坐标。orientation(方向):描述Entity的朝向,可以是方位角、四元数或旋转矩阵。

qq_37550440的博客 1621

cesium视频教程

本课程是一套基于GIS+BIM的三维地理信息系统框架,学习本课程可以快速掌握cesiumjs开发GIS+BIM的地理信息系统,三维系统等。学习本课程可以提高对三维渲染,地理信息GIS+BIM的认识,为您的学习与开发工作节约大量宝贵的时间,快速入门,上手。   

告别枯燥文档!用Cesium Entity绘制动态折线:飞行轨迹、河流与道路效果一次搞定

本文详细介绍了如何利用Cesium Entity API实现动态折线效果,包括飞行轨迹、河流与道路的可视化。通过时间序列驱动、材质特效和交互设计,开发者可以创建沉浸式的GIS应用,适用于智慧交通、环境监测等场景。文章还提供了性能优化策略,帮助处理大规模折线数据。

weixin_31364787的博客 272

5. Cesium中的颜色

Cesium 颜色使用

qq_42038997的博客 1939

Cesium实战指南4-Polylines图元高级应用解析

本文深入解析Cesium中Polylines图元的高级应用,包括发光效果线、带边框的线等六种高级线段效果实战,以及性能优化和动态效果等专业级技巧。通过详细代码示例和实用建议,帮助开发者掌握三维地理可视化中的Polylines图元应用,提升项目效果和性能。

weixin_42531516的博客 181

Cesium三维GIS特效开发实战:Geo-Effect-Kit核心功能与性能优化指南

在三维GIS可视化与WebGL开发中,动态视觉效果是提升用户体验和数据感知能力的关键技术。其原理通常基于着色器编程和实时渲染管线,通过GPU加速实现复杂的图形变换与光照计算。这类技术的核心价值在于将抽象的空间数据转化为直观、生动的视觉语言,显著增强态势感知和决策支持能力。在军事仿真、智慧城市、应急指挥等应用场景中,动态特效如雷达扫描、光墙流动、轨迹跟随等已成为行业标配。本文聚焦的Geo-Effect-Kit工具集,正是为解决Cesium平台下此类特效开发效率低、性能优化难等痛点而生,它封装了常见的空间预警、

ciqiaofu0192的博客 386

Cesium三维GIS标绘:DrawHandler线段绘制原理与实战

在三维地理信息系统(3D GIS)开发中,交互式标绘是构建空间分析、规划与可视化应用的基础功能。其核心原理在于通过鼠标事件监听与三维坐标拾取,将用户交互转化为空间几何图形。Cesium作为主流Web三维地球引擎,提供了DrawHandler这一原生API来封装复杂的绘制逻辑,其中DrawMode.LINE模式专门用于线段绘制。该技术通过管理绘制状态、实时预览与坐标转换,显著降低了开发复杂度,提升了工程效率。在智慧城市、应急指挥、管线规划等场景中,健壮的线段标绘功能是实现路径规划、区域划定与态势标注的关键。本

virusswb的专栏 373

Cesium初级开发教程之十:颜色Color

教程示例网站:https://thomaz529.github.io。4、css颜色值,十六进制、rgba、颜色值。2、rgba(0-255区间)3、rgba(0-1区间)10、十六进制颜色随机。11、rgba颜色随机。6、32位GRBA值。

856

开源三维地球GIS引擎Cesium常用功能的开发

Cesium是一个非常优秀的三维地球GIS引擎(开源且免费)。能够加载各种符合标准的地图图层,瓦片图、矢量图等都支持。支持3DMax等建模软件生成的obj文件,支持通用的GIS计算;支持DEM高程图。测试中的3D-Tiles分支还支持倾斜摄影生成的城市三维建筑群。国内许多三维GIS产品都基于Cesium进行封装(包括一些大厂)。因为工作关系,我对Cesium的一些基本GIS功...

weixin_30741653的博客 2423

cesium 综合教程200+【目录】(已包含186篇文章)

cesium示例教程100+旨在为开发者提供简单快捷的,。在每一个示例中,解释相应的API知识点,做到。目录中有链接的为已有文章,没链接的为目标文章,不断更新中…

大剑师兰特的GIS世界 8889

Cesium中文API全解 200+【目录】

本目录是Cesium中文API详解示例的目录列表,如果您专注于由于本目录初建立,暂时用cesium综合教程200+目录做占位使用,本专栏内容陆续更新中~~

大剑师兰特的GIS世界 630

深入解析Cesium中Worker线程的几何数据处理机制

本文深入解析了Cesium如何利用Worker线程高效处理大规模几何数据,以解决浏览器主线程渲染瓶颈。通过将复杂几何对象打包为ArrayBuffer进行零拷贝传输,并结合线程池与智能任务分组机制,Cesium实现了海量三维数据的并行计算与流畅渲染,是提升WebGL应用性能的关键。

tea88的博客 455

交通流量可视化模拟系统:基于Vue3、ECharts与Leaflet的实时大屏实战

在智能交通与城市治理领域,数据可视化已成为连接海量数据与业务决策的关键桥梁。通过将抽象的车流量、平均车速、拥堵指数等指标转化为直观的地图热力、趋势曲线与预警信号,普通管理人员也能快速洞察交通运行态势。实现此类系统通常依赖前端可视化框架与后端实时数据推送的紧密配合,利用ECharts构建动态图表、Leaflet叠加路网信息、WebSocket实现秒级数据刷新,再配合合理的数据模拟模型,即可低成本复现真实业务场景。这类方案广泛适用于智慧城市演示、交通态势监控、应急指挥调度以及高校课程设计等场景。本文以芜湖市交通

weixin_33957648的博客 320

Cesium三维可视化动态特效开发:Geo-Effect-Kit核心功能与实战应用

在三维地理信息可视化领域,WebGL技术是实现复杂动态效果的核心基础。其原理是通过GPU加速的图形渲染管线,在浏览器中高效处理几何与像素计算,从而将静态的地理数据转化为具有视觉冲击力的动态场景。这项技术的核心价值在于能够显著提升三维场景的信息传达效率和用户体验,广泛应用于态势监控、轨迹模拟、区域高亮等业务场景。针对Cesium平台,开发者常面临动态特效开发门槛高、实现复杂的问题。Geo-Effect-Kit开源库通过封装雷达扫描、光墙、动态线等常见WebGL动效,提供了声明式API,极大简化了开发流程。该库

weixin_30700977的博客 388

shp文件处理全攻略:格式原理、坐标系转换与常见问题排查

在GIS数据处理中,Shapefile是最通用的矢量数据格式之一,但它并非单一文件,而是由.shp、.dbf、.prj等多个副文件共同组成。理解其底层构成与属性编码规则,是构建可靠地理数据的基础。实际工程中,不同来源的数据常存在坐标系不统一、字段乱码、拓扑错误等问题,掌握坐标系统转换与编码修复成为提升数据质量的关键。随着空间分析需求的深化,从渔网分割到shp转CAD、批量投影乃至三维可视化,高频操作贯穿项目全流程。本文以玛纳斯河流域数据整理为案例,系统讲解Shapefile格式原理、ArcGIS与QGIS中

weixin_42350014的博客 326

告别F5失灵!手把手教你为Cursor配置.Net Core控制台项目专属调试环境

本文详细指导如何在Cursor编辑器中为.Net Core控制台项目配置专属调试环境,解决F5失灵等常见问题。从调试器选择到launch.json配置,再到高级调试技巧,帮助开发者高效搭建完整的调试工具链,提升开发效率。

weixin_28834765的博客 284

Cesium Color 颜色书写格式

Cesium Color 颜色(赋值)

YG_zhh的博客 1638

WSL2离线安装Ubuntu终极指南:绕过Microsoft Store慢速下载(附最新22.04 LTS离线包)

本文提供WSL2离线安装Ubuntu 22.04 LTS的完整指南,帮助开发者绕过Microsoft Store下载慢的问题。通过PowerShell命令配置环境、获取离线安装包并完成安装,同时包含初始配置、资源优化及常见问题解决方案,助您快速搭建高效的Linux开发环境。

c8d9e0f1的博客 898

cesium实现道路穿梭线效果

cesium实现道路穿梭线效果

专注GIS开发 1万+

n8n实战:动态报表生成与企业微信自动化推送

本文详细介绍了如何利用n8n实现动态报表生成与企业微信自动化推送的全流程。通过配置n8n Form触发器、智能报表生成核心逻辑以及企业微信Webhook推送,帮助企业大幅提升数据收集与报表推送效率,实现从数据录入到报表推送的全自动化处理。

weixin_29267307的博客 304

对工时评估的思考:当AI颠覆了coding效率

在AI时代,“人日”作为软件工时度量衡已然失效。开发的价值核心正从“编码实现”转向“深度思考”与“精准沟通”——即如何将人类的模糊需求精确地传达给AI。当最有价值的“思想工作”变得最难量化时,传统的项目管理范式随之动摇。我们必须超越对过程的算计,开始探索衡量思想、沟通与业务价值的新标尺。

架构师刘7的博客 1017

《Cesium 基础知识点》- Cesium.Color 的使用(小技巧)

一、颜色全透明 例如:设置球的基础色,默认颜色是Cesium.Color.BLUE // 方式一 viewer.scene.globe.baseColor = new Cesium.Color(0, 0, 0, 0); // 方式二(推荐) viewer.scene.globe.baseColor = Cesium.Color.TRANSPARENT; 二、颜色半透明 例如:设置球的地下色,默认是Cesium.Color.BLACK // 方式一 viewer.scene.globe....

前端技术 1万+

3D点云-CVPR 2020-PF-Net: Point Fractal Network for 3D Point Cloud Completion

是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像素点与原来像素点比较完成模型的训练。而PF-Net就是采用GAN的思想在3D点云上的应用。

404 Not Found 2367
上一篇: geoserver 报错
下一篇: Arcmap操作系列:把DEM上的高程值添加到点
西北码农
博客等级 码龄12年 1万+粉丝 149原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值