<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    sinoly

       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      29 隨筆 :: 76 文章 :: 189 評論 :: 0 Trackbacks
    ???? 困擾了好幾天,一直在嘗試各種方法解決Geotools讀取shp格式對中文編碼的問題。可是昨天一個無意的舉動居然讓我發覺自己做了太多的無用之功。仔細的看了JavaDoc以及shapefile源代碼之后,可以可以明顯的看到ShapefileDataStore的構造函數已經發生了很大的變化:
    ????
    public?static?final?Charset?DEFAULT_STRING_CHARSET?=?Charset.forName("ISO-8859-1");

    ??? 這個是ShapefileDataStore對象中定義的字符編碼。也正是由于其使用ISO-8859-1編碼作為默認編碼,所以一直以來,解決geotools抑或geoserver的中文問題總是連綿不絕。
    ?? 來看看我在2.4中看到的ShapefileDataStore的新的構造函數(當然,貝塔和我聊天說過好像2.3也是作出了同樣修改的,可惜我沒下2.3的源碼,呵呵,但是2.2以前的版本這一塊貌似是不同的。權當其是2.4中的“新增”之處吧)
    ?1????public?ShapefileDataStore(URL?url,?boolean?useMemoryMappedBuffer)
    ?2????????throws?MalformedURLException
    ?3????{
    ?4????????this(url,?useMemoryMappedBuffer,?DEFAULT_STRING_CHARSET);
    ?5????}
    ?6
    ?7????public?ShapefileDataStore(URL?url,?boolean?useMemoryMappedBuffer,?Charset?dbfCharset)
    ?8????????throws?MalformedURLException
    ?9????{
    10????????readWriteLock?=?new?Lock();
    11????????namespace?=?null;
    12????????this.useMemoryMappedBuffer?=?true;
    13????????String?filename?=?null;
    14????????shpURL?=?ShapefileDataStoreFactory.toShpURL(url);
    15????????dbfURL?=?ShapefileDataStoreFactory.toDbfURL(url);
    16????????shxURL?=?ShapefileDataStoreFactory.toShxURL(url);
    17????????prjURL?=?ShapefileDataStoreFactory.toPrjURL(url);
    18????????xmlURL?=?ShapefileDataStoreFactory.toXmlURL(url);
    19????????this.dbfCharset?=?dbfCharset;
    20????}
    ?????
    ???



    ???? 列下使用Geotools 2.4操作shp格式的代碼如下:
    ??? 代碼1:
    ?1public?class?ReadShape??{
    ?2????public?static?void?main(String[]?args)?
    ?3????????throws?FileNotFoundException,MalformedURLException,IOException{
    ?4????????
    ?5????????File?shpFile=new?File("shp/市區地物_point.dbf");
    ?6????????ShapefileDataStore?shpDataStore=new?ShapefileDataStore(shpFile.toURL());
    ?7????????shpDataStore.setStringCharset(Charset.forName("GBK"));
    ?8????????FeatureSource?fs=shpDataStore.getFeatureSource();
    ?9????????FeatureCollection?collection?=?fs.getFeatures();
    10????????FeatureIterator?iterator?=?collection.features();
    11????????int?numOfAttr=0;
    12????????try?{
    13???????????while(?iterator.hasNext()?){
    14????????????????Feature?feature?=?iterator.next();
    15????????????????numOfAttr?=?feature.getNumberOfAttributes();
    16????????????????for(int?i=0;i<numOfAttr;i++){
    17????????????????????String?temp=feature.getAttribute(i).toString();
    18????????????????????System.out.print(temp+"\t");
    19????????????????}
    20????????????????
    21????????????????System.out.println();
    22???????????}
    23????????}
    24????????finally?{
    25???????????iterator.close();
    26????????}
    27????}
    28}
    ??? 代碼2:
    ?1public?class?ReadSHP??{
    ?2????public?static?void?main(String[]?args)?
    ?3????????throws?FileNotFoundException,MalformedURLException,IOException{
    ?4
    ?5????????//初始化FileChannel對象
    ?6????????FileChannel?in?=?new?FileInputStream("shp/市區地物_point.dbf").getChannel();
    ?7????????DbaseFileReader?dr=new?DbaseFileReader(in,?true,Charset.forName("UTF-8"));
    ?8????????DbaseFileHeader?dh?=?dr.getHeader();
    ?9????????int?fields?=?dh.getNumFields();
    10????????for(int?i=0;i<fields;i++){
    11????????????System.out.print(dh.getFieldName(i)+"?");//打印當前屬性名
    12????????}
    13????????System.out.print("\n");
    14????????while(dr.hasNext()){
    15????????????DbaseFileReader.Row?row?=?dr.readRow();
    16????????????for?(int?i=0;i<fields;i++){
    17????????????????????Object?data?=?row.read(i);
    18????????????????????if(dh.getFieldName(i).equals("NAME")){
    19????????????????????????????System.out.print(data);
    20????????????????????}else{
    21????????????????????????????System.out.print(data);
    22????????????????????}
    23????????????????????System.out.print("\t");
    24????????????}
    25????????????System.out.println();
    26????????}
    27????????dr.close();
    28????}
    29}
    ????
    ????兩段代碼都可以直接運行。當然,從個人角度來看,代碼2是我比較推薦的。不管是效率還是安全性,FileChannel對象比File對象應該還是強一些。
    ??? 算是又解決了一個問題。
    ??? 十一期間準備自己寫一個shp2svg和shp2sql的小程序。第一呢,geoserver生成的svg樣式也好,標注名稱也好都好像不太好(也許是我自己對geoserver不熟悉的原因);第二呢,嚴重懷疑postgis自帶的shp2pgsql這個程序對編碼的支持度。除非我的數據庫編碼是EUN_CN,否則導入的數據是肯定有問題。

    ??? 不在考慮那些讓我煩心的事情,也不想做一個“人無遠慮,必有近憂”的思想者。一心一意專注于自己的愛好。其他時間也許“身不由己”,但是十一長假還是可以做到的。準備回鄉下,到我的那間田間小屋去,斷網6天!
    ??

    posted on 2007-09-30 10:13 sinoly 閱讀(5893) 評論(8)  編輯  收藏 所屬分類: GEOTOOLS

    評論

    # re: 原來可以如此這般(GEOTOOLS 2.4對中文編碼的支持) 2007-09-30 13:52 千里冰封
    呵呵  回復  更多評論
      

    # re: 原來可以如此這般(GEOTOOLS 2.4對中文編碼的支持) 2007-09-30 14:00 sinoly
    @千里冰封
    沒有看懂。。。“呵呵”代表什么意思
    :)  回復  更多評論
      

    # re: 原來可以如此這般(GEOTOOLS 2.4對中文編碼的支持) 2008-07-30 12:29 路過
    希望多發些類似的文章。
      回復  更多評論
      

    # re: 原來可以如此這般(GEOTOOLS 2.4對中文編碼的支持)[未登錄] 2008-10-11 14:32 wawa
    你這邊講的好像都是對屬性數據的一些讀取操作,那對于圖形操作呢,能否講一講啊?  回復  更多評論
      

    # re: 原來可以如此這般(GEOTOOLS 2.4對中文編碼的支持) 2010-06-18 00:42 回收軸承
    回復:《小心別被這般禮物雷到》



    回收軸承http://www.shouzhoucheng.com" target="_new" rel="nofollow">http://www.shouzhouchengcom,收購軸承http://www.shouzhoucheng.com,回收庫存積壓軸承http://www.shouzhoucheng.com,回收進口軸承http://www.shouzhoucheng.com,回收微型軸承http://www.shouzhoucheng.com,回收SKF軸承。聯系人:朱先生,手機:13406342244 ,期待與您的合作!  回復  更多評論
      

    # re: 原來可以如此這般(GEOTOOLS 2.4對中文編碼的支持) 2010-06-21 00:10 回收軸承
    恢復一大隊薩達盛大大聲打打雙打啊上大大大大
    http:// oldbearing.blog.hexun.com/52094701_d.html

    http://zhuyuelei.blog.163.com/blog/static/28566049201052010281697/
    http://blog.sohu.com/people/f21926611!f/154918468.html
    http://blog.eastmoney.com/zhuyuelei/blog_180252633.html
      回復  更多評論
      

    # re: 原來可以如此這般(GEOTOOLS 2.4對中文編碼的支持) 2010-06-21 23:58 回收軸承
    http://www.shouzhoucheng.com
    http://www.bearingbid.com/O/oview.asp?id=76f65cd23e06131860522a428e523dc2
    http://bbs.xabbs.com/viewthread.php?tid=319579&extra=
    http://www.chinawj.com.cn/member/tradeinfo/show.shtml?id=2914572
    http://braring.bokee.net/company/weblog_viewEntry/5360680.html
      回復  更多評論
      

    # re: 原來可以如此這般(GEOTOOLS 2.4對中文編碼的支持) 2012-10-10 17:22 pollux
    修改后有的是中文,有的是亂碼
    區縣名稱=嚀ㄏ?
    FEATID=2
    COUNT=0.0
    NAME=嚀ㄏ?
    區縣名稱=僭笙?
    FEATID=3
    COUNT=0.0
    NAME=僭笙?
    區縣名稱=嗄舷孛骰ㄇ?
    FEATID=4
    COUNT=0.0
    NAME=嗄舷孛骰ㄇ?
    區縣名稱=嗄舷鼗食喬?
    FEATID=5
    COUNT=0.0
    NAME=嗄舷鼗食喬?
    區縣名稱=嗄舷卮筧?
    FEATID=6
    COUNT=0.0
    NAME=嗄舷卮筧?
    區縣名稱=嗄舷?
    FEATID=7
    COUNT=0.0
    NAME=嗄舷?
    區縣名稱=窶窒?
    FEATID=8
    COUNT=0.0
    NAME=窶窒?
    區縣名稱=降は?
    FEATID=9
    COUNT=0.0
    NAME=降は?  回復  更多評論
      

    主站蜘蛛池模板: 免费人妻无码不卡中文字幕系| 成人免费观看男女羞羞视频| 91人人区免费区人人| 亚洲国产精品成人精品无码区| ssswww日本免费网站片| 红杏亚洲影院一区二区三区| 精品无码一级毛片免费视频观看| 精品国产亚洲男女在线线电影| 久久99久久成人免费播放| 亚洲中文字幕日产乱码高清app| 久久99精品免费一区二区| 日本亚洲成高清一区二区三区| 十八禁无码免费网站| 亚洲色图校园春色| 一个人看的www在线观看免费 | 日本大片在线看黄a∨免费| 亚洲第一综合天堂另类专| 免费jlzzjlzz在线播放视频| 一级成人生活片免费看| 久久亚洲国产精品五月天| 免费福利视频导航| 亚洲成av人片天堂网无码】| 国产成人99久久亚洲综合精品| 免费在线观看一级片| 亚洲精品国产国语| 亚洲国产成人VA在线观看| 亚洲精品免费在线观看| 亚洲精品中文字幕无乱码麻豆| 免费A级毛片在线播放不收费| a毛片在线免费观看| 色老板亚洲视频免在线观| 亚洲精品国产自在久久| 99爱免费观看视频在线| 色欲aⅴ亚洲情无码AV蜜桃| 亚洲精品乱码久久久久66| 国产一卡二卡3卡四卡免费| 一级特黄色毛片免费看| 亚洲国产成人综合| 亚洲国产精品成人网址天堂| 最近在线2018视频免费观看| 美美女高清毛片视频黄的一免费|