arc-jsapi如何使用查找字段进行st_geometry?

时间:2016-06-13 08:35:17

标签: oracle-sqldeveloper arcgis-js-api

我正在使用st_geometry字段并尝试查看PNU代码值。

我尝试了两种方式。

  1. oracle数据库查询。

    从LP_PA_CBND_4600000000 a中选择a.pnu 其中sde.st_contains(a.shape, sde.st_point(177566.6728471977,160430.12935426735,4())= 1

  2. 发生事件时,单击地图对象 我得到了evt.mapPoint(x,y)。 4是我的兄弟。 这种方式花了很长时间。并且查询失败了......

    1. 我使用了arcgis api的IdentifyParameters
    2. 我的代码如下。

        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代码?

      数据库表:

      enter image description here

      enter image description here

1 个答案:

答案 0 :(得分:0)

识别任务可能有点棘手,因为它考虑了缩放级别,因此它并不总是返回相同的结果。

我建议您使用QueryTask。只有一个问题 - 它没有容差参数,但你可以缓冲你的evt.mapPoint并获得Polygon。