`
lf008
  • 浏览: 66673 次
  • 性别: Icon_minigender_1
  • 来自: 福州
文章分类
社区版块
存档分类
最新评论

利用ArcEngine类库获取ArcGIS数据

阅读更多
    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类库

    ArcEngine类库的清晰中文介绍,简单明了

    ArcGISEngine.rar_ArcEngine CSHARP_arcengine教程_arcgis engine_engi

    《ArcGIS Engine开发详解——基于C#的ArcEngine入门教程》 ArcGIS Engine是一款由Esri公司提供的强大的地理信息系统(GIS)开发工具,它允许开发者创建具有专业GIS功能的应用程序。本教程主要针对ArcEngine C#开发...

    ArcEngine测量地图上两点距离

    在ArcGIS平台上,ArcEngine是一个强大的开发工具,用于构建地理信息系统(GIS)应用程序。这篇教程主要针对ArcEngine初学者,讲解如何实现一个功能——测量地图上任意两点之间的距离。这个功能在很多领域都非常实用...

    ArcGIS Engine 10 开发手册 官方内部资料

    3. 性能优化:合理利用数据缓存,减少不必要的计算和数据读取,提升应用性能。 总的来说,《ArcGIS Engine 10 开发手册》是一份全面而深入的指南,涵盖了从基础概念到高级特性的所有内容,对于想要进行ArcGIS ...

    ESRI公司ArcEngine培训

    2. **ArcObjects SDK**:包含各种接口、类库和示例代码,用于构建ArcEngine应用。开发者可以根据需要选择.NET Framework(C#、VB.NET等)或COM(VBA、VC++等)版本。 **三、ArcEngine关键功能** 1. **地图操作**:...

    arcengine开发框架

    开发者可以通过AoEdit进行数据预处理,以便在ArcEngine应用中使用。 总的来说,ArcEngine开发框架为专业GIS开发人员提供了一套全面的工具,以构建高效、功能丰富的GIS应用。无论是地图的展示、数据的编辑,还是复杂...

    vs2010c#的arcengine按属性选择,并把选择的记录导出新shp,可以批量

    ArcEngine提供了一组.NET类库,使得开发者能够利用C#构建与ArcGIS系统交互的应用程序。 1. **属性查询**: 属性查询是根据地图图层中的特征属性来筛选数据的过程。在ArcEngine中,我们可以使用`IQueryFilter`接口...

    ArcEngine入门教程

    1. 安装ArcGIS Desktop:ArcEngine依赖于ArcGIS Desktop,因此首先需要安装ArcGIS Desktop,获取必要的GIS数据和地图显示功能。 2. 安装ArcEngine SDK:根据开发语言选择.NET或Java版本的SDK,包含开发所需的库文件...

    ArcEngine加载地图

    ArcEngine提供了大量的类库,这些类库封装了GIS的核心功能,如地图显示、空间数据管理、空间分析等。 #### 二、ArcEngine加载地图中的问题及解决方案 ##### 2.1 问题描述 在使用ArcEngine进行地图加载的过程中,...

    ArcEngine开发集锦

    - 土地资源管理系统:利用ArcEngine进行土地资源数据的录入、查询、统计和分析。 - 城市规划:通过ArcEngine进行城市规划模拟,评估不同规划方案的可行性。 - 应急响应系统:结合地图数据和实时信息,快速定位...

    C#+ArcEngine:加载打开Tin数据(窗体+代码)

    在本文中,我们将深入探讨如何使用C#编程语言与Esri的ArcEngine接口结合,来加载和打开Tin(不规则三角网)数据。Tin数据是一种常见的地理信息系统(GIS)数据类型,常用于表示地形表面,因为它能够精确地捕捉到地形...

    Arcengine系统

    1. ArcObjects:ArcEngine的核心组件,是一系列COM接口和类库,涵盖了地图绘制、空间分析、数据管理等GIS功能。开发者可以利用这些接口和类库创建各种GIS应用程序。 2. Engine应用程序:基于ArcEngine的桌面应用...

    ArcEngine for java开发demo源码(个人开发)

    在Java环境下,ArcEngine提供了一套完整的类库,允许开发者通过Java代码控制GIS功能。 2. **Eclipse集成开发环境** Eclipse是一款广泛使用的开源IDE,支持多种语言开发,包括Java。在本DEMO中,作者选择了Eclipse...

    ArcEngine二次开发教程

    VB、C#和VC都是.NET框架下的编程语言,它们可以充分利用ArcEngine SDK中的类库和方法,构建用户界面,实现地图显示、数据编辑、查询、分析等功能。 对于VB开发者,ArcEngine的VB接口提供了一套直观的编程模型,使得...

    C#+AE 对栅格数据的操作

    通过以上步骤,我们可以在C#环境中利用ArcEngine实现对栅格数据的全面操作,包括加载、显示、编辑、分析以及发布等。这种结合不仅提供了强大的GIS功能,还利用了C#的易用性和高效性,使得开发复杂的GIS应用变得可能...

    VB+arcengine

    ArcEngine则是Esri公司推出的一款强大的地理信息系统(GIS)开发平台,它允许开发者利用地图数据进行各种复杂的地理分析、地图制作以及空间应用开发。 基于VB + ArcEngine的开发主要涉及以下几个核心知识点: 1. *...

    Arcengine生成图幅号工具源代码

    本项目名为"ArcEngine生成图幅号工具源代码",其核心是利用ArcEngine和.NET框架来创建地图图幅,并且提供了两种生成方式:鼠标点击生成和基于坐标范围生成。此工具特别指出它目前仅支持1W和5W图幅,这两个术语通常指...

    ArcGIS Engine 9.3 下载

    ArcGIS Engine 9.3 SDK for .NET 是专门为.NET Framework 开发人员设计的一套开发工具包,包含了用于构建GIS应用的类库和开发资源。使用此SDK,开发者可以利用C#、VB.NET或其他.NET语言创建与GIS相关的应用程序,...

    ArcGISEngine.rar_ArcGISEngine_Csharp ArcEngine_arcengine _arceng

    4. **C#编程基础**:在深入ArcGIS Engine之前,确保对C#的基本语法、类库和面向对象编程有扎实的理解,是成功开发的关键。这包括类、接口、事件、委托、异步编程等概念。 5. **.NET Framework与ArcObjects**:了解...

Global site tag (gtag.js) - Google Analytics