shp文件读取并利用cesium进行可视化

文章介绍了如何使用shapefile库来读取SHP文件,转换为GeoJSON格式,并在Cesium中进行地图可视化。在读取过程中可能会丢失投影信息和属性信息,但可以成功将海口市的SHP数据展示在地图上。
摘要由CSDN通过智能技术生成

1.shp文件读取

目前网上有很多种shp文件读取方式,目前shapefile(参考文章:https://blog.csdn.net/weixin_45390762/article/details/127531717)的文件读取效果较好,我暂时采用了这种方法进行读取。

方法缺点:丢弃了shp中的投影信息、属性信息。

1.1 shapefile安装

在项目中采用如下命令安装shapefile插件。

npm install shapefile

1.2shp读取

读取的resgeojson即为shp转化为geojson的结果。之后就可以采用cesium进行可视化。

注:在方法中需要注意this的作用域,读取shp的方法中具有this.result,因此如果要将读取的geojson保存为全局变量,需要采用const that = this进行区别。

  if ('.shp'.includes(format)) {
      const fileReader = new FileReader();
      fileReader.readAsArrayBuffer(file);
      const that = this
      fileReader.onload = function () {
        const shapefile = require('shapefile');
        shapefile.read(this.result).then((resgeojson) => {
          console.log("shp加载2", resgeojson);
          that.geojson = resgeojson
        });
      }
    }

2.cesium可视化

geojson即为上一节中在shp读取的结果,直接放到cesium的Cesium.GeoJsonDataSource方法中即可。

        CesiumMap.Map.dataSources
            .add(
              Cesium.GeoJsonDataSource.load(geojson, {
                stroke: Cesium.Color.fromCssColorString(color),
                fill: Cesium.Color.fromCssColorString(color).withAlpha(0.3),
                strokeWidth: 6,
              })
            )
            .then((res) => {
              this.dataSource = res;
              this.dataSource.name = "region";
              CesiumMap.Map.flyTo(this.dataSource);
            });

3.结果

采用上述方法读取的海口市shp数据,能完整显示到地图上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值