数据的转换(shp sde mdb 之间的转换)
数据的转换(shp sde mdb 之间的转换)
调用用下面的方法可以将要素类从sde导出到shp或者mdb 或者从三个中的任意一个导出到另外一个。方法是:
/// <summary>
/// 将一个要素类从一个工作空间转移到另外一个工作空间
/// 注意目标工作空间不能有改要素类,必须先清除
/// </summary>
/// <param name="sourceWorkspace">源工作空间</param>
/// <param name="targetWorkspace">目标工作空间</param>
/// <param name="nameOfSourceFeatureClass">源要素类名</param>
/// <param name="nameOfTargetFeatureClass">目标要素类名</param>
public void IFeatureDataConverter_ConvertFeatureClass(IWorkspace sourceWorkspace, IWorkspace targetWorkspace, string nameOfSourceFeatureClass, string nameOfTargetFeatureClass)
{
//create source workspace name
IDataset sourceWorkspaceDataset = (IDataset)sourceWorkspace;
IWorkspaceName sourceWorkspaceName = (IWorkspaceName)sourceWorkspaceDataset.FullName;
//create source dataset name
IFeatureClassName sourceFeatureClassName = new FeatureClassNameClass();
IDatasetName sourceDatasetName = (IDatasetName)sourceFeatureClassName;
sourceDatasetName.WorkspaceName = sourceWorkspaceName;
sourceDatasetName.Name = nameOfSourceFeatureClass;
//create target workspace name
IDataset targetWorkspaceDataset = (IDataset)targetWorkspace;
IWorkspaceName targetWorkspaceName = (IWorkspaceName)targetWorkspaceDataset.FullName;
//create target dataset name
IFeatureClassName targetFeatureClassName = new FeatureClassNameClass();
IDatasetName targetDatasetName = (IDatasetName)targetFeatureClassName;
targetDatasetName.WorkspaceName = targetWorkspaceName;
targetDatasetName.Name = nameOfTargetFeatureClass;
//Open input Featureclass to get field definitions.
ESRI.ArcGIS.esriSystem.IName sourceName = (ESRI.ArcGIS.esriSystem.IName)sourceFeatureClassName;
IFeatureClass sourceFeatureClass = (IFeatureClass)sourceName.Open();
//Validate the field names because you are converting between different workspace types.
IFieldChecker fieldChecker = new FieldCheckerClass();
IFields targetFeatureClassFields;
IFields sourceFeatureClassFields = sourceFeatureClass.Fields;
IEnumFieldError enumFieldError;
// Most importantly set the input and validate workspaces!
fieldChecker.InputWorkspace = sourceWorkspace;
fieldChecker.ValidateWorkspace = targetWorkspace;
fieldChecker.Validate(sourceFeatureClassFields, out enumFieldError, out targetFeatureClassFields);
// Loop through the output fields to find the geomerty field
IField geometryField;
for (int i = 0; i < targetFeatureClassFields.FieldCount; i++)
{
if (targetFeatureClassFields.get_Field(i).Type == esriFieldType.esriFieldTypeGeometry)
{
geometryField = targetFeatureClassFields.get_Field(i);
// Get the geometry field's geometry defenition
IGeometryDef geometryDef = geometryField.GeometryDef;
//Give the geometry definition a spatial index grid count and grid size
IGeometryDefEdit targetFCGeoDefEdit = (IGeometryDefEdit)geometryDef;
targetFCGeoDefEdit.GridCount_2 = 1;
targetFCGeoDefEdit.set_GridSize(0, 0);
//Allow ArcGIS to determine a valid grid size for the data loaded
targetFCGeoDefEdit.SpatialReference_2 = geometryField.GeometryDef.SpatialReference;
// we want to convert all of the features
IQueryFilter queryFilter = new QueryFilterClass();
queryFilter.WhereClause = "";
// Load the feature class
IFeatureDataConverter fctofc = new FeatureDataConverterClass();
IEnumInvalidObject enumErrors = fctofc.ConvertFeatureClass(sourceFeatureClassName, queryFilter, null, targetFeatureClassName, geometryDef, targetFeatureClassFields, "", 1000, 0);
break;
}
}
}
只要设定了工作空间,不管工作空间是文件的 数据库的 还是什么的,可以自由转换。
比如我要将sde的要素类导出成shp文件,如下:
public void Export_Shp(IFeatureClass pFeatClass, string path)
{
IDataset pDataSet = pFeatClass as IDataset;
IWorkspace pWorkspace = pDataSet.Workspace;
string strShapeFolder = path;
string fileName = pFeatClass.AliasName;
string fullFileName = path + "\\" + fileName + ".shp";
fullFileName = fullFileName.Replace(@"\\", @"\");
if (File.Exists(fullFileName))
{ //如果已经存在就先删除
DirectoryInfo di = new DirectoryInfo(path);
FileInfo[] fis = di.GetFiles(fileName + "*");
foreach (FileInfo fi in fis)
{
fi.Delete();
}
}
IWorkspaceFactory pWSF = new ShapefileWorkspaceFactoryClass();
IFeatureWorkspace pWS = (IFeatureWorkspace)pWSF.OpenFromFile(strShapeFolder, 0);
this.IFeatureDataConverter_ConvertFeatureClass(pWorkspace, (IWorkspace)pWS, pFeatClass.AliasName, fileName);
}
转载于:https://www.cnblogs.com/linhugh/articles/2515063.html
数据的转换(shp sde mdb 之间的转换)相关推荐
- python变量类型之间转换_Python常用数据类型之间的转换总结
函数 描述 int(x [,base]) 将x转换为一个整数 long(x [,base] ) 将x转换为一个长整数 float(x) 将x转换到一个浮点数 complex(real [,imag]) ...
- proj4经纬度bl转换xy_多种坐标系之间的转换之Proj.NET_转载
Proj.NET (http://www.codeplex.com/ProjNET)是一个.NET下开源的空间参照和投影引擎,遵循OGC相关标准.负责人(Coordinators )是D_Guidi ...
- java数据类型之间的转换_Java基本类型之间的转换
一.基本数据类型长度 byte:一个字节,8位,有符号 short:两个字节,16为,有符号 char:两个字节,16位,无符号 int:4个字节,32位,有符号 float:4个字节,32位,有符号 ...
- 进制转换—任意进制之间的转换
一.十进制转化为任意进制 1.十进制数num转为七进制:力扣504 class Solution {public String convertToBase7(int num) {if(num==0){ ...
- tensor数据类型转换_PyTorch的tensor数据类型及其相关转换
1 基本类型 PyTorch的数据类型为各式各样的tensor,tensor可以理解为高维矩阵,与Numpy中的array类似. PyTorch中的tensor包括CPU上的数据类型和GPU上的数据类 ...
- 汉字编码(【Unicode】 【UTF-8】 【Unicode与UTF-8之间的转换】 【汉字 Unicode 编码范围】【中文标点Unicode码】【GBK编码】【批量获取汉字UNICODE码】)
参考博客: Unicode与UTF-8互转(C语言实现):http://blog.csdn.net/tge7618291/article/details/7599902 汉字 Unicode 编码范围 ...
- 计算机原理与基础 —— 进制之间的转换(二进制与十、八、十六禁止之间的转换)
进制也就是进制位,对于接触过电脑的人来说应该都不陌生,我们常用的进制包括:二进制.八进制.十进制与十六进制,它们之间区别在于数运算时是逢几进一位.比如二进制是逢2进一位,十进制也就是我们常用的0-9是 ...
- java中的字符,字符串,数字之间的转换
java中的字符,字符串,数字之间的转换 string 和int之间的转换 string转换成int :Integer.valueOf(" ") int转换成string : St ...
- 二、八、十、十六进制之间的转换
二进制.八进制.十进制.十六进制之间的转换 进制也就是进制位,对于接触过电脑的人来说应该都不陌生,我们常用的进制包括:二进制.八进制.十进制与十六进制,它们之间区别在于数运算时是逢几进一位.比如二进制 ...
最新文章
- 微信小程序实践_4显示新闻(2)
- 机智云明星开发者 | 董程森
- 【毕业求职季】-听说你想去大厂看学妹,带你看看字节跳动抖音电商后端面试长啥样?
- 我与Linux系统的交集
- Asp.Net Core 混合全球化与本地化支持
- 内容推荐策略产品经理的方法和实践
- [交互设计工具/原型创作工具]Axure RP Pro 5.0新特性 破解版 注册码
- Android背景图片设置
- html css实验6,(实验六DivCSS网页布局.doc
- Mbed OS :DMX512 灯光控制协议
- php的get和post,PHP中GET和POST区别
- ABB机器人示教器上人机界面的功能
- 从麻将到“农药”,细数 AI 攻占的游戏领域
- Mac 终端连接和操作服务器常用命令
- 使用linux内核仿真ZNS(zoned namespace SSD)
- 自己写的一点福利代码(三)
- 魔法师元素平衡(C++解法)
- html %3cstyle%3e 添加css,从网站适应CSS样式到一个Django香脆形式复选框
- ldrex strex
- 计算机图形渲染基础知识(个人笔记)
热门文章
- 输出指定个数所有枚举_【一天一大 lee】区间和的个数 (难度:困难) Day20201107
- 简单选择排序_一文带你读懂排序算法(一):冒泡 amp; 快速选择排序 amp; 简单插入排序算法...
- zookeeper版本更新_很遗憾,没有一篇文章能讲清楚ZooKeeper
- java 判断是否包含中文_Java 判断字符串是否包含中文正则表达式
- hbase major_compact 文件会变小吗_图解式学习:可能是最易懂的Hbase架构原理解析(二)...
- 3DShader之阴影贴图(Shadow Mapping)
- pytorch学习率衰减
- getpriority java_Java Thread类的最终int getPriority()方法(带示例)
- python标准库os.path中_Python零基础入门学习19:常用标准库之os.path子库
- 如何利用用户业务行为画像,做套餐与用户之间个性化智能匹配模型?