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,可以用于后续的分析了。

发布了751 篇原创文章 · 获赞 378 · 访问量 210万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览