Cesium中的Entity API和Primitive API的区别(2)

Cesium开发高级篇 | 01空间数据可视化之Primitive 在基础篇中我们讲过空间数据可视化之Entity实体类,今天我们介绍另外一个比较接近渲染引擎底层的类Primitive,虽然两者都可用于绘制同样的几何图形,但考虑到性能问题,我们更推荐您使用Primitive类实现。在使用Primitive API之前,您最好具备WebGL基础知识,如果对WebGL不是太了解,建议先学习《WebGL编程指南》这本书。 Primitive介绍 1. Primitive组成 Primitive由两部分组成:几何形状(Geometry)和外观(Appearance)。几何形状定 阅读详情

提示:Cesium中提供两类API:

(1)面向图形开发人员的底层API,通常称为“Primitive API”。该API暴露最小限度的抽象,使用图形学术语,具有很大的灵活性,需要具有图形学编程的知识;

(2)高级别的数据驱动的API,称为“Entity API”。该API使用一致性设计的、高级别的对象来管理一组相关性的可视化对象,其底层使用Primitive API;


几何图形与外观

我们可以通过Primitive API来操控几何图形及其外观,或者绘制各种特殊的形状。需要先得到Scene对象,然后在其上添加Primitive对象:

1.  var viewer = new Cesium.Viewer('cesiumContainer');  

2.  var scene = viewer.scene;  

3.     

4.  scene.primitives.add(new Cesium.RectanglePrimitive({  

5.      //绘制矩形  

6.      rectangle : Cesium.Rectangle.fromDegrees(-100.0, 20.0, -90.0, 30.0),  

7.      material : Cesium.Material.fromType('Dot')  //设置材质  

8.  }));  

Primitive由两个部分组成:

1.      (1)几何形状(Geometry):定义了Primitive的结构,例如三角形、线条、点等

2.      (2)外观(Appearance ):定义Primitive的着色(Sharding),包括GLSL(OpenGL着色语言,OpenGL Shading Language)顶点着色器和片段着色器( vertex and fragment shaders),以及渲染状态(render state)

Cesium支持以下几何图形:

几何图形 

 说明

BoxGeometry

立方体

BoxOutlineGeometry

仅有轮廓的立方体

CircleGeometry

圆形或者拉伸的圆形

CircleOutlineGeometry

只有轮廓的圆形

CorridorGeometry

走廊:沿着地表的多段线,且具有一定的宽度,可以拉伸到一定的高度

CorridorOutlineGeometry

只有轮廓的走廊

CylinderGeometry

圆柱、圆锥或者截断的圆锥

CylinderOutlineGeometry

只有轮廓的圆柱、圆锥或者截断的圆锥

EllipseGeometry

椭圆或者拉伸的椭圆

EllipseOutlineGeometry

只有轮廓的椭圆或者拉伸的椭圆

EllipsoidGeometry

椭球体

EllipsoidOutlineGeometry

只有轮廓的椭球体

RectangleGeometry

矩形或者拉伸的矩形

RectangleOutlineGeometry

只有轮廓的矩形或者拉伸的矩形

PolygonGeometry

多边形,可以具有空洞或者拉伸一定的高度

PolygonOutlineGeometry

只有轮廓的多边形

PolylineGeometry

多段线,可以具有一定的宽度

SimplePolylineGeometry

简单的多段线

PolylineVolumeGeometry

多段线柱体

PolylineVolumeOutlineGeometry

只有轮廓的多段线柱体

SphereGeometry

球体

SphereOutlineGeometry

只有轮廓的球体

WallGeometry

墙

WallOutlineGeometry

只有轮廓的墙

使用Geometry和Appearance 具有以下优势:

1.      (1)性能:绘制大量Primitive时,可以将其合并为单个Geometry以减轻CPU负担、更好的使用GPU。合并Primitive由web worker线程执行,UI保持响应性

2.      (2)灵活性:Geometry与Appearance 解耦,两者可以分别进行修改

3.      (3)低级别访问:易于编写GLSL 顶点、片段着色器、使用自定义的渲染状态 

