iServer REST API将数据导入DataStore

背景

自从SuperMap iServer 9D 版本推出了DataStore这一款应用程序后,越来越多的人通过 iServer DataStore 快速创建数据存储,并将数据存储与 iServer 关联起来,通过 iServer 数据目录服务访问到这些数据存储,进而可下载、上传数据,以及使用这些数据进行分析等。所以这里将介绍使用REST API将各种数据导入到DataStore中

一.搭建DataStore并配置到iserver

搭建步骤可以参考帮助文档
http://support.supermap.com.cn/DataWarehouse/WebDocHelp/iServer/Server_Service_Management/datastore/DataStore_management.htm
如果配置到iserver中提示安装失败,需要具体查看每个数据库的日志具体分析。

二.查看REST API

帮助文档搜索dataimport,找到relationship下的dataimport资源。要将文件上传到datastore,需要执行post请求。url中包含的参数如下(当然还需要传递文件):
在这里插入图片描述
可以看到上传包含5中类型,但现在还可以对shp文件进行上传,且当类型不同时参数也不同(udb、smwu、shp都必须压缩成zip包才可上传)。

三.系统设计与编码

由于类型不同,所以这里简单的设置类型下拉框,根据类型不同,控制下面参数的显隐。效果如下图所示:

这里是根据上传的文件类型来判断参数盒子的显隐,同时也需要判断上传的文件类型是不是我们需要的数据类型,所以需要拿到文件格式,代码如下:

var my_file = document.querySelector('#filed');
var ww;
my_file.onchange = function(){
ww=my_file.files[0];
var name=ww.name.substring(ww.name.lastIndexOf(".")+1);

此处name即为上传的文件格式。
但是当上传文件为zip的时候,此种判断就无效了,这时候该怎么判断呢?
这里引入了zip.js库,能够读取zip包内容并输出文件目录。引入代码如下:

<script src="http://gildas-lormeau.github.io/zip.js/demos/zip.js"></script>
<script src="http://gildas-lormeau.github.io/zip.js/demos/mime-types.js"></script>
<script src="http://sqqihao.github.io/codes/zipjs/UnZipArchive.js"></script>

实现代码:

if(name==="zip"){
			var str = new Array();
		    window.un = new UnZipArchive(ww);
        	un.getData(function(){
        	var arr = un.getEntries();
        	for(var i=0; i<arr.length; i++ ) {
               var name=arr[i].substring(arr[i].lastIndexOf(".")+1);
               str.push(name);
            };
          }

zhel将被压缩的文件格式存在str数组中。只需判断str数组里是否包含udb,smwu,shp文件即可:

 if("WORKSPACE"===daType){
        if(str.includes("smwu")||str.includes("sxwu")) {
           s.html(ww.name);
			$("#dataInfo").attr("style","display:none;");
			}else{
				s.html("格式错误或无工作空间");
			} 
       }

以上综合判断完成后,即可执行post请求:

dataType=$("#dType").val(),
        separator=$("#fenge").val(),
        xIndex=$("#xIndex").val(),
        yIndex=$("#yIndex").val(),
        check=$("input[type='checkbox']").is(':checked');
        var formFile = new FormData();
        formFile.append("files", ww);
		$.ajax({
        type: "POST",
        url: url+"?token="+token+"&dataType="+dataType+"&separator="+separator+"&xIndex="+xIndex+"&yIndex="+yIndex+"&firstRowIsHead="+check,
        data:formFile,
        processData: false,
        contentType: false,
        dataType: "JSON",
        success: function(result) {
        	alert('上传成功')
        	console.log(result)
        },
        error:function(e) { 
        	alert('上传失败')
            console.log(e);
        } 
        });

执行成功后可以直接去数据目录下的/relationship/datas查看上传的数据信息在这里插入图片描述
同时返回的响应参数有,以此来根据自己的需求来使用:
在这里插入图片描述
至此,就将一些数据导入进了DataStore,可以用于后续的分析了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值