加载csv文件
using ESRI.ArcGIS.esriSystem
using ESRI.ArcGIS.DataSourcesOleDB
using ESRI.ArcGIS.Geodatabase
public static ITable OpenCSVFile(string csvFullPath){
string csvPath = System.IO.Path.GetDirectoryName(csvFullPath)
string csvName = System.IO.Path.GetFileName(csvFullPath)
IWorkspaceFactory pWorkspaceFactory = new OLEDBWorkspaceFactory()
IPropertySet pPropSet = new PropertySet()
//注意如果csv文件的字符编码是utf-8
//pPropSet.SetProperty("CONNECTSTRING", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + tablePath + ";Extended Properties='Text;HDR=Yes;IMEX=1;CharacterSet=65001;'")
pPropSet.SetProperty("CONNECTSTRING", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + csvPath + ";Extended Properties='Text;HDR=Yes;IMEX=1;'")
IWorkspace pWorkspace = pWorkspaceFactory.Open(pPropSet, 0)
IFeatureWorkspace pFeatureWorkspace2 = (IFeatureWorkspace)pWorkspace
ITable pTable = pFeatureWorkspace2.OpenTable(csvName)
return pTable
}
shp文件join csv表格并导出
using ESRI.ArcGIS.GeoDatabaseUI;
using ESRI.ArcGIS.Carto;
public static void JoinCSV2ShpAndExport(IFeatureLayer pFeatureLayer, ITable pTable, string layerJoinField, string csvJoinField)
{
IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
IMemoryRelationshipClassFactory pMemoryRelationClassFC = new MemoryRelationshipClassFactory();
IRelationshipClass pRelationshipClass = pMemoryRelationClassFC.Open("", pFeatureClass, layerJoinField, (IObjectClass)pTable, csvJoinField, "forword", "backword", esriRelCardinality.esriRelCardinalityOneToOne);
IDisplayRelationshipClass pDisplayrelationShip = (IDisplayRelationshipClass)pFeatureLayer; pDisplayrelationShip.DisplayRelationshipClass(pRelationshipClass, esriJoinType.esriLeftOuterJoin);
IRelationshipClassCollectionEdit pRelClassCollEdit = pFeatureLayer as IRelationshipClassCollectionEdit;
pRelClassCollEdit.AddRelationshipClass(pRelationshipClass);
IDisplayTable displayTable = pRelClassCollEdit as IDisplayTable;
IRelQueryTable joinedTable = displayTable.DisplayTable as IRelQueryTable;
IDatasetName srcName = (joinedTable as IDataset).FullName as IDatasetName;
IDatasetName destName = new FeatureClassNameClass() as IDatasetName;
destName.Name = "aa";
IWorkspaceName destWsName = new WorkspaceNameClass();
destWsName.PathName = "C:\\Temp\\";
destWsName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory.1";
destName.WorkspaceName = destWsName;
IFeatureClassName destFcName = destName as IFeatureClassName;
destFcName.FeatureType = esriFeatureType.esriFTSimple;
destFcName.ShapeFieldName = "Shape";
destFcName.ShapeType = pFeatureClass.ShapeType;
IQueryFilter queryF = null;
ISelectionSet selnSet = null;
IGeometryDef geomDef = null;
ExportOperation exOp = new ExportOperationClass();
exOp.ExportFeatureClass(srcName, queryF, selnSet, geomDef, destFcName, 0);
pRelClassCollEdit.RemoveAllRelationshipClasses();
pDisplayrelationShip.DisplayRelationshipClass(null, esriJoinType.esriLeftInnerJoin);
}