自学内容网 自学内容网

Vue3使用shapefile读取矢量数据,以数组形式返回坐标点

npm安装:

npm install shapefile --save-dev

源码:

<script setup>
import { ElMessage } from 'element-plus';
import { ref } from 'vue'; // 引入 ref
import * as shapefile from "shapefile";

// 使用 ref 创建一个引用
const uploadRef = ref(null);

// 解析文件
const fileChange = (param) => {
  console.log(param.file)
  // 直接使用 uploadRef 引用来调用 clearFiles 方法
  uploadRef.value.clearFiles()

  const reader = new FileReader()
  const fileData = param.file
  // 读取文件
  reader.readAsArrayBuffer(fileData)

  reader.onload = function () {
    // 定义geojson数组, 一个shp里会有多个面, 即有多个geometry
    let geojsonArr = []
    shapefile.open(this.result)
      .then((source) => {
        source.read().
        then(function log(result){
          if (result.done) {
            // 解析完成
            console.log(geojsonArr)
          }

          const json = result.value
          geojsonArr.push(json)
          return source.read().then(log)
        })
      })
      .catch((error) => {
        console.error(error.stack)
        ElMessage.error("读取shp文件失败")
      })
  }
}
</script>
<template>
  <el-upload ref="uploadRef" action="111111" :limit="1" :file-list="fileList" accept="shp" :http-request="fileChange"
    :auto-upload="true">
    <el-button slot="trigger" size="small" type="primary">上传文件</el-button>
  </el-upload>
</template>
<style scoped>

</style>

效果展示:


原文地址:https://blog.csdn.net/Ian1025/article/details/142337973

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!