将shp文件导入到GeoDatabase中
(C#语言)
private void ImportFeatureClassToNewWorkSpace(IFeatureDataset apFD)
{
//打开SHP文件
string StrFilter = "SHP文件(.shp) | *.shp";
string ImportShapeFileName = OpenFile(StrFilter);
if (ImportShapeFileName == "") { return; }
string ImportFileShortName = System.IO.Path.GetFileNameWithoutExtension(ImportShapeFileName);
string ImportFilePath = System.IO.Path.GetDirectoryName(ImportShapeFileName);
IWorkspaceName pInWorkspaceName;
IFeatureDatasetName pOutFeatureDSName;
IFeatureClassName pInFeatureClassName;
IDatasetName pInDatasetName;
IFeatureClassName pOutFeatureClassName;
IDatasetName pOutDatasetName;
long iCounter;
IFields pOutFields, pInFields;
IFieldChecker pFieldChecker;
IField pGeoField;
IGeometryDef pOutGeometryDef;
IGeometryDefEdit pOutGeometryDefEdit;
IName pName;
IFeatureClass pInFeatureClass;
IFeatureDataConverter pShpToClsConverter;
IEnumFieldError pEnumFieldError = null;
//得到一个输入SHP文件的工作空间,
pInWorkspaceName = new WorkspaceNameClass();
pInWorkspaceName.PathName = ImportFilePath;
pInWorkspaceName.WorkspaceFactoryProgID = "esriCore.ShapefileWorkspaceFactory.1";
//创建一个新的要素类名称,目的是为了以来PNAME接口的OPEN方法打开SHP文件
pInFeatureClassName = new FeatureClassNameClass();
pInDatasetName = (IDatasetName)pInFeatureClassName;
pInDatasetName.Name = ImportFileShortName;
pInDatasetName.WorkspaceName = pInWorkspaceName;
//打开一个SHP文件,将要读取它的字段集合
pName = (IName)pInFeatureClassName;
pInFeatureClass = (IFeatureClass)pName.Open();
//通过FIELDCHECKER检查字段的合法性,为输入要素类获得字段集合
pInFields = pInFeatureClass.Fields;
pFieldChecker = new FieldChecker();
pFieldChecker.Validate(pInFields, out pEnumFieldError, out pOutFields);
//通过循环查找几何字段
pGeoField = null;
for (iCounter = 0; iCounter < pOutFields.FieldCount; iCounter++)
{
if (pOutFields.get_Field((int)iCounter).Type == esriFieldType.esriFieldTypeGeometry)
{
pGeoField = pOutFields.get_Field((int)iCounter);
break;
}
}
//得到几何字段的几何定义
pOutGeometryDef = pGeoField.GeometryDef;
//设置几何字段的空间参考和网格
pOutGeometryDefEdit = (IGeometryDefEdit)pOutGeometryDef;
pOutGeometryDefEdit.GridCount_2 = 1;
pOutGeometryDefEdit.set_GridSize(0, 1500000);
//创建一个新的要素类名称作为可用的参数
pOutFeatureClassName = new FeatureClassNameClass();
pOutDatasetName = (IDatasetName)pOutFeatureClassName;
pOutDatasetName.Name = pInDatasetName.Name;
//创建一个新的数据集名称作为可用的参数
pOutFeatureDSName = (IFeatureDatasetName)new FeatureDatasetName();
//因为ConvertFeatureClass需要传入一个IFeatureDatasetName的参数,通过它确定导入生成的要素类的工作空间和要素集合
//情况一
//如果本函数的参数(IFeatureDataset)是一个确切的值,那么将它转换成IFeatureDatasetName接口就可以了。因为ConvertFeatureClass根据该接口就
//可以确定工作空间和要素集合,IFeatureClassName就可以不考虑上述问题
//情况二
//如果本函数的参数(IFeatureDataset)是一个NULL值,表示要创建独立要素类,
//那么ConvertFeatureClass函数无法根据IFeatureDatasetName参数确定工作空间和要素集合
//这个时候需要IFeatureClassName参数确定工作空间和要素集合
//如果参数的值是NULL,说明要创建独立要素类
if (apFD == null)
{
//创建一个不存在的要素集合pFDN,通过它将IFeatureClassName和工作空间连接起来,而ConvertFeatureClass函数并不使用该变量作为参数,
IFeatureDatasetName pFDN = new FeatureDatasetNameClass();
IDatasetName pDN = (IDatasetName)pFDN;
IDataset pDS = (IDataset)pWorkspace;
pDN.WorkspaceName = (IWorkspaceName)pDS.FullName;
pDN.Name = pDS.Name;
pOutFeatureClassName.FeatureDatasetName = (IDatasetName)pFDN;
//将pOutFeatureDSName设置为Null,将它做为参数给ConvertFeatureClass函数,因为IFeatureClassName本身已经和工作空间关联了,生成的
//要素类在工作空间的根目录下,即独立要素类
pOutFeatureDSName = null;
}
else//创建的要素类是在给定的参数(要素集合)下
{
pOutFeatureDSName = (IFeatureDatasetName)apFD.FullName;
}
//开始导入
pShpToClsConverter = new FeatureDataConverterClass();
pShpToClsConverter.ConvertFeatureClass(pInFeatureClassName, null, pOutFeatureDSName, pOutFeatureClassName, pOutGeometryDef, pOutFields, "", 1000, 0);
MessageBox.Show("导入成功","系统提示");
}
转载于:https://www.cnblogs.com/linhugh/archive/2012/05/02/2479213.html
将shp文件导入到GeoDatabase中相关推荐
- shp文件导入Oracle并发布到Geoserver
将shp文件导入oracle中,并发布到geoserver上 1. 环境准备 1.1 环境介绍 Oracle 11g Geoserver 2.11.1 1.2 软件准备 首先需要安装支持空间数据的or ...
- 将多个csv文件导入到pandas中并串联到一个DataFrame中
本文翻译自:Import multiple csv files into pandas and concatenate into one DataFrame I would like to read ...
- 云服务器如何导入文件,如何将文件导入云服务器中
如何将文件导入云服务器中 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 华为云 ...
- 将csv文件导入到数据库中
1.csv文件简介 CSV全称 Comma Separated values,是一种用来存储数据的纯文本文件格式,通常用于电子表格或数据库软件.这样你就发现了,csv其实就是纯文本文件,可以使用记事本 ...
- php导入qq数据txt代码,/谁有能都实现将excel文件导入到数据中,并在php网页上显示的源码啊,有的发送1091932879@qq.com,谢谢!...
PHP网页怎么导入Excel的数据 参码如下: // 1.引用ExcelReader类文 require_once 'Excel/reader.php'; // 2.实例化读取Excel类 $data ...
- shp文件导入postgresql数据库
目录 1.打开postgis postgis bundle 2.点击view connection details连接数据库 3.点击option:编码为LATIN1->点击import 选择s ...
- 将dblp中的文件导入到endnote中
将dblp中的文件导入到endnote中 复制要导入的论文题目到dblp中搜索 点击第一个按钮的第一个链接 跳转后页面点击cite 点击1 Endnote,然后点击2下载. 此时并没有下载文件,页面跳 ...
- Shp文件导入MySql数据库工具包,只是针对于8.0+以上版本定制开发
由于最新的geotools工具类不支持8.0+以上的MySQL数据库,故而开发该工具用于数据处理.采用javaFX开发的一个很简单的数据导入工具,对于5.0+的版本,大家参考网上的相关代码即可,也可在 ...
- access数据库导入oracle数据库,将excel表格导入access数据库再导入oracle数据库方法-如何将ACCESS数据库的文件导入到ORACLE中?...
怎样将excel中的数据导入到oracle数据库中 敢问楼主,表A存在几列,表B存在几列,表C存在几列 常规方法(表中列和excel中列一致) PLSQL 中 : select * from A up ...
最新文章
- 公开课报名 | 详解CNN-pFSMN模型以及在语音识别中的应用
- 照葫芦画瓢-comments(注释)
- mysql 存储过程 排序_更改MySQL存储过程“数据库排序规则”的名称
- ios不响应presentModalViewController界面的处理
- shell基础09 gawk程序(上)
- 文件 单片机_如何查看你写的单片机程序有多大?
- 线程同步 线程安全_同步装饰器来替换线程安全类
- oracle参数文件和口令文件
- android 生命周期管理,Android Activity生命周期和堆栈管理的详解_Android_脚本之家...
- 图论算法——无向图的深度优先搜索和广度优先搜索
- codeforces733-C. Epidemic in Monstropolis 贪心加链表
- Java基础知识陷阱(九)
- c语言书籍(c语言书籍)
- 【matlab深度学习工具箱】classificationLayer参数详解
- 群赛 round#5 解题报告(superoxide,choice,rpwt)
- mysql之mysql.sock文件
- R语言数据的排序、转换、汇总
- 杂谈|程序员还是工程师
- linux 配置使用ftp 使用账号密码登陆失败
- 1490_TC275_UART_shell例程测试
热门文章
- android手机界面管理系统的设计与实现(硕士学位论文).pdf,基于Android系统的手机文件管理器的设计与实现...
- babel import语法 js_搭建开发JS库的运行环境
- Metasploit profiling工具的利用
- Metasploit发布了版本5.0.76
- Xamarin 2017.10.9更新
- 2021易烊千玺高考成绩查询,易烊千玺高考分数公布?最骄傲的是他?网友:分太低!...
- 手机充值接口 php,首信易支付,话费充值接口
- js function如何传入参数未字符串_Python爬虫 JS 案例讲解:爬取漫画
- 服务器被修改,我的世界
- Nature子刊:皮层内脑机接口的主导感