posts - 119, comments - 62, trackbacks - 0, articles - 0

          arcIMS如何實現多邊形選擇

          Posted on 2007-03-20 17:16 Kevin Meng 閱讀(384) 評論(1)  編輯  收藏
          下面是矩形選擇的源代碼。多邊形選擇多加點就可以了。
          public?class?RectSelectAction?extends?Action?{

          ????
          //?---------------------------------------------------------?Instance
          ????
          //?Variables

          ????
          //?---------------------------------------------------------?Methods

          ????
          /**
          ?????*?Method?execute
          ?????*?
          ?????*?
          @param?mapping
          ?????*?
          @param?form
          ?????*?
          @param?request
          ?????*?
          @param?response
          ?????*?
          @return?ActionForward
          ?????
          */

          ????
          public?ActionForward?execute(ActionMapping?mapping,?ActionForm?form,
          ????????????HttpServletRequest?request,?HttpServletResponse?response)?
          {
          ????????DynaActionForm?rectSelectForm?
          =?(DynaActionForm)?form;
          ????????String?startx?
          =?rectSelectForm.getString("startx");
          ????????String?starty?
          =?rectSelectForm.getString("starty");
          ????????String?endx?
          =?rectSelectForm.getString("endx");
          ????????String?endy?
          =?rectSelectForm.getString("endy");
          ????????Map?map?
          =?(Map)?request.getSession().getAttribute("THEMAP");
          ????????Polygon?polygon?
          =?this.creatPolygon(map,?startx,?starty,?endx,?endy);
          ????????
          if?(polygon?==?null)?{
          ????????????ActionMessages?msgs?
          =?new?ActionMessages();
          ????????????msgs.add(ActionMessages.GLOBAL_MESSAGE,?
          new?ActionMessage(
          ????????????????????
          "com.suzhou.message.createPolygonFail"));
          ????????????
          this.saveMessages(request,?msgs);
          ????????????
          return?mapping.findForward("resultPage");
          ????????}

          ????????FeatureLayer?menpaiLayer?
          =?null;
          ????????
          for?(int?i?=?0;?i?<?map.getLayers().getCount();?i++)?{
          ????????????
          if?(map.getLayers().item(i).getName().equals("地物點"))?{
          ????????????????menpaiLayer?
          =?(FeatureLayer)?map.getLayers().item(i);
          ????????????????System.out.println(menpaiLayer.getName());
          ????????????????System.out.println(menpaiLayer.getID());
          ????????????}

          ????????}

          ????????
          if?(menpaiLayer?==?null)?{
          ????????????ActionMessages?msgs?
          =?new?ActionMessages();
          ????????????msgs.add(ActionMessages.GLOBAL_MESSAGE,?
          new?ActionMessage(
          ????????????????????
          "com.suzhou.message.layerNotExsist",?"地物點"));
          ????????????
          this.saveMessages(request,?msgs);
          ????????????
          return?mapping.findForward("resultPage");
          ????????}

          ????????map.getLayers().setGeometry(
          true);//?設置返回空間信息
          ????????menpaiLayer.getRecordset().clearRecordset();
          ????????menpaiLayer.getRecordset().clearEnvelope();
          ????????menpaiLayer.getRecordset().clearGeometry();
          ????????map.getLayers().setOrder(
          false);
          ????????menpaiLayer.setFilterObject(
          null);
          ????????Filter?filter2?
          =?new?Filter();
          //????????filter2.addSubField("BLOCKNAME");
          //????????filter2.addSubField("MPNUM");
          //????????filter2.addSubField("MPABNAME");
          //????????filter2.addSubField("MPSUBNUM");
          ????????
          //filter2.setWhereExpression("");
          ????????filter2.setGlobalEnvelope(true);
          ????????filter2.setSpatialShape(polygon);
          ????????filter2.setRelation(Filter.AREA_INTERSECTION);
          ????????menpaiLayer.setFilterObject(filter2);
          ????????map.refresh();
          ????????menpaiLayer.setFilterObject(
          null);
          ????????
          if?(menpaiLayer.getRecordset()?==?null
          ????????????????
          ||?menpaiLayer.getRecordset().getCount()?<?1)?{
          ????????????ActionMessages?msgs?
          =?new?ActionMessages();
          ????????????msgs.add(ActionMessages.GLOBAL_MESSAGE,?
          new?ActionMessage(
          ????????????????????
          "com.suzhou.message.objectNotFound"));
          ????????????
          this.saveMessages(request,?msgs);
          ????????????
          return?mapping.findForward("resultPage");
          ????????}
          else{
          ????????????request.setAttribute(
          "result",menpaiLayer.getRecordset());
          ????????????
          return?mapping.findForward("resultPage");
          ????????}

          ????}


          ????
          /**
          ?????*?建立矩形
          ?????*?
          ?????*?
          @param?map
          ?????*?
          @param?startx:起點屏幕X坐標
          ?????*?
          @param?starty:起點屏幕Y坐標
          ?????*?
          @param?endx:終點屏幕X坐標
          ?????*?
          @param?endy:終點屏幕Y坐標
          ?????*?
          @return
          ?????
          */

          ????
          public?Polygon?creatPolygon(Map?map,?String?startx,?String?starty,
          ????????????String?endx,?String?endy)?
          {
          ????????
          try?{
          ????????????Point?pnt1?
          =?map.toMapPoint(new?Double(startx).doubleValue(),
          ????????????????????
          new?Double(starty).doubleValue());
          ????????????Point?pnt2?
          =?map.toMapPoint(new?Double(endx).doubleValue(),
          ????????????????????
          new?Double(endy).doubleValue());
          ????????????Point?pnt11?
          =?new?Point();
          ????????????Point?pnt22?
          =?new?Point();
          ????????????pnt11.setX(pnt1.getX());
          ????????????pnt11.setY(pnt2.getY());
          ????????????pnt22.setX(pnt2.getX());
          ????????????pnt22.setY(pnt1.getY());
          ????????????Points?points?
          =?new?Points();
          ????????????points.addPointObject(pnt1);
          ????????????points.addPointObject(pnt11);
          ????????????points.addPointObject(pnt2);
          ????????????points.addPointObject(pnt22);
          ????????????Ring?ring?
          =?new?Ring();
          ????????????ring.setPoints(points);
          ????????????Polygon?polygon?
          =?new?Polygon();
          ????????????polygon.addRing(ring);
          ????????????
          return?polygon;
          ????????}
          ?catch?(Exception?ex)?{
          ????????????
          return?null;
          ????????}

          ????}

          }

          Feedback

          # re: arcIMS如何實現多邊形選擇  回復  更多評論   

          2008-09-10 11:21 by onejavaer
          請問一下 您是使用ArcIMS WebADF結合Strtus進行開發的嗎?
          我開發WebGIS一直使用ArcIMS的HtmlViewer模式了 沒有嘗試使用ADF 有些不清楚的地方請您指點一下 謝謝

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 鄱阳县| 虞城县| 许昌县| 阜新市| 汝阳县| 成安县| 翼城县| 泗阳县| 天津市| 布拖县| 普陀区| 沙田区| 叙永县| 达拉特旗| 嘉义市| 台南市| 临沭县| 娱乐| 萍乡市| 固原市| 海阳市| 剑阁县| 时尚| 涞源县| 宿松县| 鹤峰县| 达孜县| 仲巴县| 岫岩| 商都县| 卢湾区| 寿阳县| 香河县| 壶关县| 江城| 永德县| 平邑县| 如东县| 靖州| 禹州市| 铁岭县|