我正在使用st_geometry字段并尝试查看PNU代码值。
我尝试了两种方式。
oracle数据库查询。
从LP_PA_CBND_4600000000 a中选择a.pnu 其中sde.st_contains(a.shape, sde.st_point(177566.6728471977,160430.12935426735,4())= 1
发生事件时,单击地图对象 我得到了evt.mapPoint(x,y)。 4是我的兄弟。 这种方式花了很长时间。并且查询失败了......
我的代码如下。
PoiClick : function(map, evt) {
G_evt =evt;
console.log("ClickPoint ==== "+evt.mapPoint);
var targetLayerId = 'LP_PA_CBND';
var url = map.Layers.getLayerInfo(targetLayerId).SVC_URL;
var map = map.getMap();
//파라미터 설정.
var idParams = new krcgis.core.tasks.IdentifyParameters();
G_idparams =idParams;
idParams.geometry = evt.mapPoint;
idParams.mapExtent = map.extent;
idParams.returnGeometry = true;
idParams.tolerance = 3;
idParams.layerOption = krcgis.core.tasks.IdentifyParameters.LAYER_OPTION_ALL;
idParams.width = map.width;
idParams.height = map.height;
krcgis.Function.GetPoiInfo(url, idParams);
return evt.mapPoint;
},
//POI 정보를 가져온다.
GetPoiInfo : function(url, idParams) {
idTask = new krcgis.core.tasks.IdentyfyTask(url);
idTask
.execute(idParams)
.addCallback(function (response) {
G_response = response;
if (response) {
return response;
}
})
.addErrback(function (error) {
console.log('GetPoiInfo result error=', error);
});
}
可以通过这种方式获得代码pnu。
但是,这种方式与获取pnu代码的值不同,具体取决于缩放级别。
我希望在单个x,y值中获得单个pnu代码。
如何获取pnu代码?
数据库表:
答案 0 :(得分:0)
识别任务可能有点棘手,因为它考虑了缩放级别,因此它并不总是返回相同的结果。
我建议您使用QueryTask。只有一个问题 - 它没有容差参数,但你可以缓冲你的evt.mapPoint并获得Polygon。