标签: czml

如何在Cesium中正确使用unitQuaternion czml属性

我使用Cesium的gltf分支,我想显示三维平面模型.为此,我创建了我加载并添加到dataSources的czmlDataSource.

问题是我无法弄清楚如何计算方向四元数以使平面与地面平行,在给定的纬度,lon,alt默认向北(然后影响它们的航向,最终俯仰和滚动).

这是我做的计算我的实际四元数,但3D模型没有正确定向(我不知道如何改变标题,俯仰,滚动):

    var geoPosition = new Cesium.Cartographic(Cesium.Math.toRadians(inputPosition.lon), Cesium.Math.toRadians(inputPosition.lat), inputPosition.alt);
    var cartesianPosition = Cesium.Ellipsoid.WGS84.cartographicToCartesian(geoPosition);

    var euler = [cartesianPosition.x, cartesianPosition.y, cartesianPosition.z];
    var qx = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_X, euler[0]);
    var qy = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_Y, euler[1]);
    var qz = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_Z, euler[2]);
    var qt = Cesium.Quaternion.multiply(qz, qy);
    var q = Cesium.Quaternion.multiply(qt, qx);
    Cesium.Quaternion.normalize(q, q);

var czmlSrc = [{
       "orientation": {
            "epoch": "2012-08-04T16:00:00Z",
            "interpolationAlgorithm": "LINEAR",
            "interpolationDegree": 1,
            "unitQuaternion": [0, q.x,q.y,q.z,q.w,
                            3600, q.x,q.y,q.z,q.w]
        }
   }];
Run Code Online (Sandbox Code Playgroud)

cesium czml

5
推荐指数
1
解决办法
1358
查看次数

Cesium CZML:使用lat long alt

我想这对任何真正熟悉Cesium的CZML文件的人来说都是一个简单的问题.我只是尝试使用Cesium显示一系列lat/long/alt点作为飞行路径.有人能告诉我"位置"标签应该是什么样子吗?

除非我在错误的地方寻找,否则我没有看到很多CZML的例子.所以很难知道可以使用哪些标签以及如何使用它们(如果你弄错了,Java控制台就不会显示错误).

在Cesium网站上的Sandcastle CZML示例中,相关部分如下所示:

"position" : {
            "interpolationAlgorithm" : "LAGRANGE",
            "interpolationDegree" : 1,
            "epoch" : "2012-08-04T16:00:00Z",
            // Trimmed to just 2 points
            "cartesian" : [0.0, -2379754.6637012, -4665332.88013588, 3628133.68924173,
                           3894.996219574019, -2291336.52323822, -4682359.21232197, 3662718.52171165]
        }
Run Code Online (Sandbox Code Playgroud)

如果是两点,为什么有8个值?如果是ECEF坐标,我预计每点只有三个......

例如,当我尝试这个时,我在控制台中收到了一条"未被捕获的错误"消息...这不是很有用:

"cartographic" : [-1.472853549, 0.589580778, 1000,
                  -1.472962668, 0.589739552, 1000 ]
Run Code Online (Sandbox Code Playgroud)

根据文档,制图采用(长,纬,高)长,纬度为弧度,高度为米.

cesium czml

5
推荐指数
1
解决办法
2170
查看次数

铯-对通过CZML创建的广告牌使用scaleByDistance

我试图将图标显示为广告牌,并按距离缩放它。我可以进行很好的管理,但是一旦我通过CZML而不是直接在JS中加载广告牌,就无法获得调整广告牌大小的功能。

在我的JS文件中,我有:

var czmlDataSource = new Cesium.CzmlDataSource();
czmlDataSource.loadUrl('airports.czml');
viewer.dataSources.add(czmlDataSource);
Run Code Online (Sandbox Code Playgroud)

我的CZML文件显示:

