sinoly

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            29 隨筆 :: 76 文章 :: 189 評論 :: 0 Trackbacks

          ???? 剛剛開始學習GeoTools得時候就是感覺關于這方面的資料真是少的可憐,無奈之中翻E文資料,苦學E文。。。唉。。。但是如果說一個知名的開源項目文檔中錯誤百出,我真的很是無奈。。。
          ???? 這段時間公司的工作也是很忙,所以只能抽空晚上慢慢研究GeoTools了。。。
          ???? 將今天的測試用的GeoTools讀取PostGis內容的代碼發布出來,希望能對和我一樣想去學習GeoTools的同仁起到幫助作用,也希望各位WEBGIS大拿多給我一些意見。。。畢竟以前不是搞GIS,現在很是吃力。。。

          package ?com.geotools.test;
          /**
          ?*?
          ?*?CopyRight?(C)?All?rights?reserved.
          ?*?<p>
          ?*?
          ?*?WuHan?Inpoint?Information?Technology?Development,Inc.
          ?*?<p>
          ?*?
          ?*?Author?sinoly
          ?*?<p>
          ?*?Project?Name:?PostGeo
          ?*?
          ?*?
          @version ?1.0?2006-11-13
          ?*?
          ?*?<p>
          ?*?Base?on?:?JDK1.5
          ?*?<p>
          ?*?
          ?
          */

          import ?java.io.IOException;
          import ?java.util.HashMap;
          import ?java.util.Map;
          import ?java.util.NoSuchElementException;

          import ?org.geotools.data.DataStore;
          import ?org.geotools.data.DataStoreFinder;
          import ?org.geotools.data.FeatureReader;
          import ?org.geotools.data.FeatureResults;
          import ?org.geotools.data.FeatureSource;
          import ?org.geotools.feature.AttributeType;
          import ?org.geotools.feature.Feature;
          import ?org.geotools.feature.FeatureType;
          import ?org.geotools.feature.IllegalAttributeException;
          import ?org.geotools.geometry.Geometry;

          public ? class ?GetPostgisData? {
          ?
          ?
          static ?DataStore?pgDatastore;
          ?
          static ?FeatureSource?fsBC;
          ?@SuppressWarnings(
          " unchecked " )
          ?
          private ? static ? void ?ConnPostGis(String?dbtype,String?URL, int ?port,String?database,
          ???String?user,String?password)
          {
          ??Map?params?
          = ? new ?HashMap();
          ??params.put(
          " dbtype " ,? " postgis " );
          ??params.put(
          " host " ,?URL);
          ??params.put(
          " port " ,? new ?Integer(port));
          ??params.put(
          " database " ,?database);
          ??params.put(
          " user " ,?user);
          ??params.put(
          " passwd " ,?password);??
          ??
          try ? {
          ???pgDatastore?
          = ?DataStoreFinder.getDataStore(params);
          ???
          if (pgDatastore != null ) {
          ????System.out.println(
          " 系統連接到位于: " + URL + " 的空間數據庫 " + database + " 成功! " );
          ???}
          else {
          ????System.out.println(
          " 系統連接到位于: " + URL + " 的空間數據庫 " + database + " 失敗!請檢查相關參數 " );
          ???}

          ??}
          ? catch ?(IOException?e)? {
          ???e.printStackTrace();
          ???System.out.println(
          " 系統連接到位于: " + URL + " 的空間數據庫 " + database + " 失敗!請檢查相關參數 " );
          ??}

          ?}


          ?
          // 從數據容器中讀取所有的特征屬性?
          ?@SuppressWarnings( " deprecation " )?
          ?
          public ? static ? void ?PostGisReading() {
          ??
          try ? {
          ???FeatureResults?fsRU?
          = ?fsBC.getFeatures();
          ???FeatureReader?reader?
          = ?fsRU.reader();
          ???
          while ?(reader.hasNext())? {
          ???????Feature?feature;
          ????
          try ? {
          ?????feature?
          = ?reader.next();
          ????????System.out.print(feature.getID()?
          + ? " \t " );
          ????????
          for ?( int ?i? = ? 0 ;?i? < ?feature.getNumberOfAttributes();?i ++ )? {
          ????????????Object?attribute?
          = ?feature.getAttribute(?i?);
          ????????????
          if ?( ! (attribute? instanceof ?Geometry))
          ????????????????System.out.print(attribute?
          + ? " \t " );
          ????????}

          ????????System.out.println();
          ????}
          ? catch ?(NoSuchElementException?e)? {
          ?????e.printStackTrace();
          ????}
          ? catch ?(IllegalAttributeException?e)? {
          ?????e.printStackTrace();
          ????}

          ???}

          ???reader.close();
          ??}
          ? catch ?(IOException?e1)? {
          ???e1.printStackTrace();
          ??}


          ?}

          ?
          ?
          // 讀取指定類型名的地理特征
          ? public ? static ? void ?getFeatureSource(String?sourceName) {
          ??
          try ? {
          ???fsBC?
          = ?pgDatastore.getFeatureSource(sourceName);
          // ???System.out.println(fsBC.getFeatures().size()); // 計算本圖層中所有特征的數量
          ??}
          ? catch ?(IOException?e)? {
          ???e.printStackTrace();
          ??}
          ??
          ?}

          ?
          // 取得POSTGIS中所有的地理圖層
          ? public ? static ? void ?getAllLayers() {
          ??
          try ? {
          ???String[]?typeName?
          = ?pgDatastore.getTypeNames();
          ???
          for ( int ?i = 0 ;i < typeName.length;i ++ ) {
          ????System.out.println(typeName[i]);
          ???}

          ??}
          ? catch ?(IOException?e)? {
          ???e.printStackTrace();
          ??}

          ?}

          ?
          public ? static ? void ?getAttribute() {
          ??FeatureType?ftBC
          = fsBC.getSchema();
          ??System.out.println(ftBC.getAttributeCount());
          ??
          for ?( int ?i? = ? 0 ;?i? < ?ftBC.getAttributeCount();?i ++ )? {
          ??????AttributeType?at?
          = ?ftBC.getAttributeType(?i?);
          ??????
          // 判斷屬性類型是否為可分配
          ?????? if ?( ! Geometry. class .isAssignableFrom(at.getType()))
          ??????????System.out.print(at.getType()?
          + ? " \t " );
          ??}

          ??System.out.println();
          ??
          for ?( int ?i? = ? 0 ;?i? < ?ftBC.getAttributeCount();?i ++ )? {
          ??????AttributeType?at?
          = ?ftBC.getAttributeType(?i?);
          ??????
          if ?( ! Geometry. class .isAssignableFrom(at.getType()))
          ??????????System.out.print(at.getName()?
          + ? " \t " );
          ??}

          ?}

          ?
          public ? static ? void ?main(String[]?args)? throws ?IOException {
          ??ConnPostGis(
          "" , " localhost " , 5432 , " navigation " , " root " , " aaaaa " );
          ??
          /* 讀取指定類型名的地理特征? */
          ??getFeatureSource(
          " roads " );
          ??
          /* 得到空間數據庫中所有特征表的表名 */
          // ??PostGisReading();
          ????getAllLayers();
          ?}

          }




          ??????? 到周末了,這個周末事情貌似很多,明天,哦,不對,是今天要去老婆公司幫他們把動漫在線制作工廠的服務器配置起來。很是不爽的是拖了我的款一直沒有結算,感覺很是對不起和我一起做這個兼職項目的兄弟。周日可能會去看看一片空置的地,呵呵,研究一下看看怎么能用這片地改善一下生活地說:)
          ?????? 如果有空,周末將GeoTools寫PostGis數據的代碼整理一下。連接、讀、寫這都屬于基本操作,不過對于資料嚴重匱乏的GeoTools而言我想還是能對志同道合的兄弟們一些幫助的。自己將這些代碼貼出來的目的有二:一來監督自己的學習過程;二來希望能找到一批志同道合的朋友一起做一個基于開源項目的通用GIS/平臺,平臺的內容目前正在規劃,感覺還是很不錯的。
          ?????? 2007年的一月就快要過去了,這個月感覺怎么說那。。。除了項目中有些很讓人煩惱的事情以外,個人感覺還好,算是慢慢在又在望一線開發上靠攏。。。個人興趣和工作之間的協調不是很好解決,目前唯一的調節方式就是。。。犧牲自己的睡眠時間了。。。
          ????? 唉。。。。兩個星期沒有回家了,這個星期又很困難。。。但愿老爸老媽不要怪我。。。LP這段時間對我意見很大,畢竟婚期就在4月,過了年就快要到了,對我的意見就是到現在我都不知道結婚到底應該怎么搞。。。。
          ???? 夜深了,感覺很是對不起自己的家人。。。。在這個賣身又賣藝的年代。。。真的好困惑!



          posted on 2007-01-27 03:04 sinoly 閱讀(4774) 評論(9)  編輯  收藏 所屬分類: POSTGISGEOTOOLS

          評論

          # re: 使用GEOTOOLS(2.3)讀取POSTGIS內容 2007-01-31 21:01 gale
          在這個賣身又賣藝的年代。。。真的好困惑!

          嘿嘿
          同感  回復  更多評論
            

          # re: 使用GEOTOOLS(2.3)讀取POSTGIS內容 2007-02-01 14:26 梅穎
          結婚都不知道怎么搞?信邪,呵呵,我來我來  回復  更多評論
            

          # re: 使用GEOTOOLS(2.3)讀取POSTGIS內容 2007-03-14 23:07 cyqian
          “import org.geotools.data.DataStore;”

          我找不到 org.geotools.data.DataStore ,只有一個datastore的抽象類,我用的也是2.3。請賜教~~謝謝。
            回復  更多評論
            

          # re: 使用GEOTOOLS(2.3)讀取POSTGIS內容 2007-03-15 09:12 sinoly
          把你現在引入的包告訴我。。。
          我現在導入了這么幾個包:
          geoapi-2.0.jar
          gt2-api-2.2.1.jar
          gt2-main-2.2.1.jar
          gt2-postgis-2.2.1.jar
          gt2-referencing-2.2.1.jar
          gt2-render-2.2.1.jar
          jts-1.7.1.jar
          vecmath-1.3.1.jar

          備注:這個是目前我的項目中的包,這個是用的geotools2.2
          但是當初調試的時候確實是用的2.3中的包。實際上上面的程序是2.2/2.3都可以的
          geotools的最大特點。。。。有點遺憾。。。包的分類相當的混亂
            回復  更多評論
            

          # re: 使用GEOTOOLS(2.3)讀取POSTGIS內容 2007-03-15 13:12 cyqian
          阿~~知道了。在gt2-api-2.3.0里邊。剛開始我沒有導入它。十分感謝~  回復  更多評論
            

          # re: 使用GEOTOOLS(2.3)讀取POSTGIS內容 2007-03-28 11:20 CHOCHOC
          看了你的BLOG后,發現世界不會這么小吧。我也是才抽空看看GIS方面的東西,而且你說的你老婆的動漫在線不會是銀科大廈里面的那家吧,哦這樣的話故事可就多了!望回復!
          MSN:CHOC_CHO@HOTMAIL.COM  回復  更多評論
            

          # re: 使用GEOTOOLS(2.3)讀取POSTGIS內容 2007-03-29 08:51 sinoly
          @CHOCHOC
          呵呵,我在武漢滴說
          銀科大廈在中關村吧,以前在北京工作的時候取過很多次。。  回復  更多評論
            

          # re: 使用GEOTOOLS(2.3)讀取POSTGIS內容 2007-05-07 15:51 Classicning
          多謝您的代碼啊,我對Geotools真的是無語了,想要找點資料都這么難,還好有您這段代碼

          GeoTools太需要這種共享精神了。。。呵呵

          繼續學習GT和JTS。。。  回復  更多評論
            

          # re: 使用GEOTOOLS(2.3)讀取POSTGIS內容 2007-06-12 15:21 鳥舜魚湯
          偶然間闖進你的blog,最近剛開始研究geoserver和geotools的問題,看了你的一些見解,覺得比較深刻,希望能有機會得到賜教。。。。
          對于你想做一個基于開源項目的通用GIS/平臺,小弟也深有此意,只是苦于身邊無志同道合之士,希望能夠聯系。

          qq:7221681  回復  更多評論
            

          主站蜘蛛池模板: 青海省| 策勒县| 扬中市| 南宁市| 元阳县| 勃利县| 太保市| 汽车| 阳城县| 古丈县| 旺苍县| 开江县| 锦州市| 陕西省| 萨迦县| 大厂| 西和县| 新沂市| 邵阳县| 兴隆县| 丰宁| 新晃| 广东省| 金溪县| 普兰县| 永川市| 桓仁| 黄骅市| 安仁县| 株洲县| 郴州市| 永康市| 长武县| 合阳县| 菏泽市| 蓝田县| 平遥县| 镇赉县| 长沙县| 固始县| 罗定市|