首页 / 浏览问题 / WebGIS / 问题详情
调用iserver数据服务进行sql查询时,报错400
30EXP 2023年05月18日

使用产品:iserver 11i 

问题描述:调用iserver数据服务进行sql查询时,报错400

{"succeed":false,"error":{"code":400,"errorMsg":"getFeature方法中数据集Gird不是矢量数据集"}}

iserver服务测试

发布的smwu的数据源的数据结构:

存储的明明是面状矢量数据集,为什么会报这个错误

1个回答

你好,你进入该数据服务的datasource资源下,找到该数据集后,访问某个要素看看是否能成功。例如:https://iserver.supermap.io/iserver/services/data-world/rest/data/datasources/World/datasets/Capitals/features

3,740EXP 2023年05月18日
您好,感谢您的回答。我在datasource目录下甚至访问不到数据集(图层),但smwu保存的数据源里确实是存在该图层的
你尝试新建一个udbx存储这些数据,保存到新的工作空间,再去发布服务是否正常。

您好,谢谢您的回答,重新创建udbx之后服务发布正常了,在iserver网页端也能正常查询数据 。新建时重命名了udbx文件和图层名

但调用查询接口时仍然报错400

error: {code: 400, errorMsg: "请求体格式错误"}

下面是请求信息

{'datasetNames':"虎豹公园:Gird",'getFeatureMode':"SQL",'queryParameter':{'attributeFilter':"Attribution LIKE '%25穆棱局%25'"},'hasGeometry':true}

请求方法:


  var sqlParam = new L.supermap.GetFeaturesBySQLParameters({
    queryParameter: {
      //name: "Gird@虎豹公园",//"Countries@World",
      attributeFilter: "Attribution LIKE '%"+this.AttributionName+"%'"//"SMID = 234"
    },
    datasetNames: '虎豹公园:Gird'//["World:Countries"]
  });
  new L.supermap
    .FeatureService(url)
    .getFeaturesBySQL(sqlParam, function (serviceResult) {
      
      resultLayer = L.geoJSON(serviceResult.result.features).addTo(map).bindPopup('SMID = 234');
    });

我看你的代码里面做了拼接写了like查询,你将传入的参数console打印到控制台看看是不是合法的传参,如果参数正确的话,那就用相同的参数拿到iserver里面请求看看能否成功。
你好,你的代码里面datasetNames传递的是string,正确写法应该为 datasetNames:["虎豹公园:Gird"]
...