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 阅读(2728) 评论(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。。。也为我自己以后的项目以及开发提出了一些新的要求  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: