C#+AE读取Shapefile,raster,gdb,mdb,CAD图,自定义格式坐标数据
2013-05-19 10:27
429 查看
C#+AE读取Shapefile,raster,gdb,mdb,CAD图,自定义格式坐标数据
2013-05-16 20:40 7人阅读 评论(0) 收藏 举报[csharp] view plaincopy
using System;
using System.Collections.Generic;
using System.Text;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.DataSourcesRaster;
namespace PLOS.ClassLibrary
{
public class ReadData
{
public static List<ILayer> ReadShapLayer(List<string> filePathList)
{
List<ILayer> layerList = new List<ILayer>();
if (filePathList.Count == 0) return null;
else
{
foreach (string path in filePathList)
{
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();
IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(path), 0);
IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
IFeatureClass pFeatureClass=pFeatureWorkspace.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(path));
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureClass;
pFeatureLayer.Name = System.IO.Path.GetFileNameWithoutExtension(path);
layerList.Add(pFeatureLayer as ILayer);
}
return layerList;
}
}
public static List<ILayer> ReadLayerFromAccess(List<string> filePathList)
{
List<ILayer> layerList = new List<ILayer>();
if (filePathList.Count == 0) return null;
else
{
foreach (string path in filePathList)
{
IWorkspaceFactory pWorkspaceFactory = new AccessWorkspaceFactoryClass();
IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(path, 0);
IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
IEnumDataset pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureClass) as IEnumDataset;
pEnumDataset.Reset();
IDataset pDataset = pEnumDataset.Next();
while (pDataset is IFeatureClass)
{
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name);
pFeatureLayer.Name = pDataset.Name;
ILayer pLayer = pFeatureLayer as ILayer;
layerList.Add(pFeatureLayer as ILayer);
pDataset = pEnumDataset.Next();
}
}
return layerList;
}
}
public static List<ILayer> ReadLayerFromGDB(List<string> filePathList)
{
List<ILayer> layerList = new List<ILayer>();
if (filePathList.Count == 0) return null;
else
{
foreach (string path in filePathList)
{
IWorkspaceFactory pWorkspaceFactory = new FileGDBWorkspaceFactoryClass();
IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(path, 0);
IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
IEnumDataset pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureClass) as IEnumDataset;
pEnumDataset.Reset();
IDataset pDataset = pEnumDataset.Next();
while (pDataset is IFeatureClass)
{
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name);
pFeatureLayer.Name = pDataset.Name;
ILayer pLayer = pFeatureLayer as ILayer;
layerList.Add(pFeatureLayer as ILayer);
pDataset = pEnumDataset.Next();
}
}
return layerList;
}
}
public static List<ILayer> ReadRasterLayer(List<string> filePathList)
{
List<ILayer> layerList = new List<ILayer>();
if (filePathList.Count == 0) return null;
else
{
foreach (string path in filePathList)
{
IRasterLayer pRasterLayer = new RasterLayerClass();
pRasterLayer.CreateFromFilePath(path);
layerList.Add(pRasterLayer as ILayer);
}
return layerList;
}
}
public static List<ILayer> ReadCADLayer(List<string> filePathList)
{
List<ILayer> layerList = new List<ILayer>();
if (filePathList.Count == 0) return null;
else
{
foreach (string path in filePathList)
{
IWorkspaceFactory pWorkspaceFactory = new CadWorkspaceFactoryClass();
IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName( path), 0) as IFeatureWorkspace;
IFeatureDataset pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(System.IO.Path.GetFileName(path));
IFeatureClassContainer pFeatClassContainer = pFeatureDataset as IFeatureClassContainer;
for (int i = 0; i < pFeatClassContainer.ClassCount - 1; i++)
{
IFeatureLayer pFeatureLayer;
IFeatureClass pFeatClass = pFeatClassContainer.get_Class(i);
if (pFeatClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation) pFeatureLayer = new CadAnnotationLayerClass();
else pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.Name = pFeatClass.AliasName;
pFeatureLayer.FeatureClass = pFeatClass;
layerList.Add(pFeatureLayer as ILayer);
}
}
return layerList;
}
}
public static List<ILayer> ReadXYZfile(List<string> filePathLis)
{
//稍后贴出
}
}
}
相关文章推荐
- C#+AE读取Shapefile,raster,gdb,mdb,CAD图,自定义格式坐标数据
- C#+AE读取Shapefile,raster,gdb,mdb,CAD图,自定义格式坐标数据
- C#将CAD数据转成shape或mdb的代码
- C#实现CAD数据转shape或mdb
- C#实现CAD数据转shape或mdb
- AE(C#)Shapefile导入mdb数据库
- C#实现CAD数据转shape或mdb (转)
- C#写的读取ISO2709格式数据的DLL
- C#读取Excel数据在CAD上展图
- 教你读取shapefile格式文件
- BingMap读取shape(arcgis)格式数据(将shape文件转成Sql server2008的geometry类型,再进行读取)
- c#读取csv文件成DataTable,将DataTable数据存储为csv格式文件
- 基于ArcGIS10.0和Oracle10g的空间数据管理平台十(C#开发)-空间数据导入RDBMS上-MDB格式
- 总结02-26用C#从sql数据库导出csv格式的数据,从csv格式读取数据导入到sql表中
- 基于ArcGIS10.0和Oracle10g的空间数据管理平台十(C#开发)-空间数据导入RDBMS上-MDB格式
- .stl文件(CAD三维模型)格式 及 基于C/C++的数据读取
- net控件中数据导到Excel的格式 首先,我们了解一下excel从web页面上导出的原理。当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所以把mime类型设为:application/vnd.ms-excel,当excel读取文件时会以每个cell的格式呈现数据,如果cell没有规定的格式,则excel会以默认的格式去呈现该cell的数据。这样就给我们提供了自定义数据格式的空间,当然我们必须使用excel支持的格式。下面就列出常用的一些格式: 1) 文本
- C#CAD二次开发读取CAD表格数据
- Office编程(二)C#读取Excel并存入数据库,通过XML自定义表名,是否重建并插入数据
- 读取postgis中数据写入shapefile-3