sinoly

             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            29 隨筆 :: 76 文章 :: 189 評(píng)論 :: 0 Trackbacks

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

          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(
          " 系統(tǒng)連接到位于: " + URL + " 的空間數(shù)據(jù)庫 " + database + " 成功! " );
          ???}
          else {
          ????System.out.println(
          " 系統(tǒng)連接到位于: " + URL + " 的空間數(shù)據(jù)庫 " + database + " 失敗!請(qǐng)檢查相關(guān)參數(shù) " );
          ???}

          ??}
          ? catch ?(IOException?e)? {
          ???e.printStackTrace();
          ???System.out.println(
          " 系統(tǒng)連接到位于: " + URL + " 的空間數(shù)據(jù)庫 " + database + " 失?。≌?qǐng)檢查相關(guān)參數(shù) " );
          ??}

          ?}


          ?
          // 從數(shù)據(jù)容器中讀取所有的特征屬性?
          ?@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()); // 計(jì)算本圖層中所有特征的數(shù)量
          ??}
          ? 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 " );
          ??
          /* 得到空間數(shù)據(jù)庫中所有特征表的表名 */
          // ??PostGisReading();
          ????getAllLayers();
          ?}

          }




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



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

          評(píng)論

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

          嘿嘿
          同感  回復(fù)  更多評(píng)論
            

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

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

          我找不到 org.geotools.data.DataStore ,只有一個(gè)datastore的抽象類,我用的也是2.3。請(qǐng)賜教~~謝謝。
            回復(fù)  更多評(píng)論
            

          # re: 使用GEOTOOLS(2.3)讀取POSTGIS內(nèi)容 2007-03-15 09:12 sinoly
          把你現(xiàn)在引入的包告訴我。。。
          我現(xiàn)在導(dǎo)入了這么幾個(gè)包:
          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

          備注:這個(gè)是目前我的項(xiàng)目中的包,這個(gè)是用的geotools2.2
          但是當(dāng)初調(diào)試的時(shí)候確實(shí)是用的2.3中的包。實(shí)際上上面的程序是2.2/2.3都可以的
          geotools的最大特點(diǎn)。。。。有點(diǎn)遺憾。。。包的分類相當(dāng)?shù)幕靵y
            回復(fù)  更多評(píng)論
            

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

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

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

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

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

          繼續(xù)學(xué)習(xí)GT和JTS。。。  回復(fù)  更多評(píng)論
            

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

          qq:7221681  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 静海县| 湖州市| 扎囊县| 牡丹江市| 鄂伦春自治旗| 溧阳市| 西丰县| 石门县| 新平| 兴业县| 汉中市| 武强县| 科技| 鹿邑县| 鹤山市| 麻江县| 长岛县| 新晃| 汉阴县| 和平县| 迁西县| 武安市| 古丈县| 吴堡县| 佳木斯市| 贵州省| 长汀县| 姚安县| 和龙市| 金秀| 乌拉特后旗| 达州市| 静乐县| 峡江县| 资阳市| 大竹县| 洱源县| 尖扎县| 嵊泗县| 休宁县| 富阳市|