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<DataBean> Query(String type,String path,String className){
List<DataBean> datalist = new ArrayList<DataBean>();
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<String> value = new ArrayList<String>();
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数据获取的方法就全部介绍完。
分享到:
相关推荐
ArcEngine类库的清晰中文介绍,简单明了
ArcGIS+ArcEngine 10.2 百度云下载地址 内容包括3个文件: ArcGIS_Desktop_102_134924.iso、ArcGIS10.2破解文件.rar和ArcGIS Engine10.2_20130816.iso。 ArcGIS10.2破解方法不同于10.1(不用单独下载License Manager...
基于ArcEngine的CAD数据与ArcGIS数据互转.pdf
概述ArcGISEngine中的各个类库。本节中的各个模型图展示了ArcGISEngine的类库架构。理解类库结构、它们的依赖关系和基本功能将有助于开发人员了解ArcGISEngine的组件。
资料包含: ArcGIS_Engine_zh_105 ArcGIS_Engine_DevKit_105
开发环境:C#+ArcEngine10.2+vs2010 《GIS程序设计教程》主要介绍了组件式GIS开发技术,重点是利用ArcGISEngine开发组件库,在.Net环境下利用C#语言进行GIS程序开发。全书由浅人深,从组件式GIS基本概念入手,介绍...
开发工具:vs2017、ArcEngine10.4 平台:.net Framework4.6 3、解决方案中目录结构: |---README.txt //说明文档 |---Form1.cs //主界面及代码 |---FrmAddFeatureDS.cs //将要素数据集导入到地图中 |---...
arcengine 入门教程含有源代码希望对大家有很大的帮助
VS2019使用arcengine10.2只需双击就可以
arcengine10.4下载与安装,注意是10.4版本,不是10.4.1!!! 文档中有百度网盘下载链接与详细安装步骤。
ArcGIS93的无限期授权许可文件[包括ArcGIS Server9.3,ArcGIS Engine9.3,ArcGIS Desktop 9.3]。请购买正版软件,切勿作为商业用途有!
通过ArcEngine连接ArcGIS Server发布的地图服务---源码。
关于arcengine基于arcgis与autocad数据转换研究
ArcGIS Engine 10 Runtime,是运行基于ArcGIS Engine 10开发的程序必须的库文件,通常我们把这个Runtime整合在安装包中。总共有6个压缩包,请依次下载。
ArcEngine获取栅格四角平面坐标,包含引用部分,可直接复制使用
内部自带一个属性查看窗口,使用树结构对当前位置下所有图层对应的元素信息进行展示。需要修改的部分:缓冲区域范围。
ArcEngine简单教程——加载数据Demo,包括加载mxd、shp、grid、dat、img等数据 工程文件及测试数据 备份链接:链接:https://pan.baidu.com/s/14GoGMb88fagBGrkJloLpHQ 提取码:qfss 教程博客:...
适合与AE开发初学者和巩固ArcGis开发人员