作者:李豪山于 2017年06月23日 发布在分类 / 开发技术 / GIS 下,并于 2017年06月23日 编辑
    利用ArcEngine类库获取ArcGIS数据

       460

       0


     ArcGIS数据文件分为3种:shapefile,Coverage,Geodatabase。
        shapefile一种基于文件方式存储GIS数据的文件格式,至少由shp,dbf,shx三个文件组成。分别存储空间,属性,2者关系。是GIS中比较通用的数据格式。
        Coverage是一种矢量文件格式,几何和空间拓扑关系存储在二进制文件中,与之相关的属性数据则存放在INFO表或RDBMS中(PC ArcInfo存储在DBF表中)。Coverage是对要素类组织后(feature class)的集合,每个要素类都是一些点、线、面、annotation(文本)的集合。
        Geodatabase一种基于RDBMS存储的数据格式。其有两大类:1、Personal Geodatabase用来存储小数据量数据。存储在Access的mdb格式中。2、ArcSDE eodatabase用来存储大型数据。存储在大型数据库中,可实行并发操作,不过需要单独的用户许可。
        对于ArcGIS数据文件,ESRI为JAVA语言提供了ArcEngine类库来进行ArcGIS的一切开发。对于ArcGIS3种数据文件的连接提供了统一的接口IWorkSpace,根据具体的数据有不同的实现类来实现数据文件的连接,而数据读取的方法一样,所以可以试用一个工厂模式写个工具类来统一获取3种数据。
    需要导入arcobjects.jar
    工厂模式连接数据统一接口:


    import com.esri.arcgis.geodatabase.IFeatureClass;
    public interface ConnectDataSource {
    public IFeatureClass getDataSource(String path,String className);
    }
    连接shape实现类:
    import java.io.IOException;
    import com.esri.arcgis.datasourcesfile.ShapefileWorkspaceFactory;
    import com.esri.arcgis.geodatabase.IFeatureClass;
    import com.esri.arcgis.geodatabase.Workspace;
    import com.fjdz.inf.ConnectDataSource;
    public class ConnectShape implements ConnectDataSource {
    IFeatureClass featureClass =null;
    public IFeatureClass getDataSource(String path, String className) {ShapefileWorkspaceFactory shapefileWorkspaceFactory;try {shapefileWorkspaceFactory = new ShapefileWorkspaceFactory();Workspace workspace = new Workspace(shapefileWorkspaceFactory.openFromFile(path, 0));featureClass = workspace.openFeatureClass(className);}catch (IOException e) {e.printStackTrace();}
    return featureClass;
    }
    }
    连接mdb:
    import java.io.IOException;
    import com.esri.arcgis.datasourcesGDB.AccessWorkspaceFactory;
    import com.esri.arcgis.geodatabase.IFeatureClass;
    import com.esri.arcgis.geodatabase.IFeatureWorkspace;
    import com.fjdz.inf.ConnectDataSource;
    public class ConnectAccess implements ConnectDataSource {
    IFeatureClass featureClass =null;
    public IFeatureClass getDataSource(String path, String className) {AccessWorkspaceFactory workspaceFactory;try {workspaceFactory = new AccessWorkspaceFactory();IFeatureWorkspace workspace = (IFeatureWorkspace)workspaceFactory.openFromFile(path, 0);featureClass= workspace.openFeatureClass(className);}catch (IOException e) {e.printStackTrace();}
    return featureClass;
    }
    }
    数据读取类:
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import com.esri.arcgis.geodatabase.IFeature;
    import com.esri.arcgis.geodatabase.IFeatureClass;
    import com.esri.arcgis.geodatabase.IFeatureCursor;
    import com.esri.arcgis.geodatabase.IField;
    import com.esri.arcgis.geodatabase.IFields;
    import com.fjdz.bean.DataBean;
    import com.fjdz.enumfactory.FactoryType;
    import com.fjdz.inf.ConnectDataSource;
    import com.fjdz.inf.IQueryFactory;
    public class QueryFactory{IFeatureClass featureClass = null;
    ConnectDataSource connectDatasource = null;
    public List Query(String type,String path,String className){List datalist = new ArrayList();try{if("shape".equals(type)){
    connectDatasource = new ConnectShape();}else if("mdb".equals(type)){
    connectDatasource = new ConnectAccess();}featureClass = connectDatasource.getDataSource(path, className);IFeatureCursor cursor = featureClass.search(null, true);IFields fields = cursor.getFields();int fieldCount = fields.getFieldCount();IFeature feature = cursor.nextFeature();while(feature != null){
    List value = new ArrayList();
    DataBean dataBean = new DataBean();
    for (int k = 0; k < fieldCount; k++) {
    value.add((feature.getValue(k)).toString());}
    dataBean.setList(value);}datalist.add(dataBean);feature = cursor.nextFeature();
    } catch (IOException e) {e.printStackTrace();}return datalist;

    }


    到此ArcGIS数据获取的方法就全部介绍完。


    访问权限

    创建人 李豪山
    文档编辑权限 创建者私有
    文档阅读权限 来自分类
    分类阅读权限 所有人
    分类编辑权限 所有人
    分类审核权限
    标签

    importcom 数据 arcgis geodatabase 文件 存储 connectdatasource 格式 featureclass importjava
    历史版本

    修改日期 修改人 备注
    2017-06-23 15:53:43[当前版本] 李豪山 CREAT
    同类知识
    相关知识

    睿恒知识库-V3.2.0