同时,具有以下劣势:

1.      (1)需要编写更多地代码

2.      (2)需要对图形编程有更多的理解,特别是OpenGL的知识

使用来Geometry、Appearance 改写上面的例子,代码为:

1.  var viewer = new Cesium.Viewer('cesiumContainer');  

2.  var scene = viewer.scene;  

3.  //GeometryInstance是Geometry的一个容器  

4.  var instance = new Cesium.GeometryInstance({  

5.    geometry : new Cesium.RectangleGeometry({  

6.      rectangle : Cesium.Rectangle.fromDegrees(-100.0, 20.0, -90.0, 30.0),  

7.      vertexFormat : Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT  

8.    })  

9.  });  

10. //使用抽象的Primitive而不是RectanglePrimitive  

11. scene.primitives.add(new Cesium.Primitive({  

12.   geometryInstances : instance,  

13.   //使用该外观,可以使矩形覆盖在地球表面,或者悬浮一定的高度  

14.   appearance : new Cesium.EllipsoidSurfaceAppearance({  

15.     material : Cesium.Material.fromType('Dot')  

16.   })  

17. }));  

合并几何图形(Combing Geometries)

合并多个GeometryInstances 为一个Primitive可以极大的提高性能,下面的例子创建了2592一颜色各异的矩形,覆盖整个地球 :

1.  var viewer = new Cesium.Viewer( 'cesiumContainer' );  

2.  var scene = viewer.scene;  

3.     

4.  var instances = [];  

5.     

6.  for ( var lon = -180.0; lon < 180.0; lon += 5.0 )  

7.  {  

8.      for ( var lat = -90.0; lat < 90.0; lat += 5.0 )  

9.      {  

10.         instances.push( new Cesium.GeometryInstance( {  

11.             geometry : new Cesium.RectangleGeometry( {  

12.                 rectangle : Cesium.Rectangle.fromDegrees( lon, lat, lon + 5.0, lat + 5.0 )  

13.             } ),  

14.             attributes : {  

15.                 color : Cesium.ColorGeometryInstanceAttribute.fromColor( Cesium.Color.fromRandom( {  

16.                     alpha : 0.5  

17.                 } ) )  

18.             }  

19.         } ) );  

20.     }  

21. }  

22.    

23. scene.primitives.add( new Cesium.Primitive( {  

24.     geometryInstances : instances, //合并  

25.     //某些外观允许每个几何图形实例分别指定某个属性,例如:  

26.     appearance : new Cesium.PerInstanceColorAppearance()  

27. } ) );  

选取几何图形(Picking)

即使多个 GeometryInstance被合并为单个Primitive,让然可以独立的被访问。我们可以为每一个GeometryInstance指定一个id,并且可以通过Scene.pick来判断该实例是否被选取:

1.  var viewer = new Cesium.Viewer( 'cesiumContainer' );  

2.  var scene = viewer.scene;  

3.     

4.  var instance = new Cesium.GeometryInstance( {  

5.      geometry : new Cesium.RectangleGeometry( {  

6.          rectangle : Cesium.Rectangle.fromDegrees( -100.0, 30.0, -90.0, 40.0 )  

7.      } ),  

8.      id : 'rectangle-1',  

9.      attributes : {  

10.         color : Cesium.ColorGeometryInstanceAttribute.fromColor( Cesium.Color.RED )  

11.     }  

12. } );  

13.    

14. scene.primitives.add( new Cesium.Primitive( {  

15.     geometryInstances : instance,  

16.     appearance : new Cesium.PerInstanceColorAppearance()  

17. } ) );  

18.    重点重点重点重点重点重点

19. var handler = new Cesium.ScreenSpaceEventHandler( scene.canvas );  

20. //设置单击事件的处理句柄  

21. handler.setInputAction( function( movement )  

22. {  

23.     var pick = scene.pick( movement.position );  

24.     if ( Cesium.defined( pick ) && ( pick.id === 'rectangle-1' ) )  

25.     {  

26.         console.log( '矩形被选取' );  

27.     }  

28. }, Cesium.ScreenSpaceEventType.LEFT_CLICK );  

