web端读取shp文件压缩包,Geojson与WKT格式互转

1.前端框架使用vue;读取shp的库为shpjs;geojson转wkt或wkt转geojson用terraformer-wkt-parser。
2.安装 cnpm install shpjs --s cnpm install terraformer-wkt-parser --s
3.读取shp压缩包文件示例代码

<template>
  <div class="wrapper">
    <a-upload
      name="shp"
      :before-upload="beforeUpload"
      :customRequest="customRequest"
      :showUploadList="false"
      accept=".zip"
      :fileList="fileList"
    >
      <a-button type="primary">
        选择SHP文件
      </a-button>
    </a-upload>
  </div>
</template>

<script>
import shp from "shpjs";
export default {
  components: {},
  props: {},
  data() {
    return {
      fileList: [],
    };
  },
  watch: {},
  computed: {},
  methods: {
    // 删除列表文件
    deleteShp() {
      this.fileList = [];
    },
    // 上传文件前校验
    beforeUpload(file) {
      const type = file.name.split(".")[1];
      const isJpgOrPng = type === "zip";
      if (!isJpgOrPng) {
        this.$message.error("只能上传zip格式的文件!");
      }
      const isLt40K = file.size / 1024 < 500;
      if (!isLt40K) {
        this.$message.error("文件不得大于500KB!");
      }
      return isJpgOrPng && isLt40K;
    },
    // 上传文件
    customRequest(data) {
      const self = this;
      const reader = new FileReader();
      reader.readAsArrayBuffer(data.file);
      reader.onload = function() {
        // eslint-disable-next-line no-undef
        shp(this.result).then(
          (geojson) => {
            if (geojson.features && geojson.features.length === 0) {
              self.$message.error("数据存在问题,请重新上传!");
              self.deleteShp();
            } else if (geojson.features.length > 1) {
              self.$message.error("数据是多面对象,请重新上传!");
              self.deleteShp();
            }
          },
          (error) => {
            self.deleteShp();
            self.$message.error("上传文件不正确");
          }
        );
      };
      reader.onerror = function(event) {
        self.$message.error("上传失败");
        reader.abort();
        self.deleteShp();
      };
    },
  },
  created() {},
  mounted() {},
};
</script>
<style lang="scss" scoped>
.wrapper {
}
</style>

2.wkt与geojson互转代码
参考示例

import WKT from 'terraformer-wkt-parser'
var geojson = WKT.parse(wktData);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值