SQL 查询 |
SQL 查询就是根据 SQL 查询条件查找满足条件的记录。构建一个简单的 SQL 查询:获取中国地图的 China_Province_pl@China 图层中 SmID 为2的地物。
对于该简单的 SQL 查询,主要传递2个参数:queryMode 和 queryParameters。queryMode 说明查询模式(这里是 SqlQuery),queryParameters 是查询的参数,构建查询代码如下:
//SQL 查询
function queryBySql()
{
var commit=getcommit();
var uri="http://localhost:8090/iserver/services/map-china400/rest/maps/China/queryResults.json";
//设置请求体参数
var entry={};
entry.queryMode="SqlQuery";
entry.queryParameters={"networkType":null,"startRecord":0,"queryParams":[{"orderBy":null,"ids":null,"name":"China_Province_pl@China","attributeFilter":"SmID=2","groupBy":null,"linkItems":null,"joinItems":null,"fields":["SMID","Name"]}],"customParams":null,"expectCount":100000,"queryOption":"ATTRIBUTEANDGEOMETRY"}
commit.open("POST",encodeURI(uri),false,"","");
commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
//alert(toJSON(entry));
commit.send(toJSON(entry));
//解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。
var response = json_parse(commit.responseText, null);
//获取用作显示的 Div 容器。
var container = document.getElementById('container');
container.innerHTML="";
//判断查询是否成功
if(!response.succeed)
{
//查询失败
container.innerHTML+="<p>查询失败</p>";
container.innerHTML+="<p>错误码:"+response.error.code+"</p><p>错误原因:"+response.error.errorMsg+"</p>";
}else
{
//查询成功
container.innerHTML+="<p>查询成功</p>";
container.innerHTML+="<p>查询结果(queryResult)资源的 URI 为:"+response.newResourceLocation+"</p>";
}
}
其中“queryMode="SqlQuery"”说明查询为 SQL 查询,“queryParameters={…}”为查询参数。在 queryParameters 中,“"queryOption":"ATTRIBUTEANDGEOMETRY"”说明查询的结果中既要包含属性信息,也要包含空间信息(几何实体),“"queryParams":[{…}]”为查询数据集的参数集合,这里只有一组查询数据集的参数,在这组参数({…,"name":"China_Province_pl@China","attributeFilter":"SmID=2",…,"fields":["SMID","Name"]})中,name 指定的是查询的目标图层的名称,attributeFilter 是查询的限制条件(类似于 SQL 语句里 where 后面的部分),fields 指定的是查询结果应该包含的字段(这里是 SMID 和 Name)。
执行查询,得到 URI 地址类似 http://localhost:8090/iserver/services/map-china400/rest/maps/China/queryResults/niycqezr_8dcb00713c24432a9bd024ddb5678a76.json 的 queryResult 资源,该 queryResult 资源包含了符合条件的地物的 SMID、Name 字段值信息和地物的空间信息(Geometry)。
queryResult 资源的进一步解析请参见 queryResult 的解析。