sinoly

             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            29 隨筆 :: 76 文章 :: 189 評論 :: 0 Trackbacks
          ???? // 添加特征值到新的特征對象中。等同于新建一個postgis數(shù)據(jù)表并向其中插入數(shù)據(jù)
          ????@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();
          ????????????????
          /**
          ?????????????????*?這里存在一個問題,就是如果一次插入的數(shù)據(jù)有多個字段來描述此地理特征,應(yīng)該如何處理呢?
          ?????????????????*?setAttribute(int?i,Object?obj)第一個參數(shù)表示索引,但是第二個通過程序插入數(shù)據(jù)時就會
          ?????????????????*?提示要求一個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對象,這個對象的生成是根據(jù)前兩天的代碼來連接POSTGIS數(shù)據(jù)庫的。
          ??? 問題就在對Feature.setAttribute(int i,Object obj);這個方法執(zhí)行的時候,如果obj是一個LineString對象是沒有問題的,就和已經(jīng)完成的代碼一樣。上面的代碼本身是可以運行的,可是如果一個Feature對象有多個屬性呢?我在geotools 2.3的API中還沒有找到我需要的方法。。。繼續(xù)尋覓。。。我的想法是存在一個插入Feature 對象,這樣我可以通過create方法將所有特征屬性先賦予Feature對象。

          而當(dāng)前問題:呵呵,沉下心來,不急不躁。。。

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

          評論

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

          gt2-postgis-2.3.jar在新建一個schema的時候貌似有些bug,對自動索引字段程序要求類型長度。。。可能是我研究不深抑或其他原因,反正我是沒有找到這個方法的。。。換成gt2-postgis-2.2.1.jar問題解決。。。

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

          主站蜘蛛池模板: 海丰县| 缙云县| 仁化县| 天台县| 镇赉县| 罗城| 榆林市| 双柏县| 铜山县| 嘉黎县| 新河县| 黄浦区| 江北区| 苗栗县| 池州市| 阿城市| 鱼台县| 宁南县| 疏勒县| 元江| 城步| 军事| 乌鲁木齐市| 巨鹿县| 陈巴尔虎旗| 潜山县| 安新县| 钦州市| 绍兴市| 阿克| 沂南县| 澜沧| 祁东县| 沿河| 兴城市| 孝感市| 车致| 旅游| 多伦县| 内乡县| 平舆县|