几何图形实例(Geometry Instances)

上面的例子中,我们已经用到了GeometryInstances,注意GeometryInstance与Geometry的关系:前者是后者的容器,多个Instance可以共用一个Geometry,并且可以通过GeometryInstances.modelMatrix属性提供不同position、scale、rotate等位置、缩放、旋转信息。例如,下面的例子使用同一个Geometry绘制了两个Instance,一个位于另一个的上方:

1.  var viewer = new Cesium.Viewer( 'cesiumContainer' );  

2.  var scene = viewer.scene;  

3.     

4.  var ellipsoidGeometry = new Cesium.EllipsoidGeometry( {  

5.      vertexFormat : Cesium.PerInstanceColorAppearance.VERTEX_FORMAT,  

6.      radii : new Cesium.Cartesian3( 300000.0, 200000.0, 150000.0 )//三轴半径  

7.  } );  

8.  //下方的实例  

9.  var cyanEllipsoidInstance = new Cesium.GeometryInstance( {  

10.     geometry : ellipsoidGeometry,  

11.     modelMatrix : Cesium.Matrix4.multiplyByTranslation( Cesium.Transforms.eastNorthUpToFixedFrame( Cesium.Cartesian3.fromDegrees( -100.0, 40.0 ) ), new Cesium.Cartesian3( 0.0, 0.0, 150000.0 ) ),  

12.     attributes : {  

13.         color : Cesium.ColorGeometryInstanceAttribute.fromColor( Cesium.Color.CYAN )  

14.     }  

15. } );  

16. //上方的实例  

17. var orangeEllipsoidInstance = new Cesium.GeometryInstance( {  

18.     geometry : ellipsoidGeometry,  

19.     modelMatrix : Cesium.Matrix4.multiplyByTranslation( Cesium.Transforms.eastNorthUpToFixedFrame( Cesium.Cartesian3.fromDegrees( -100.0, 40.0 ) ), new Cesium.Cartesian3( 0.0, 0.0, 450000.0 ) ),  

20.     attributes : {  

21.         color : Cesium.ColorGeometryInstanceAttribute.fromColor( Cesium.Color.ORANGE )  

22.     }  

23. } );  

24.    

25. scene.primitives.add( new Cesium.Primitive( {  

26.     geometryInstances : [  

27.         cyanEllipsoidInstance, orangeEllipsoidInstance  

28.     ],  

29.     appearance : new Cesium.PerInstanceColorAppearance( {  

30.         translucent : false,  

31.         closed : true  

32.     } )  

33. } ) );  

更新单个GeometryInstance的属性

在添加到Primitive中以后,让然可以修改几何图形的某些属性:

1.      (1)颜色:如果Primitive设置了PerInstanceColorAppearance外观,则可以修改ColorGeometryInstanceAttribute类型的颜色

2.      (2)可见性:任何实例可以修改可见性

示例代码:

1.  var viewer = new Cesium.Viewer( 'cesiumContainer' );  

2.  var scene = viewer.scene;  

3.     

4.  var circleInstance = new Cesium.GeometryInstance( {  

5.      geometry : new Cesium.CircleGeometry( {  

6.          center : Cesium.Cartesian3.fromDegrees( -95.0, 43.0 ),  

7.          radius : 250000.0,  

8.          vertexFormat : Cesium.PerInstanceColorAppearance.VERTEX_FORMAT  

9.      } ),  

10.     attributes : {  

11.         color : Cesium.ColorGeometryInstanceAttribute.fromColor( new Cesium.Color( 1.0, 0.0, 0.0, 0.5 ) ),  

12.         show : new Cesium.ShowGeometryInstanceAttribute( true ) //显示或者隐藏  

13.     },  

14.     id : 'circle'  

15. } );  

16. var primitive = new Cesium.Primitive( {  

17.     geometryInstances : circleInstance,  

18.     appearance : new Cesium.PerInstanceColorAppearance( {  

19.         translucent : false,  

20.         closed : true  

21.     } )  

22. } );  

23. scene.primitives.add( primitive );  

