/// <summary>
/// 建立新的FeatureDataSet
/// </summary>
/// <param name="featureWorkspace">工作空间</param>
/// <param name="spatialReference">坐标参考系</param>
/// <param name="dXmin">最小X</param>
/// <param name="dYmin">最小Y</param>
/// <param name="dXYResolution">X、Y的精度值</param>
/// <param name="featureDataSetName">数据集名称</param>
/// <returns>新建的数据集</returns>
public static IFeatureDataset CreateNewFeatureDataSet(
IFeatureWorkspace featureWorkspace, ISpatialReference spatialReference,
double dXmin, double dYmin, double dXYResolution, string featureDataSetName) {
IFeatureDataset featureDataset = null;
if (featureWorkspace == null)
return null;
try {
if (featureWorkspace != null) {
if (spatialReference == null)
spatialReference = new UnknownCoordinateSystemClass();
if (dXYResolution != 0)
spatialReference.SetFalseOriginAndUnits(dXmin, dYmin, 1.0 / dXYResolution);
featureDataset = featureWorkspace.CreateFeatureDataset(featureDataSetName, spatialReference);
// 注册到基表
IVersionedObject3 versionedObject = featureDataset as IVersionedObject3;
if (versionedObject != null)
versionedObject.RegisterAsVersioned3(true);
}
return featureDataset;
}
catch {
throw;
}
}
/// <summary>
/// 建立新的FeatureDataSet
/// </summary>
/// <param name="featureWorkspace">工作空间</param>
/// <param name="dXmin">最小X</param>
/// <param name="dXmax">最大X</param>
/// <param name="dYmin">最小Y</param>
/// <param name="dYmax">最大Y</param>
/// <param name="featureDataSetName">数据集名称</param>
/// <returns>新建的数据集</returns>
public static IFeatureDataset CreateNewFeatureDataSet(IFeatureWorkspace featureWorkspace,
double dXmin, double dXmax, double dYmin, double dYmax, string featureDataSetName) {
IFeatureDataset featureDataset = null;
try {
if (featureWorkspace != null) {
ISpatialReference spatialReference = new UnknownCoordinateSystemClass();
spatialReference.SetDomain(dXmin, dXmax, dYmin, dYmax);
featureDataset = featureWorkspace.CreateFeatureDataset(
featureDataSetName, spatialReference);
// 注册到基表
IVersionedObject3 versionedObject = featureDataset as IVersionedObject3;
if (versionedObject != null)
versionedObject.RegisterAsVersioned3(true);
}
return featureDataset;
}
catch {
throw;
}
}
/// <summary>
/// 建立新的FeatureDataSet
/// </summary>
/// <param name="featureWorkspace">工作空间</param>
/// <param name="spatialReference">坐标参考系</param>
/// <param name="featureDataSetName">数据集名称</param>
/// <returns>新建的数据集</returns>
public static IFeatureDataset CreateNewFeatureDataSet(IFeatureWorkspace featureWorkspace,
ISpatialReference spatialReference, string featureDataSetName) {
IFeatureDataset featureDataset = null;
try {
if (featureWorkspace != null) {
featureDataset = featureWorkspace.CreateFeatureDataset(
featureDataSetName, spatialReference);
}
// 注册到基表
IVersionedObject3 versionedObject = featureDataset as IVersionedObject3;
if (versionedObject != null)
versionedObject.RegisterAsVersioned3(true);
return featureDataset;
}
catch {
throw;
}
}
/// <summary>
/// 根据名称获取Feature Dataset
/// </summary>
/// <param name="pWorkspace">工作空间</param>
/// <param name="nameOfFeatureDataset">Feature Dataset名称</param>
/// <returns>Feature Dataset</returns>
public static IFeatureDataset GetFeatureDataset(IWorkspace pWorkspace, string nameOfFeatureDataset) {
IFeatureDataset pFeatureDataset = null;
if (pWorkspace is IFeatureWorkspace) {
IFeatureWorkspace pFCWorkspace = pWorkspace as IFeatureWorkspace;
try {
pFeatureDataset = pFCWorkspace.OpenFeatureDataset(nameOfFeatureDataset);
}
catch {
}
}
return pFeatureDataset;
}
/// <summary>
/// 获得工作空间的图层大类名
/// </summary>
/// <param name="pWorkspace">工作空间</param>
/// <returns>图层大类名数组</returns>
public static List<string> GetDatasetNames(IWorkspace pWorkspace) {
IEnumDatasetName enumDatasetName = pWorkspace.get_DatasetNames(esriDatasetType.esriDTFeatureDataset);
List<string> listDatasetNames = GetEnumDatasetNames(enumDatasetName);
ComObject.Release(ref enumDatasetName);
return listDatasetNames;
}
/// <summary>
/// 获取枚举集的图层名
/// </summary>
/// <param name="pEnumDatasetName"></param>
/// <returns></returns>
public static List<string> GetEnumDatasetNames(IEnumDatasetName pEnumDatasetName) {
List<string> pList = new List<string>();
if (pEnumDatasetName == null) return pList;
IDatasetName datasetName = pEnumDatasetName.Next();
while (datasetName != null) {
pList.Add(datasetName.Name);
datasetName = pEnumDatasetName.Next();
}
pList.Sort();
return pList;
}