posts - 119, comments - 62, trackbacks - 0, articles - 0
          當(dāng)我們用下面的通用代碼插入一個(gè)點(diǎn)到空間表中時(shí),會(huì)報(bào)SPECIFIED ATTRIBUTE COLUMN DOESN'T EXIST錯(cuò)誤,錯(cuò)誤信息如下:
          ArcSDE Error Number        : -38
           Error Description          : SPECIFIED ATTRIBUTE COLUMN DOESN'T EXIST.
          com.esri.sde.sdk.client.SeException:
           at com.esri.sde.sdk.client.j.a(Unknown Source)
           at com.esri.sde.sdk.client.j.a (Unknown Source)
           at com.esri.sde.sdk.client.SeInsert.intoTable(Unknown Source)
           at com.suzhou.service.sde.SDEOperation.addPointObject(SDEOperation.java:59)
           at com.suzhou.struts.action.AdminCheckNewObjAction.execute (AdminCheckNewObjAction.java:143)
           at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
           at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java :419)
           at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
           at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
           at org.apache.struts.action.ActionServlet.doGet ( ActionServlet.java:414)
           at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
           at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:237)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
           at com.suzhou.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java :24)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
           at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:214)
           at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
           at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
           at org.apache.catalina.core.StandardContextValve.invokeInternal (StandardContextValve.java:198)
           at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
           at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
           at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
           at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
           at org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:104)
           at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
           at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
           at org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:520)
           at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
           at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
           at org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:520)
           at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
           at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
           at org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:799)
           at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
           at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
           at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
           at java.lang.Thread.run(Thread.java:619)
          插入點(diǎn)的java代碼如下:

          String server = "menglikunm";

           int instance = 5151;

           String database = "ora";

           String user = "suzhou";

           String password = "suzhou";

           public Long addPointObject(long x, long y, String tabname) throws Exception {
            SeLayer insertLayer = null;
            SeConnection conn = null;
            Long intsertRowID = null;
            try {
             conn = new SeConnection(server, instance, database, user, password);
             Vector layerList = conn.getLayers();
             for (int index = 0; index < layerList.size(); index++) {
              SeLayer layer = (SeLayer) layerList.elementAt(index);
              System.out.println(layer.getName());
              if ( layer.getName().equalsIgnoreCase(tabname)) {
               insertLayer = layer;
               break;
              }
             }
            } catch (SeException e) {
             // e.printStackTrace();
             throw e;
            }
            // 開(kāi)始插入數(shù)據(jù)
            if (insertLayer == null) {
             throw new Exception("找不到空間表:" + tabname);
            }
            try {
             conn.startTransaction();
             String[] cols = new String[1];
             //cols[0] = insertLayer.getSpatialColumn();
             cols[0]="SHAPE";
             System.out.println(cols[0]);
             SeInsert insert = new SeInsert(conn);
             System.out.println(insertLayer.getName());
             insert.intoTable(insertLayer.getName(), cols);//運(yùn)行到這里時(shí)出現(xiàn)錯(cuò)誤!
             insert.setWriteMode(true);
             SeCoordinateReference coordref = (SeCoordinateReference) insertLayer
               .getCoordRef();
             SeShape shape = new SeShape(coordref);

             int numPts = 1;
             SDEPoint[] ptArray = new SDEPoint[numPts];
             ptArray[0] = new SDEPoint(x, y);
             shape.generatePoint(numPts, ptArray);
             SeRow row = insert.getRowToSet();
             row.setShape(0, shape);
             insert.execute();
             intsertRowID = new Long(insert.lastInsertedRowId().longValue());
             insert.close();
             conn.commitTransaction();
             conn.close();
            } catch (Exception ex) {
             ex.printStackTrace ();
             try {
              conn.rollbackTransaction();
              conn.close();
             } catch (Exception ex2) {
             }
             throw ex;
            }
            return intsertRowID;
           }

          之所以出現(xiàn)這個(gè)錯(cuò)誤,是因?yàn)楫?dāng)插入一個(gè)點(diǎn)到空間表中時(shí),arcsde自動(dòng)生成一個(gè)OBJECTID值,但如果你的空間表導(dǎo)到SDE的時(shí)候表中已經(jīng)有了OBJECTID字段,SDE自動(dòng)生成的是OBJECTID_1字段作為每條記錄的ID字段,如果你把OBJECTID_1字段人為的刪除,那么這時(shí)候arcSDE就找不到該字段了,就會(huì)報(bào)出SPECIFIED ATTRIBUTE COLUMN DOESN'T EXIST.的錯(cuò)誤,解決辦法是重新導(dǎo)一下該空間表,且導(dǎo)入的時(shí)候不能有命名為OBJECTID的字段。

          很多時(shí)候,這些問(wèn)題都要你自己來(lái)發(fā)現(xiàn)和解決,不能太相信ESRI的技術(shù)支持,他們大部分時(shí)候都不能給你什么幫助:)

          Feedback

          # re: arcSDE插入空間數(shù)據(jù)時(shí)出現(xiàn)錯(cuò)誤SPECIFIED ATTRIBUTE COLUMN DOESN'T EXIST的原因和解決辦法  回復(fù)  更多評(píng)論   

          2007-12-24 14:27 by QQ:316986457
          謝謝你的"很多時(shí)候,這些問(wèn)題都要你自己來(lái)發(fā)現(xiàn)和解決,不能太相信ESRI的技術(shù)支持,他們大部分時(shí)候都不能給你什么幫助:)",記下了,正在查找一個(gè)類似問(wèn)題的原因,看到了您的文章,幫助很大,交個(gè)朋友好嗎?我的QQ:316986457

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 吉水县| 阳谷县| 且末县| 柏乡县| 日喀则市| 万全县| 珲春市| 礼泉县| 双鸭山市| 绥宁县| 米林县| 剑阁县| 淄博市| 棋牌| 凉山| 北辰区| 罗定市| 上林县| 古田县| 靖远县| 海阳市| 城市| 吉安县| 贡嘎县| 镇江市| 墨竹工卡县| 芦山县| 皮山县| 阿拉善盟| 塔河县| 汪清县| 洛宁县| 昂仁县| 保亭| 玉龙| 琼结县| 墨竹工卡县| 玛曲县| 呼图壁县| 宜兰市| 盐山县|