24.    

25. //定期修改颜色  

26. setInterval( function()  

27. {  

28.     var attributes = primitive.getGeometryInstanceAttributes( 'circle' );//获取某个实例的属性集  

29.     attributes.color = Cesium.ColorGeometryInstanceAttribute.toValue( Cesium.Color.fromRandom( {  

30.         alpha : 1.0  

31.     } ) );  

32. }, 2000 );  

外观(Appearances)

Primitive由两个重要部分组成:几何图形实例、外观,一个Primitive只能有一个外观,而可以有多个实例。几何图形定义了结构,外观定义了每个像素被如何着色,外观可能使用材质(Material)。这些对象的关系如下图所示:



Cesium支持下表列出的外观:

 外观

 说明

MaterialAppearance

支持各种Geometry类型的外观,支持使用材质来定义着色

EllipsoidSurfaceAppearance

MaterialAppearance的一个版本。假设几何图形与地表是平行的,并且依此来进行顶点属性(vertex attributes)的计算

PerInstanceColorAppearance

让每个实例使用自定义的颜色来着色

PolylineMaterialAppearance

支持使用材质来着色多段线

PolylineColorAppearance

使用每顶点或者每片段(per-vertex or per-segment )的颜色来着色多段线

外观定义了需要在GPU上执行的完整的GLSL顶点、片段着色器,通常不需要修改这一部分,除非需要定义自己的外观。

外观还定义了完整的render state,用于在绘制Primitive时控制GPU的状态,可以直接或者通过高层API来定义render state:

1.  //下面的外观可用于定义一个Viewer不可进入的不透明盒子  

2.  var appearance = new Cesium.PerInstanceColorAppearance( {  

3.      translucent : false,  

4.      closed : true  

5.  } );  

6.  //下面的代码效果同上  

7.  var translucent = new Cesium.PerInstanceColorAppearance( {  

8.      renderState : {  

9.          depthTest : {  

10.             enabled : true  

11.         },  

12.         cull : {  

13.             enabled : true,  

14.             face : Cesium.CullFace.BACK  

15.         }  

16.     }  

17. } );  

一旦外观被创建,其render state就不可再变,但是其材质是可以替换的。另外Primitive的外观也是不可修改的。

大部分外观具有flat、faceForward属性,可以间接的控制GLSL 着色器:

1.      (1)flat:扁平化着色,不考虑光线的作用

2.      (2)faceForward:布尔值,控制光照效果

Geometry与Appearance的兼容性

需要注意,不是所有外观和所有几何图形可以搭配使用,例如EllipsoidSurfaceAppearance与WallGeometry就不能搭配,原因是后者是垂直于地表的。

即使外观与几何图形兼容,它们还必须有匹配的顶点格式(vertex formats)—— 即几何图形必须具有外观可以作为输入的数据格式,在创建Geometry时可以提供VertexFormat。

为了简便,可以让Geometry计算所有顶点属性(vertexattributes),以使之适用于任何外观,但这样做效率较差:

1.  var geometry = new Cesium.RectangleGeometry( {  

2.      vertexFormat : Cesium.VertexFormat.ALL  

3.  } );  

而如果我们使用外观EllipsoidSurfaceAppearance,其实只需要知道位置:

1.  var geometry = new Ceisum.RectangleGeometry( {  

2.      vertexFormat : Ceisum.VertexFormat.POSITION_ONLY  

3.  } );  

大部分外观具有vertexFormat属性或者VERTEX_FORMAT 静态常量,创建形状时只需要使用这些顶点格式即可:

1.  var geometry = new Ceisum.RectangleGeometry( {  

2.      vertexFormat : Ceisum.EllipsoidSurfaceAppearance.VERTEX_FORMAT  

3.  } );  

4.     

5.  var geometry2 = new Ceisum.RectangleGeometry( {  

6.      vertexFormat : Ceisum.PerInstanceColorAppearance.VERTEX_FORMAT  

7.  } );  

8.     

9.  var appearance = new Ceisum.MaterialAppearance();  

