地物查询
这里查询的结果有默认上限,没记错应该是1000,超出默认上限就有问题了,所以要配置maxFeatures,值根据项目具体需要设置。
- 指定 ID 查询
在数据集中查询符合指定 ID 的地理空间要素,并在客户端中展示出来。
// 数据集ID查询服务参数
let idsParam = new mapboxgl.supermap.GetFeaturesByIDsParameters({
IDs: [234],
datasetNames: ["World:Countries"]
});
// 创建指定ID查询实例
let url = "https://iserver.supermap.io/iserver/services/data-world/rest/data";
new mapboxgl.supermap.FeatureService(url).getFeaturesByIDs(idsParam).then(function (serviceResult) {
// 获取服务器返回的结果
let features = serviceResult.result.features;
});
- 指定 SQL 查询
在指定数据集集合中查找符合 SQL 条件的矢量要素,并在客户端中展示出来。
// 指定SQL查询服务参数
let sqlParam = new mapboxgl.supermap.GetFeaturesBySQLParameters({
queryParameter: {
name: "Countries@World",
attributeFilter: "SMID = 234"
},
datasetNames: ["World:Countries"]
});
// 创建SQL查询实例
let url = "https://iserver.supermap.io/iserver/services/data-world/rest/data";
new mapboxgl.supermap.FeatureService(url).getFeaturesBySQL(sqlParam).then(function (serviceResult) {
// 获取服务器返回的结果
let features = serviceResult.result.features;
});
- 矩形范围查询
在指定数据集集合中查找符合矩形范围的矢量要素,并在客户端中展示出来。
let url = "https://iserver.supermap.io/iserver/services/data-world/rest/data";
// 指定矩形范围查询处理
let sw = new mapboxgl.LngLat(-20, -20);
let ne = new mapboxgl.LngLat(20, 20);
let lngLatBounds = new mapboxgl.LngLatBounds(sw, ne);
// 设置矩形范围查询参数
let boundsParam = new mapboxgl.supermap.GetFeaturesByBoundsParameters({
datasetNames: ["World:Capitals"],
bounds: lngLatBounds
});
// 创建矩形范围查询实例
new mapboxgl.supermap.FeatureService(url).getFeaturesByBounds(boundsParam).then(function (serviceResult) {
// 获取服务器返回的结果
let features = serviceResult.result.features;
});
- 任意几何范围查询
在指定数据集集合中查找符合几何范围的矢量要素,并在客户端中展示出来。
let url = "https://iserver.supermap.io/iserver/services/data-world/rest/data";
// 设置几何查询范围
let queryPolygonGeometry = {
"type": "Polygon",
"coordinates": [[[0, 0], [-10, 30], [-30, 0], [0, 0]]]
};
// 设置任意几何范围查询参数
let geometryParam = new mapboxgl.supermap.GetFeaturesByGeometryParameters({
datasetNames: ["World:Countries"],
geometry: queryPolygonGeometry,
spatialQueryMode: "INTERSECT" // 相交空间查询模式
});
// 创建任意几何范围查询实例
new mapboxgl.supermap.FeatureService(url).getFeaturesByGeometry(geometryParam).then(function (serviceResult) {
// 获取服务器返回的结果
let features = serviceResult.result.features;
});
- 距离查询
在地图服务中的指定图层中查找符合一定距离的矢量要素,并在客户端中展示出来。
let url = "https://iserver.supermap.io/iserver/services/map-world/rest/maps/World";
// 添加查询中心点
let point = new mapboxgl.LngLat(104, 30);
// 设置距离查询参数
let param = new mapboxgl.supermap.QueryByDistanceParameters({
queryParams: {name: "Capitals@World.1"},
distance: 10, // distance的单位跟地物的坐标系单位一致,此处为度
geometry: point
});
// 创建距离查询实例
new mapboxgl.supermap.QueryService(url).queryByDistance(param).then(function (serviceResult) {
// 获取服务器返回的结果
let features = serviceResult.result.features;
});
- 缓冲区查询
在数据服务中的指定数据集集合中查找符合缓冲区的矢量要素,并在客户端中展示出来。
let url = "https://iserver.supermap.io/iserver/services/data-world/rest/data";
// 设置缓冲区查询范围
let queryBufferGeometry = {
"type": "Polygon",
"coordinates": [[[-20, 20], [-20, -20], [20, -20], [20, 20], [-20, 20]]]
};
// 设置缓冲区查询参数
let bufferParam = new mapboxgl.supermap.GetFeaturesByBufferParameters({
datasetNames: ["World:Capitals"],
bufferDistance: 30, // bufferDistance的单位跟地物的坐标系单位一致,此处为度
geometry:queryBufferGeometry
});
// 创建缓冲区查询实例,向服务器发送请求,并获取返回的结果
new mapboxgl.supermap .FeatureService(url).getFeaturesByBuffer(bufferParam).then(function (serviceResult) {
// 获取服务器返回的结果
let features = serviceResult.result.features;
});
- 查询栅格信息
在指定数据集集合中查找某一地理位置所对应的像素值信息,并在客户端中展示出来。
let url = "https://iserver.supermap.io/iserver/services/data-world/rest/data";
map.on("click",function (evt) {
// 获取当前点击的(x,y)
let x = evt.latlng.lng;
let y = evt.latlng.lat;
// 设置栅格查询的参数信息
let getGridCellInfosParam = new mapboxgl.supermap.GetGridCellInfosParameters({
dataSourceName: "World",
datasetName:"WorldEarth",
X: x,
Y: y
});
// 创建栅格查询实例
new mapboxgl.supermap.GridCellInfosService(url).getGridCellInfos(getGridCellInfosParam).then(function (serviceResult) {
if (!serviceResult.result) {
return;
}
// 获取服务端返回数据
let result = serviceResult.result;
});
});
- 查询字段信息
在指定数据集集合中查询字段的信息,包括:字段名称、字段类型、字段别名、字段默认值等,并在客户端中展示出来。
let dataURL = "https://iserver.supermap.io/iserver/services/data-world/rest/data"
// 设置字段查询参数
let param = new mapboxgl.supermap.FieldParameters({
datasource: "World",
dataset: "continent_T"
});
let fieldName = 'SmID';
// 创建字段查询实例
new mapboxgl.supermap.FieldService(dataURL).getFields(param).then(function (serviceResult) {
fieldStatistic(fieldName);
});
// 查询指定字段
function fieldStatistic(fieldName) {
// 设置查询指定字段参数
let param = new mapboxgl.supermap.FieldStatisticsParameters({
datasource: currentData.dataSourceName,
dataset: currentData.dataSetName,
fieldName: fieldName,
statisticMode: [
mapboxgl.supermap.StatisticMode.MAX,
mapboxgl.supermap.StatisticMode.MIN,
mapboxgl.supermap.StatisticMode.SUM,
mapboxgl.supermap.StatisticMode.AVERAGE,
mapboxgl.supermap.StatisticMode.STDDEVIATION,
mapboxgl.supermap.StatisticMode.letIANCE
]
});
// 向服务端发送请求并获取数据
new mapboxgl.supermap.FieldService(dataURL).getFieldStatisticsInfo(param, function (serviceResult) {
// 获取返回数据
let result = serviceResult.result;
});
}