-
-
-
-
-
-
-
-
- public bool SetSpatialReferenceXYDoMainToDB(double pMinX, double pMinY, double pMaxX, double pMaxY)
- {
- bool rbc = false;
- if (this.DefaultWorkSpace == null)
- {
- rbc = false;
- return rbc;
- }
- List<IDataset> AllGisDataSetList = new List<IDataset>();
-
- IWorkspace ws = this.DefaultWorkSpace;
- IEnumDataset topEnumDataset = this.getEnumDataset(ws);
- if (topEnumDataset != null)
- {
- topEnumDataset.Reset();
- IDataset ds = topEnumDataset.Next();
- while (ds != null)
- {
- switch (ds.Type)
- {
- case esriDatasetType.esriDTFeatureDataset:
-
- AllGisDataSetList.Add(ds);
-
- IEnumDataset subEnumDs = this.getEnumSubDataset(ds);
- IDataset subds = subEnumDs.Next();
- while (subds != null)
- {
- switch (subds.Type)
- {
- case esriDatasetType.esriDTFeatureClass:
- rbc=this.SetDataSetByXYDoMain(subds, pMinX, pMinY, pMaxX, pMaxY);
- break;
- }
- subds = subEnumDs.Next();
- }
- rbc = this.SetDataSetByXYDoMain(ds, pMinX, pMinY, pMaxX, pMaxY);
- break;
- case esriDatasetType.esriDTFeatureClass:
-
- rbc = this.SetDataSetByXYDoMain(ds, pMinX, pMinY, pMaxX, pMaxY);
-
- break;
- }
- ds = topEnumDataset.Next();
- }
- }
- return rbc;
- }
- private bool SetDataSetByXYDoMain(IDataset ds, double pMinX, double pMinY, double pMaxX, double pMaxY)
- {
- bool rbc = false;
- ISpatialReference sr = null;
- IGeoDataset geods = null;
- geods = ds as IGeoDataset;
- sr = geods.SpatialReference;
-
- if (geods is IFeatureClassManage && geods is ISchemaLock)
- {
- ISchemaLock schemaLock = (ISchemaLock)geods;
- try
- {
- schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);
- IFeatureClassManage featureClassManage = (IFeatureClassManage)geods;
- featureClassManage.UpdateExtent();
-
- schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
- AppLogErrWrite.WriteErrLog("updateExtent_Update完成:" + (geods as IDataset).Name);
-
- }
- catch (Exception k)
- {
- schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
- AppLogErrWrite.WriteErrLog("updateExtent_" + k.Message + " " + (geods as IDataset).Name);
- }
- }
-
-
- if (sr is ISpatialReference2GEN)
- {
- (sr as ISpatialReference2GEN).SetDomain(pMinX, pMaxX, pMinY, pMaxY);
- }
- else
- {
- sr.SetDomain(pMinX, pMaxX, pMinY, pMaxY);
- }
-
- if ((geods as IDataset).Type == esriDatasetType.esriDTFeatureDataset
- && geods is IGeoDatasetSchemaEdit
- && geods is ISchemaLock)
- {
-
- IGeoDatasetSchemaEdit schemaEdit = geods as IGeoDatasetSchemaEdit;
- if (schemaEdit.CanAlterSpatialReference == true)
- {
- ISchemaLock schemaLock = (ISchemaLock)geods;
- try
- {
- schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);
- schemaEdit.AlterSpatialReference(sr);
- schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
- rbc = true;
- AppLogErrWrite.WriteErrLog("修改投影XYDoMain完成:" + (geods as IDataset).Name);
-
- }
- catch (Exception ex)
- {
- schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
- AppLogErrWrite.WriteErrLog("修改投影XYDoMain出错:" + (geods as IDataset).Name + "/r/b" + ex.ToString());
- }
- }
- else
- {
- AppLogErrWrite.WriteErrLog((geods as IDataset).Name + "图层没权限修改空间投影!");
- }
- }
- return rbc;
- }
- private IEnumDataset getEnumDataset(IWorkspace ws)
- {
- return ws.get_Datasets(esriDatasetType.esriDTAny);
- }
- private IEnumDataset getEnumSubDataset(IDataset ods)
- {
- IEnumDataset oEnumSubds = null;
- if (ods.Type == esriDatasetType.esriDTFeatureDataset)
- {
- oEnumSubds = ods.Subsets;
- }
- return oEnumSubds;
- }
-
- public bool SetSpatialReferenceToDB(ISpatialReference sr)
- {
- bool rbc = false;
- if (this.DefaultWorkSpace == null)
- {
- rbc = false;
- return rbc;
- }
- List<IDataset> AllGisDataSetList = new List<IDataset>();
-
- IWorkspace ws = this.DefaultWorkSpace;
- IEnumDataset topEnumDataset = this.getEnumDataset(ws);
- if (topEnumDataset != null)
- {
- topEnumDataset.Reset();
- IDataset ds = topEnumDataset.Next();
- while (ds != null)
- {
- switch (ds.Type)
- {
- case esriDatasetType.esriDTFeatureDataset:
-
- AllGisDataSetList.Add(ds);
-
- IEnumDataset subEnumDs = this.getEnumSubDataset(ds);
- IDataset subds = subEnumDs.Next();
- while (subds != null)
- {
- switch (subds.Type)
- {
- case esriDatasetType.esriDTFeatureClass:
- rbc = this.SetSpatialReference(subds,sr);
- break;
- }
- System.Runtime.InteropServices.Marshal.ReleaseComObject(subds);
- subds = subEnumDs.Next();
- }
- rbc = this.SetSpatialReference(ds, sr);
- break;
- case esriDatasetType.esriDTFeatureClass:
-
- rbc = this.SetSpatialReference(ds, sr);
-
- break;
- }
- System.Runtime.InteropServices.Marshal.ReleaseComObject(ds);
- ds = topEnumDataset.Next();
- }
- System.Runtime.InteropServices.Marshal.ReleaseComObject(topEnumDataset);
- }
- return rbc;
- }
- private bool SetSpatialReference(IDataset ds, ISpatialReference sr)
- {
- bool rbc = false;
- IGeoDataset geods = null;
- geods = ds as IGeoDataset;
- if ((geods as IDataset).Type == esriDatasetType.esriDTFeatureDataset
- && geods is IGeoDatasetSchemaEdit
- && geods is ISchemaLock)
- {
-
- IGeoDatasetSchemaEdit schemaEdit = geods as IGeoDatasetSchemaEdit;
- if (schemaEdit.CanAlterSpatialReference == true)
- {
- ISchemaLock schemaLock = (ISchemaLock)geods;
- try
- {
- schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);
- schemaEdit.AlterSpatialReference(sr);
- schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
- rbc = true;
- AppLogErrWrite.WriteErrLog("修改投影完成:" + (geods as IDataset).Name);
- }
- catch (Exception ex)
- {
- schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
- AppLogErrWrite.WriteErrLog("修改投影出错:" + (geods as IDataset).Name + "/r/b" + ex.ToString());
- }
- }
- else
- {
- AppLogErrWrite.WriteErrLog((geods as IDataset).Name + "图层没权限修改空间投影!");
- }
- }
- return rbc;
- }
posted @
2008-07-01 16:53
sqlite例子
阅读(
381)
评论()
收藏
举报