cesium中实现空间查询(思路解析加源码)

在cesium中实现空间查询(思路解析加源码)

空间查询作为GIS数据分析的基本手段,在三维GIS中也是必不可少的,下面就对具体实现做具体介绍


目录

在cesium中实现空间查询(思路解析加源码)

前言

一、获取待查询的点

二、获取待查询的面

二、面和点求交

总结

四、更多



前言

如果你不是GIS专业,那么你对空间查询的也许会很陌生,下面我就简单解释一下什么是空间查询,就在一个范围里面有很多个点,你随手圈出来一部分区域,要查出你圈出来的区域里面的点有哪些,这就是空间查询。


一、获取待查询的点

第一步就是要把我们需要查询的点数据准备好。方法如下:

         var res = response.data;
          var Towerspoints = [];
          for (var i = 0; i < res.length; i++) {
            var feature = new Object();
            feature.type = "Feature";
            feature.properties = { Name: res[i].evid };
            feature.geometry = {
              type: "Point",
              coordinates: [res[i].jingdu, res[i].weidu],
            };
            Towerspoints.push(feature);
          }

          TowersCollection = {
            type: "FeatureCollection",
            features: Towerspoints,
          };

二、获取待查询的面

第二步就是要把我们需要查询的范围(就是面对象)数据准备好。方法如下:

     var ellipsoid = viewer.scene.globe.ellipsoid;
      for (var i = 0; i < arrPoint.length; i++) {
        var cartograhpinc = ellipsoid.cartesianToCartographic(arrPoint[i]);
        var lng = Cesium.Math.toDegrees(cartograhpinc.longitude); //经度
        var lat = Cesium.Math.toDegrees(cartograhpinc.latitude); //维度
        searchRegion.push([lng, lat]);
      }
      var startPoint = ellipsoid.cartesianToCartographic(arrPoint[0]);
      var lng_S = Cesium.Math.toDegrees(startPoint.longitude);
      var lat_S = Cesium.Math.toDegrees(startPoint.latitude);
      searchRegion.push([lng_S, lat_S]);
      searchWithin.push(searchRegion);
      var searchWithinEntity = Cesium.turf.polygon(searchWithin);
   

二、面和点求交

这一步就是最后一步了,利用前面俩步我们准备好的点对象和面对象就行空间计算,这里我们利用到了turf库,方法如下:

 var ptsWithin = Cesium.turf.pointsWithinPolygon(
        TowersCollection,
        searchWithinEntity
      );

总结

1、主要是cesium对象和turf对象进行互相贯通

2、其次就是利用turf接口进行求交计算

效果如下:

空间查询
空间查询结果

四、更多

这里有个地方需要说明,由于篇幅和时间有限,没有写出所有代码,这里主要列出来了主要实现思路。

如果你还有不了解的地方,

如果你还需要进行cesium交流,

那一起学习探讨吧。

你可以加入我们的基地,我们基地的地址是:450342630(QQ群号)

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Cesium提供了多种空间分析工具,可以帮助用户在三维场景进行空间分析。以下是其的一些工具: 1. 空间测量工具:该工具可以帮助用户测量两点之间的距离、两线之间的距离、多边形面积等。 2. 可视域分析工具:该工具可以帮助用户确定一个位置是否可以看到其他位置,从而帮助用户进行可视域分析。 3. 地形剖面工具:该工具可以帮助用户生成地形剖面图,以便用户更好地了解地形的变化情况。 4. 空间查询工具:该工具可以帮助用户查询三维场景的对象信息,例如查找离某个位置最近的建筑物、查找所有高于某个高度的建筑物等。 5. 模拟分析工具:该工具可以帮助用户进行模拟分析,例如飞行模拟、车辆行驶模拟等。 这些工具可以通过Cesium的API进行调用并进行定制化配置,满足用户的不同分析需求。 ### 回答2: Cesium是一个基于Web的三维地球、地理空间数据可视化的开源库。虽然Cesium本身并不直接提供空间分析功能,但可以通过它的一些插件、扩展以及与其他库的结合来实现空间分析。 首先,Cesium提供了一些基本的几何对象,例如点、线、面等,可以用来表示和操作地理空间数据。通过这些基本对象,可以进行一些简单的空间分析,如计算两个点之间的距离、两条线的交点等。 其次,Cesium可以与其他地理空间数据处理库结合使用,如Turf.js、JSTS等。这些库提供了丰富的空间分析功能,例如缓冲区分析、叠分析、网络分析等。通过将这些库与Cesium结合使用,可以在Cesium实现更复杂的空间分析。 此外,Cesium还支持载和展示各种地理空间数据格式,包括矢量数据(如GeoJSON、KML)、栅格数据(如影像、地形)以及点云数据等。通过载和展示这些数据,可以对其进行空间分析,例如提取特定区域的数据、计算数据的统计特征等。 最后,Cesium还提供了一些插件和扩展,例如cesium-ion、cesium-sensor-volumes等。这些插件和扩展可以用来进行更复杂的空间分析,如视域分析、阴影分析等。 综上所述,尽管Cesium本身并不直接提供空间分析功能,但通过结合其他库的使用、载地理空间数据以及使用相关插件和扩展,我们可以在Cesium实现各种空间分析操作。 ### 回答3: Cesium是一个用于构建虚拟地球和空间可视化的JavaScript库。通过Cesium,我们可以实现多种空间分析功能。 首先,Cesium提供了高度精确的地理坐标定位系统,支持包括经纬度、高度、海拔等在内的多种空间坐标系统。我们可以通过Cesium的坐标转换函数,在不同坐标系统之间进行转换,实现空间数据的兼容性。 其次,Cesium提供了强大的地理信息处理功能。我们可以使用该库载和显示各种地理数据,如矢量数据、栅格数据、地形数据等。同时,Cesium还支持空间数据的可视化和渲染,可以将数据以三维模型、标注、热力图等形式呈现在虚拟地球上。 在空间分析方面,Cesium提供了一系列的工具和功能。例如,我们可以使用Cesium的渲染器,对空间数据进行空间关系分析,如相交、包含、相离等。此外,Cesium还支持路径规划和导航功能,可以进行经纬度之间的路线规划和导航。 另外,Cesium还提供了高级的空间分析功能,如可视域分析、阴影分析、地形剖面等。我们可以使用Cesium的可视化工具,在虚拟地球上模拟光照条件,并计算特定位置的可视域范围。同时,Cesium还支持地形剖面功能,可以跟踪沿着指定路径的地形特征,如高程、坡度等。 总而言之,Cesium通过提供强大的地理信息处理和可视化功能,为空间数据分析提供了丰富的工具和技术支持。无论是在地理信息系统、城市规划还是环境监测领域,Cesium都可以帮助我们更好地分析、展示和理解空间数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值