[
  {
    "id":"document",
    "version":"1.0"
  },
  {
    "id":"test",
    "billboard":{
      "image":"airport.png",
      "verticalOrigin":"BOTTOM",
      "show":true
    },
    "position":{
      "cartographicDegrees":[
        0.055278, 51.505278, 0
      ]
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

在我使用这个之前:

entity.billboard.scaleByDistance = new Cesium.ConstantProperty(new Cesium.NearFarScalar(1.5e3, 0.3, 3.5e5, 0.0));
Run Code Online (Sandbox Code Playgroud)

显然,这现在行不通。但是我找不到一种方法来获取广告牌的ID并使用scaleByDistance。

javascript cesium czml

5
推荐指数
1
解决办法
1307
查看次数

如何在CesiumJS中的两个实体之间创建移动线?

我的页面上有两个实体;卫星及其“地面位置”,随着时间的推移,它们都会在铯中移动。我想用一条随它们一起移动的直线将两者连接起来。

CZML魅力似乎如果您使用的是CZML文件演示了类似的功能,但我想知道如何在代码中做到这一点。他们的演示在卫星和地面位置之间包含多条线,并且实际上,他们向前走了一步,仅在不与地球相交的情况下(如果两个实体之间存在视线)显示该线。我不需要那么花哨的东西。

有没有很好的例子,或者有人可以指出我的文档?谢谢!

cesium czml

5
推荐指数
1
解决办法
2161
查看次数

如果我知道多边形的 ID,如何更新多边形材质?

我正在用铯加载一个 CZML 文件。如果单击 id 为“myid”的多边形,并且想要突出显示多个多边形(如 myid_1、myid_2、myid_3)。但是我无法处理它,因为我没有得到其他多边形的实体对象来处理它的颜色变化。点击处理程序如下。

var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(function(click) {
    var pickedObject = scene.pick(click.position);
    if (Cesium.defined(pickedObject)) {
        console.log(pickedObject.id instanceof Cesium.Entity);  //returns true
        var colorProperty = Cesium.Color.YELLOW;
        pickedObject.id.polygon.material = new Cesium.ColorMaterialProperty(colorProperty);
    }
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
Run Code Online (Sandbox Code Playgroud)

如何在单击时处理其他相关多边形?任何帮助表示赞赏。

javascript cesium czml

5
推荐指数
1
解决办法
418
查看次数

CESIUM:如何从俯仰、滚转、航向为飞机制作动画?

我有包含位置(纬度、经度、高度)和方向(俯仰、滚动、航向)随时间变化的飞行数据。

我想在 CesiumJS 中代表飞机。

我试图从飞行数据创建 CZML 文件。一切都很适合这个职位。但是 CZML 格式仅支持基于地球固定轴参考中的四元数的方向 这意味着我必须为每个位置、俯仰、滚动、航向预处理这个四元数,以便编写 CZML。

你认为我应该实现这个四元数计算(不是直接的)?

或者我应该使用另一种解决方案来使用允许我直接使用俯仰、滚转、航向值的铯函数吗?。在这种情况下,我想知道可以使用哪种格式将我的飞行数据传输到 Cesium。

谢谢你的建议

quaternions euler-angles cesium czml

5
推荐指数
1
解决办法
3839
查看次数

Cesium:CZML 的流媒体示例

之前好像有人问过这个问题,但我一直找不到合适的例子。我熟悉 PHP,但不熟悉 Javascript,无法弄清楚如何流式传输 CZML。

我想在地图上显示大约 6.500 个资产。为了防止网页在加载完所有内容后显示(并测试用户的耐心),我希望它显示然后在后台加载资产。

有人可以指出我如何做到这一点的例子吗?我可以像这样加载 czml 文件:

var czmlDataSource = new Cesium.CzmlDataSource(); 
viewer.dataSources.add(czmlDataSource); 
czmlDataSource.loadUrl('some_file.czml'); 
Run Code Online (Sandbox Code Playgroud)

但这就是我得到的 :-( 我知道我应该在某处使用 .processUrl 并且我知道我应该在 CZML 文件中使用不同的数据包,因此我的 CZML 文件如下所示:

[ 
event: czml 
data: { 
    "id":"document", 
    "version":"1.0" 
  } 

event: czml 
data: { 
    "id":"1", 
    "billboard":{ 
      "image":"label.png", 
      "verticalOrigin":"BOTTOM", 
      "show":true 
    }, 
    "position":{ 
      "cartographicDegrees":[ 
        20.0, 50.0, 0 
      ] 
    } 
  } 

event: czml 
data: { 
    "id":"2", 
    "billboard":{ 
      "image":"label.png", 
      "verticalOrigin":"BOTTOM", 
      "show":true 
    }, 
    "position":{ 
      "cartographicDegrees":[ 
        10.0, 52.0, 0 
      ] 
    } 
  } 
] 
Run Code Online (Sandbox Code Playgroud)

如果有人可以提供一个工作样本,那么一个 .czml 文件和一个 .js 文件,那就太好了。谢谢!

cesium czml

4
推荐指数
1
解决办法
7174
查看次数

如何将大地位置转换为与Cesium中的地形模型一起使用的ECF位置

我想在Cesium的珠穆朗玛峰上面点一点.我昨晚最有可能的候选人是我借用来进行eodef转换的代码(来自PySatel.coord).今天上午审查后,似乎是正确的:

a = 6378.137
b = 6356.7523142
esq = 6.69437999014 * 0.001
e1sq = 6.73949674228 * 0.001
f = 1 / 298.257223563


def geodetic2ecef(lat, lon, alt):
    """Convert geodetic coordinates to ECEF.

    Units are degrees and kilometers.
    """
    lat, lon = radians(lat), radians(lon)
    xi = sqrt(1 - esq * sin(lat))
    x = (a / xi + alt) * cos(lat) * cos(lon)
    y = (a / xi + alt) * cos(lat) * sin(lon)
    z = (a / xi * (1 …
Run Code Online (Sandbox Code Playgroud)

gis geospatial coordinate-systems cesium czml

3
推荐指数
1
解决办法
2293
查看次数

铯javascript库

我想问一个关于在线kml文件到czml文件转换器的问题,因为我想将我的kml文件转换为czml文件,以便在cesium 3d globe中使用它来获取可点击的地标.请给我这个问题的答案.

cesium czml

2
推荐指数
1
解决办法
1271
查看次数