10. var geometry3 = new Ceisum.RectangleGeometry( {  

11.     vertexFormat : appearance.vertexFormat  

12. } );  


此外,两个形状必须具有匹配的vertexFormat,才能被合并到一个Primitive中。


 


cesium 的 API 结构及Viewer的介绍 阅读详情

相关推荐

Cesium进阶学习一、Primitive

Cesium进阶学习Primitive

程迷学习的博客 2444

Cesium中图元Primitive详细介绍及案例

Cesium中图元Primitive详细介绍及案例

纸飞机的旅行的博客 4702

Cesium基础-(Primitive)-(Primitive 与 Entity 区别)

Entity和Primitive在Cesium中都有各自的应用场景。选择哪个取决于项目的具体需求。

纸飞机的旅行的博客 1466

[Cesium]Cesium基础学习——Primitive

来表达物体的外观特征,而这些外观特征是由漫反射(diffuse)、镜面反射(specular)、法向量(normal)、自发光(emission)以及透明度(alpha)组合(即一个Components)而成。(Shading),包括GLSL(OpenGL着色语言,OpenGL Shading Language)顶点着色器和片元着色器( vertex and fragment shaders),以及渲染状态(render state)。两种MaterialProperty。则定义了Primitive的。

警警的博客 1811

Cesium中通过Primitive显示大量的点以及点的运动

如果想在Cesium中显示一个点,目前有这么几种方法: Primitive Entity czml文件 GeoJson文件等 如果要显示大量的点呢?比如几千个,几万个,甚至是几十万,上百万个?那么什么场景要用到显示这么多点呢? 在航天领域,就是地球空间的所有在轨物体了,包括火箭残骸、解体碎片、卫星、飞船等各种航天器。目前老美空间目标监测能力最强,几乎给空间所有的可探测物体都进行了编目,每天都有更新,总数目约有2万个左右。 从CelesTrak.com网站,我们可以下载到最新的所有空间物体的两行根数TLE

遨游在太空 1万+

Cesium 快速入门(八)Primitive(图元)系统深度解析

本文深入解析了Cesium中的Primitive(图元)系统,作为底层核心渲染单元,它与高层Entity API形成鲜明对比。Primitive提供了对WebGL渲染管线的精细控制,包括几何定义、实例化、外观定义、批处理等关键步骤,能够实现高性能复杂场景的构建。文章通过代码示例展示了Primitive的完整使用流程,并对比了Primitive与Entity在抽象层级、性能控制、内存占用、动态更新和学习曲线等方面的核心差异。Primitive适合需要极致性能控制的场景,而Entity则提供了更易用的声明式AP

yy的博客 1651

Cesium: Primitive vs Entity

cesium中primitive(图元)与entity(实体)的比较

总要开始写的博客 5100

Cesium快速入门到精通系列教程八:Primitive和Entity的相似点与不同点

选择 Primitive 当​​:需要极致性能、自定义渲染或处理超大规模静态数据。​​选择 Entity 当​​:追求开发效率、动态属性管理及交互功能。​​混合使用​​:对静态背景用 Primitive 批量渲染,动态对象用 Entity 单独控制。二者本质是互补关系:Entity 通过封装 Primitive 实现高级抽象,而 Primitive 为 Entity 提供底层支撑。实际开发需根据性能瓶颈灵活选择。

duansamve的博客 1006

cesium对entity和Primitive的管理思想及常见问题解决

文章目录需求需求分析用到的技术需要验证的问题验证截图 需求 我需要在项目中,对一些绘制的图形进行管理,能够进行分类;比如,我画一类广告牌,广告牌可以进行二次分类;我能根据分类进行删除;数据量不会很大,大概以千位单位;80%的问题都是可以解决的. 需求分析 相当于就是对绘制图形的一个管理,cesium在绘制图形时,基本开放了两个套路;一个是entity,一个是Primitive的管理方式;后者一般是给底层用的;前者是高度集合的,用于业务开发比较方便;这里我会重点研究entity,顺便了解下primitive的

李卓书 5294

告别卡顿!Cesium海量点渲染性能对比:Entity vs Primitive深度解析

