中国地图
GIS探索者
地图网
GIS论坛
网站首页| GIS论坛 |新闻动态 | 技术专栏 | GIS书籍 | 资源下载 | 求职招聘 | 研究生考试 | GIS博客 | GIS空间站
欢迎光临GIS空间站!   网站地图
  专栏导航:| ArcGIS | MapInfo | TopMap | 地理信息 | 遥感 | GPS | 测绘 | WebGIS | LBS | 前沿 | 数据库 | 开发 | 行业应用
  推荐栏目:| AO开发 | 业界动态 | GIS资源 | 招聘信息 | 求职简历 | 共享软件 | 电子书籍 | 研究生考题 | 电子期刊 | GIS论文
您现在的位置: GIS空间站 >> 技术专栏 >> 开发语言 >> 文章正文

用GeoTools读取Shapefile的属性数据

作者:classicn…    文章来源:GIS大学论坛    点击数:    更新时间:2007-11-8
GeoTools是最重要的开源JavaGIS工具包,其中提供了很多实用的工具。但是苦于其文档实在不完整,故在这里简单地介绍GeoTools读取Shapefile属性数据的方法,也算是为和我一样想学习GeoTools但又不知如何下手的朋友们打开一个思路。

其实这个很简单。

使用GeoTools,我们今天要做的事情需要将gt2-shapefile-2.3.1.jar加到你的Build Path中。
众所周知,要属性数据保存在dbf文件中,因此为了能够读取属性数据,我们需要导入以下几个包:

import java.io.IOException;
import java.io.FileInputStream;
import java.nio.channels.FileChannel;

import org.geotools.data.shapefile.dbf.DbaseFileReader;
import org.geotools.data.shapefile.dbf.DbaseFileHeader;

GeoTools用Java.nio包中的FileChannel读取文件,这样初始化:

FileChannel in = new FileInputStream("data/res1_4m.dbf").getChannel();

于是初始化DbaseFileReader和DbaseFileHeader

DbaseFileReader dr = new DbaseFileReader(in, true);
DbaseFileHeader dh = dr.getHeader();
DFileReader构造函数的第二个参数是useMemoryMappedBuffer,具体的作用我也没有深入研究,只是从字面推断而已。
接下来从dh中获得字段数

fields = dh.getNumFields();
开始遍历dr,每次取出一行,行被封装在DbaseFileReader的内部类Row中。

while(dr.hasNext()){
        DbaseFileReader.Row row = dr.readRow();
}
遍历每一行中的每个域,读出其中的数据,打印出来,OK

while(dr.hasNext()){
        DbaseFileReader.Row row = dr.readRow();
        for (int i=0;i<fields;i++){
                Object data = row.read(i);
                if(dh.getFieldName(i).equals("NAME")){
                        // TO-DO:  charset error here.
                        String name = new String(data.toString().getBytes(),"utf-8");
                        System.out.print(name);
                }else{
                        System.out.print(data);
                }
                System.out.print("\t");
        }
        System.out.println();
}
上面的一段是因为我的dbf中含有中文,打印出是乱码,这个问题还是有待解决。
最后关闭dr。

dr.close();
还有别忘了给FileInputStream加上try...catch就行了。

上面介绍的是最简单的dbf读法。
GeoTools博大精深,但是其中包、类数量非常多,结构复杂,要想弄清还是要下一番功夫的。
文章录入:gissky    责任编辑:gissky  发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
■■相 关 图 书:
■■相 关 文 章:
  • ArcGIS Engine开发-TOCControl中实现图层的拖放

  • ArcGIS Engine开发中可以利用到的资源

  • ArcGIS Engine标准培训教程

  • leihu:ArcGIS Engine开发感想

  • 基于.net平台和ArcGIS Engine9.0开发通用地理信息系统平台

  • ArcGIS Engine产品开发中的许可文件初始化

  • 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用(七)

  • 上一篇文章:

  • 下一篇文章: 没有了
  •  
    GIS博客精华
    TopMap下载
    热点文章
    热门资源
     
    关于我们 | 联系我们 | 广告服务 | 友情链接 | 申请链接 | 合作联盟 | 诚聘英才
      GIS空间站(GISSky.Net)版权所有 站长:兔八哥