zoukankan      html  css  js  c++  java
  • 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);
    
    

    本文转自 https://blog.csdn.net/wo_buzhidao/article/details/111880403?spm=1001.2014.3001.5502,如有侵权,请联系删除。

  • 相关阅读:
    正在找工作/打算找工作的看过来!
    xx星空面试题
    买的书不少,看的书不多,这是病
    公司那么多 我想去面面
    Android设备直接运行java项目?还杀不死?
    node-sass安装失败 解决办法(linux和window)
    Vue + element控制鼠标右键菜单
    Vue.js中Promise、异步、同步、定时器
    选择器&伪类选择器
    根据城市名称获取对应的省份名称
  • 原文地址:https://www.cnblogs.com/hustshu/p/15621504.html
Copyright © 2011-2022 走看看