本文深度解析了Cesium中Entity与Primitive两种API在海量点渲染场景下的性能差异。通过原理剖析与实测对比,揭示了Entity因高级抽象层带来的高开销是导致卡顿和内存飙升的主因,而接近底层的Primitive API则能高效处理百万级数据,实现流畅渲染。文章提供了性能优化策略与混合架构建议,帮助开发者告别卡顿。

silver的专栏 716

cesium小知识:Primitive和entity详解,两者对比

特性PrimitiveEntity抽象层次低级别的图形API高层次的数据驱动API性能更高效,适用于大规模静态内容简便但可能不如Primitive高效灵活性极大的灵活性,支持自定义着色器等较少的灵活性,更适合常规需求学习曲线需要更深入的图形学知识更容易上手动态支持有限的动态支持强大的时间动态和事件处理支持开发难度较高,需要更多的代码和理解较低,通过JSON配置即可适用场景大规模静态内容、高级定制化动态和交互性强的内容、快速开发。

大剑师兰特的GIS世界 649

Cesium 中 Primitive 和 Entity 的区别、适用场景及使用方法

Cesium中的Entity和Primitive是两种不同的可视化API,各有特点。Entity是高级抽象的数据驱动API,封装了位置、形状等属性,易于使用且支持内置动画和数据绑定,适合大多数通用场景。Primitive则是底层图形API,提供精细的渲染控制和极致性能,适合处理大量静态对象或自定义特效。对比来看,Entity更易用但灵活性有限,Primitive则性能更高但编程复杂度大。开发者可根据需求选择:快速开发选Entity,追求性能或自定义效果选Primitive。两者都提供了代码示例,展示了如何创

double徐 1242

13 万字 C 语言从入门到精通保姆级教程2021 年版

13 万字C语言保姆级教程,从入门到精通。

李南江 61万+

Cesium中Primitive与Entity详细介绍

cesium中的primitive与entity详细介绍

专注GIS开发 7759

EPICS pythonSoftIOC教程

EPICS pythonSoftIOC教程

yuyuyuliang00的博客 1521

NXP KW47蓝牙MCU低功耗实测:从8μA睡眠到5年续航的优化实战

在物联网和嵌入式系统开发中,低功耗设计是决定电池供电设备续航能力的关键技术。其核心原理在于通过事件驱动、状态机管理和精细的电源域控制,使设备在空闲时进入深度睡眠,仅在需要时快速唤醒工作,从而将平均电流从毫安级降至微安级。这项技术的工程价值在于能够实现纽扣电池供电设备长达数年的使用寿命,广泛应用于智能家居传感器、可穿戴设备、资产追踪和工业监测等领域。以NXP KW47系列无线MCU为例,其集成的Arm Cortex-M33双核与专用射频单元,配合多级睡眠模式和高效DC-DC转换器,为超低功耗蓝牙应用提供了硬件

weixin_30162121的博客 256

cesium面试题3-Primitive 与 Entity 在 Cesium 中的性能差异及适用场景

Cesium中Entity与Primitive的性能差异与适用场景 在Cesium中,Entity是高层级抽象,适合快速开发和简单场景,通过简洁API即可实现图形展示;Primitive是低层级抽象,直接控制WebGL绘制单元,适合复杂场景和性能优化。主要差异在于:Entity封装了渲染细节但性能较低,适合少量要素;Primitive可合并几何数据减少绘制调用,适合大规模数据。复杂场景建议使用Primitive,因其能手动优化批次合并、实例化渲染等,显著提升性能。

God's asylum的博客 787

【02】【VisionMaster V4.0.0 】安装教程—— 授权文件更新报错:应用程序与本地LM通讯出错(怀疑电脑加密 和 上网受限 造成的 )

本文详细介绍了海康VisionMaster 4.0试用版的安装流程及常见问题解决方案。主要内容包括:1)从官网下载基础安装包、试用补丁和授权文件;2)按顺序安装主程序、补丁和授权文件;3)针对授权失败问题提供两种解决方案(更换未加密电脑或使用加密狗);4)说明试用版的功能限制(30天试用期、2个流程限制等)。文章特别指出电脑加密可能导致授权失败,并提供了安装报错时的处理建议,为初次使用者提供了完整的安装指导。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 7149

