sinoly

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            29 隨筆 :: 76 文章 :: 189 評論 :: 0 Trackbacks
          ???? // 添加特征值到新的特征對象中。等同于新建一個postgis數據表并向其中插入數據
          ????@SuppressWarnings( " deprecation " )
          ????
          public ? static ? void ?AddNewFeatures() {
          ????????
          try ? {
          ????????????AttributeType?geom?
          = ?AttributeTypeFactory.newAttributeType( " the_geom " ,LineString. class );
          ????????????FeatureType?ftRoad?
          = ?FeatureTypeFactory.newFeatureType( new ?AttributeType[]? {geom} ,? " tem_road " );
          ????????????WKTReader?wktReader?
          = ? new ?WKTReader();
          ????????????
          try ? {
          ????????????????LineString?geometry?
          = ?(LineString)?wktReader.read( " LINESTRING?(0?0,?10?10) " );
          ????????????????pgDatastore.createSchema(ftRoad);
          ????????????????FeatureWriter?aWriter?
          = ?pgDatastore.getFeatureWriter( " tem_road " ,
          ????????????????????????((FeatureStore)?pgDatastore.getFeatureSource(
          " tem_road " )).getTransaction());
          ????????????????Feature?aNewFeature?
          = ?aWriter.next();
          ????????????????
          /**
          ?????????????????*?這里存在一個問題,就是如果一次插入的數據有多個字段來描述此地理特征,應該如何處理呢?
          ?????????????????*?setAttribute(int?i,Object?obj)第一個參數表示索引,但是第二個通過程序插入數據時就會
          ?????????????????*?提示要求一個LineString對象。。。所以存在疑問。
          ?????????????????*?
          */

          ????????????????aNewFeature.setAttribute(
          0 ,?geometry);
          ????????????????
          ????????????????aWriter.write();
          ????????????????aWriter.close();
          ????????????}
          ? catch ?(ParseException?e)? {
          ????????????????e.printStackTrace();
          ????????????}
          ? catch ?(IllegalAttributeException?e)? {
          ????????????????e.printStackTrace();
          ????????????}
          ? catch ?(IOException?e)? {
          ????????????????e.printStackTrace();
          ????????????}

          ????????}
          ? catch ?(FactoryRegistryException?e)? {
          ????????????e.printStackTrace();
          ????????}
          ? catch ?(SchemaException?e)? {
          ????????????e.printStackTrace();
          ????????}


          ????}
          ??? 代碼中的pgDatastore是定義的一個DataStore對象,這個對象的生成是根據前兩天的代碼來連接POSTGIS數據庫的。
          ??? 問題就在對Feature.setAttribute(int i,Object obj);這個方法執行的時候,如果obj是一個LineString對象是沒有問題的,就和已經完成的代碼一樣。上面的代碼本身是可以運行的,可是如果一個Feature對象有多個屬性呢?我在geotools 2.3的API中還沒有找到我需要的方法。。。繼續尋覓。。。我的想法是存在一個插入Feature 對象,這樣我可以通過create方法將所有特征屬性先賦予Feature對象。

          而當前問題:呵呵,沉下心來,不急不躁。。。

          posted on 2007-01-30 16:32 sinoly 閱讀(2744) 評論(1)  編輯  收藏 所屬分類: GEOTOOLS

          評論

          # re: GeoTools寫入POSTGIS遇到些問題 2007-01-31 17:14 sinoly
          唉。。不知怎么說。。這個問題算是搞定了。。
          解決方法:
          1、將項目中gt2-postgis-2.3.jar換成gt2-postgis-2.2.1.jar
          2、aNewFeature.setAttribute( 0 , geometry);這個語句在這里用法有問題。替換成為aNewFeature.setAttribute( str, obj);即可。str表示xpath,obj為所設置屬性的類型。多個屬性可以多feature對象賦多個值即可。

          gt2-postgis-2.3.jar在新建一個schema的時候貌似有些bug,對自動索引字段程序要求類型長度。。??赡苁俏已芯坎簧钜只蚱渌?,反正我是沒有找到這個方法的。。。換成gt2-postgis-2.2.1.jar問題解決。。。

          開源真的還有好多路要走。。。汗ing。。。也為我自己以后的項目以及開發提出了一些新的要求  回復  更多評論
            

          主站蜘蛛池模板: 大化| 宝应县| 临泉县| 渑池县| 桦南县| 大兴区| 塔城市| 从江县| 虎林市| 汝阳县| 佛学| 和静县| 汉中市| 阿图什市| 禹城市| 泾阳县| 蒲城县| 鄂温| 林西县| 阜平县| 新营市| 青河县| 呼图壁县| 静海县| 库车县| 彭州市| 浦城县| 三河市| 理塘县| 寿光市| 吐鲁番市| 桐柏县| 临夏县| 武威市| 青川县| 滦平县| 旌德县| 凤凰县| 清涧县| 永清县| 松原市|