标签: cesium

如何在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映射可以在Apache HTTP服务器而不是node.js环境中运行吗?

我有一个Apache HTTP服务器来处理我对Ruby on Rails项目的所有请求.我们正在考虑添加一个Cesium地图组件.我想知道我是否可以在Apache HTTP服务器上运行Cesium而不是设置node.js环境?

apache node.js cesium

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

如何在Cesium地图中更改EllipseOutlineGeometry的宽度?

我正在关注沙堡椭圆轮廓几何.我想知道是否有任何方法可以使椭圆线宽更宽?有一些使用width属性使折线更宽的例子,但似乎没有办法制作一个ellipseOutlineGeometry对象.sandcastle示例在末尾有一个lineWidth设置,但是对此的更改似乎不会影响椭圆轮廓的宽度.

沙箱代码:

// Create the ellipse geometry.  To extrude, specify the
// height of the geometry with the extrudedHeight option.
// The numberOfVerticalLines option can be used to specify
// the number of lines connecting the top and bottom of the
// ellipse.
ellipseOutlineGeometry = new Cesium.EllipseOutlineGeometry({
    center : Cesium.Cartesian3.fromDegrees(-95.0, 35.0),
    semiMinorAxis : 200000.0,
    semiMajorAxis : 300000.0,
    extrudedHeight : 150000.0,
   rotation : Cesium.Math.toRadians(45),
   numberOfVerticalLines: 10
});
// Create a geometry instance using the ellipse geometry
// created above.
var extrudedEllipseOutlineInstance …
Run Code Online (Sandbox Code Playgroud)

javascript map ellipse webgl cesium

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

如何将 x、y、z 转换为 Cesium 中的经度、纬度、高度?

使用three.js库我已经组装了一个设计(植物)。该设计包含许多较小的模型,这些模型具有从原点 (0,0,0) 在 (x, y, z) 中的位置参考。在以下链接中附上了示例屏幕截图

组装模型参考图像

现在我想将具有自己位置的单个模型加载到 Cesium 中。当我尝试加载直接将位置 (x, y, z) 转换为 (north, Eastern, up) 时,结果并不如预期。所有的模型都是分散的。

我试图实现的功能是,基于一些原点(lon,lat,alt)点,我应该将模型定位到铯中,参考(x,y,z)相对于铯坐标(lon,lat,alt) )

例如

  • 原点地理坐标 (ori_lon, ori_lat, ori_alt) => (-106.690647, 36.806761, 0)

  • 模型坐标 (m_x, m_y, m_z) => (-150.9, 126.26, 217.7)

  • 铯的期望坐标:(ori_lon + m_x、ori_lat + m_y、ori_alt + m_z)

或一些算法来实现这一点。

我已尝试使用以下文章将 (x, y, z) 转换为具有某些来源 (long, lat, alt) 的 (long, lat, alt),但没有成功:(

(x, y, z) 坐标 >> 地理坐标

解决问题的建议/帮助。

javascript math cesium

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

为 http-server 设置 MIME 类型

我正在使用 Cesium Terrain Provider。它要求服务器返回的 MIME 类型是“application/octet-stream”。我目前正在使用通过 npm 提供的 http-server 为目录提供服务。我如何配置服务器这样做?还有其他更好的选择吗?

javascript node.js mime-types npm cesium

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

Cesium DataSourceCollection图层排序

我有多个GeoJsonDataSource对象要放在铯地球仪上。问题是,如果它们重叠,则会出现一些Z轴战斗问题,并且无法调整它们的顺序。

有没有一种方法可以指定DataSource对象的顺序DataSourceCollection

例如,我想使用以下代码在红色多边形的顶部放置绿色多边形:

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

var red = Cesium.GeoJsonDataSource.load('map1.geojson', {
  fill: new Cesium.Color(1, 0, 0, 1.0)
});

var green = Cesium.GeoJsonDataSource.load('map2.geojson', {
  fill: new Cesium.Color(0, 1, 0, 1.0)
});

viewer.dataSources.add(red);
viewer.dataSources.add(green);
Run Code Online (Sandbox Code Playgroud)

但是,结果看起来像这样:

铯屏截图显示Z战

我注意到,如果将alpha参数调整为小于1.0,则可以修复z冲突,但是顺序仍然无法解决。

javascript gis z-index geojson cesium

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

如果我知道多边形的 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 1.35)

我正在尝试为 HomeBotton 小部件设置默认音高。

  var home = Cesium.Rectangle.fromDegrees(11.34176,45.47452,17.60577,49.41534);
  var heading = 0.0;
  var pitch = Cesium.Math.toRadians(-45.0);
  var range = 0.0;
  Cesium.Camera.DEFAULT_VIEW_RECTANGLE = home;
  Cesium.Camera.DEFAULT_OFFSET =  Cesium.HeadingPitchRange(heading, pitch, range);

  var geeMetadata = new Cesium.GoogleEarthEnterpriseMetadata({
    url : 'http://openg.kartenwerkstatt.at/Austria3DSmall'
  });

  var viewer = new Cesium.Viewer('cesiumContainer', {
    imageryProvider : new Cesium.GoogleEarthEnterpriseImageryProvider({
        metadata : geeMetadata
    }),
    terrainProvider : new Cesium.CesiumTerrainProvider({
        url : '//assets.agi.com/stk-terrain/world'
    }),
    vrButton: true,
    animation: false,
    baseLayerPicker : false,
    homeButton: true,
    infoBox: true,
    geocoder: true,
    sceneModePicker: false,
    selectionIndicator: false,
    timeline: false,
    sceneModePicker: false,
    navigationHelpButton: …
Run Code Online (Sandbox Code Playgroud)

javascript cesium

5
推荐指数
0
解决办法
272
查看次数

我如何以编程方式调整 Cesium 承诺方法中元素的高度。

我正在尝试移动从 cesium.js 中的 geojson 文件加载的实体的元素高度。我正在使用来自 Cesium Workshop /的示例 App.js 文件

我将如何修改下面的代码以调整数据实体高度,以便将它们固定到地形的高程。我拥有的 geojson 文件的高度值为 0。此高度需要与该位置的地形相匹配。当我渲染这些数据时,许多点都在地形下。我假设我还需要查找地形高度,将数据转换为笛卡尔坐标来回协调到极坐标以将偏移量添加到实体中。

var geojsonOptions = {
        clampToGround : true
    };
 
 
 var testLinePromise = Cesium.GeoJsonDataSource.load('./Source/SampleData/testLines.geojson', geojsonOptions);

    // Save an new entity collection of neighborhood data
    var testLines;
    testLinePromise.then(function(dataSource) {
        // Add the new data as entities to the viewer
        viewer.dataSources.add(dataSource);
        testLines = dataSource.entities;

        // Get the array of entities
        var testLineEntities = dataSource.entities.values;
        for (var i = 0; i < testLineEntities.length; i++) {
            var entity …
Run Code Online (Sandbox Code Playgroud)

javascript entity elevation latitude-longitude cesium

5
推荐指数
0
解决办法
881
查看次数