Cesium学习笔记-用primitive画虚线

一些基本概念 entity和primitive比较 (1)面向图形开发人员的底层API,通常称为“Primitive API”。该API暴露最小限度的抽象,使用图形学术语,具有很大的灵活性,需要具有图形学编程的知识。 (2)高级别的数据驱动的API,称为“Entity API”。该API使用一致性设计的、高级别的对象来管理一组相关性的可视化对象,本质是用Primitive封装的api。 primitive基础概念 Primitive由两个部分组成: (1)几何形状(Geometry):定义了Primiti

靜哥哥的博客 6493

手把手移植st7701s驱动:MT6763+安卓8.0屏幕适配保姆级教程

本文详细介绍了在MT6763平台上移植ST7701S驱动的完整流程,涵盖从LK层到Kernel层的适配方案,特别针对安卓8.0系统的特殊要求。通过MIPI转RGB屏幕适配的实战教程,帮助开发者解决常见显示问题,包括无显示、色彩异常和屏幕错位等,并提供高级调试技巧如彩条测试模式和闪屏解决方案。

weixin_29186249的博客 156

Python爬虫实战:构建药监局药品批准信息本地查询系统

在医药信息化时代,药品批准信息的快速查询对于医药从业者、研究人员和普通消费者都具有重要意义。国家药品监督管理局(NMPA)提供了官方的药品查询系统,但有时我们需要建立本地数据库以便批量分析或离线查询。本文将详细介绍如何使用Python爬虫技术,结合最新的异步爬虫框架和技术栈,构建一个完整的药监局药品信息本地查询系统。本系统将实现以下功能:自动化爬取药监局官网的药品批准信息数据清洗和结构化存储建立本地查询接口数据定期更新机制pythonimport os"""药品类型枚举"""

2201_76125261的博客 727

Cesium海量点渲染优化:从Entity到Primitive的性能飞跃

本文深入探讨了Cesium中海量点渲染的性能优化方案,针对使用Entity API导致的卡顿甚至崩溃问题,提出了转向Primitive API的解决方案。通过对比两者在抽象层级、更新机制和性能上的本质区别,并结合GPU硬件加速原理,详细阐述了如何利用PointPrimitiveCollection实现十万级点数据的流畅渲染,最终带来显著的性能飞跃。

www00的博客 716

中文核心:swin transformer 农作物病虫害识别 完整代码数据

中文核心:swin transformer 农作物病虫害识别

939

Cesium中的Entity(实体)与Primitive(图元)

/ 自定义材质的GLSL着色器fabric: {time: 0.0,},source: `});// 每一帧更新时间uniform});// 创建Primitive使用自定义材质})});Entity是“开箱即用”的高层工具,专注于开发效率与易用性,适合大多数快速开发场景Primitive是“底层手术刀”,专注于性能与定制化,适合大规模数据与复杂渲染需求在实际项目中,建议混合使用。

ct978的博客 536

疾风气象大模型4.0白皮书

《疾风气象大模型白皮书摘要》 疾风气象大模型(J-AFM)是国内首个基于3D建模的气象智能平台,突破传统二维气象分析的局限,采用体素化技术构建"x-y-z-t"四维统一模型,实现从分钟级短临到30天跨时效的连续预测。核心技术包括:1)多源数据三维同化,融合雷达、卫星、风廓线等异构数据;2)物理约束AI解码器,嵌入能量守恒、湍流封闭等气象原理;3)行业适配插件,服务风电、光伏、航空等领域,如山地风场尾流校正、云影短临预测。平台支持批流一体推理与边缘部署,提供概率化输出和误差溯源能力,显著降

专注AI大模型,软件混淆,授权 539

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: Cesium中的Entity API和Primitive API的区别(1)
下一篇: Arcgis中地理坐标系和投影坐标区别及操作
龙之吻number7
博客等级 码龄10年 99粉丝 7原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值