public void LoadCoordinateSystems(ICRSFactory crsFactory, List <int> recentCRSList = null) { ICRS crs = SelectedCRS; this.crsFactory = crsFactory; LoadCoordinateSystems(); if (crs != null) { SelectedCRS = crs; } LoadRecentCRSList(recentCRSList); }
public CRSSelectionForm(ICRSFactory crsFactory) : this() { this.crsFactory = crsFactory; }
public bool InitTemplateLib(IDataSource ds) { IFeatureDataSet dataset = null; IObjectClass oc = null; IFieldInfoCollection fields = null; string[] arrDBIndex = null; ICRSFactory o = null; ISpatialCRS spatialCRS = null; bool flag; string wKT = "UNKNOWNCS[\"unnamed\"]"; if (ds == null) { return(false); } try { o = new CRSFactoryClass(); spatialCRS = o.CreateFromWKT(wKT) as ISpatialCRS; if (spatialCRS != null) { if (DataProvider.Instance.TryCeateFeatureDataSet(ds, "DataSet_BIZ", spatialCRS, out dataset) == -1) { return(false); } Marshal.ReleaseComObject(dataset); if (!DataProvider.Instance.TryOpenFeatureDataSet(ds, "DataSet_BIZ", out dataset)) { return(false); } fields = DataModel.GetDataModel("OC_Catalog", out arrDBIndex); if (fields != null) { try { try { switch (DataProvider.Instance.TryCeateObjectClass(dataset, "OC_Catalog", fields, arrDBIndex, out oc)) { case -1: return(false); case 1: oc.AliasName = "设施类分类表"; Marshal.ReleaseComObject(oc); break; } } catch (Exception exception) { return(false); } goto Label_012C; } finally { Marshal.ReleaseComObject(fields); fields = null; } } } return(false); Label_012C: fields = DataModel.GetDataModel("OC_FieldConfig", out arrDBIndex); if (fields != null) { try { try { switch (DataProvider.Instance.TryCeateObjectClass(dataset, "OC_FieldConfig", fields, arrDBIndex, out oc)) { case -1: return(false); case 1: oc.AliasName = "设施类字段配置表"; Marshal.ReleaseComObject(oc); break; } } catch (Exception exception2) { return(false); } goto Label_01BE; } finally { Marshal.ReleaseComObject(fields); fields = null; } } return(false); Label_01BE: fields = DataModel.GetDataModel("OC_TopoManage", out arrDBIndex); if (fields != null) { try { try { switch (DataProvider.Instance.TryCeateObjectClass(dataset, "OC_TopoManage", fields, arrDBIndex, out oc)) { case -1: return(false); case 1: oc.AliasName = "拓扑管理表"; Marshal.ReleaseComObject(oc); break; } } catch (Exception exception3) { return(false); } goto Label_0250; } finally { Marshal.ReleaseComObject(fields); fields = null; } } return(false); Label_0250: fields = DataModel.GetDataModel("OC_FacilityStyle", out arrDBIndex); if (fields != null) { try { try { switch (DataProvider.Instance.TryCeateObjectClass(dataset, "OC_FacilityStyle", fields, arrDBIndex, out oc)) { case -1: return(false); case 1: oc.AliasName = "设施风格管理表"; Marshal.ReleaseComObject(oc); break; } } catch (Exception exception4) { return(false); } goto Label_02E2; } finally { Marshal.ReleaseComObject(fields); fields = null; } } return(false); Label_02E2: fields = DataModel.GetDataModel("OC_ModelInfo", out arrDBIndex); if (fields != null) { try { try { switch (DataProvider.Instance.TryCeateObjectClass(dataset, "OC_ModelInfo", fields, arrDBIndex, out oc)) { case -1: return(false); case 1: oc.AliasName = "模型管理表"; Marshal.ReleaseComObject(oc); break; } } catch (Exception exception5) { return(false); } goto Label_0374; } finally { Marshal.ReleaseComObject(fields); fields = null; } } return(false); Label_0374: fields = DataModel.GetDataModel("OC_ColorInfo", out arrDBIndex); if (fields != null) { try { try { switch (DataProvider.Instance.TryCeateObjectClass(dataset, "OC_ColorInfo", fields, arrDBIndex, out oc)) { case -1: return(false); case 1: oc.AliasName = "颜色管理表"; Marshal.ReleaseComObject(oc); break; } } catch (Exception exception6) { return(false); } goto Label_0406; } finally { Marshal.ReleaseComObject(fields); fields = null; } } return(false); Label_0406: fields = DataModel.GetDataModel("OC_TextureInfo", out arrDBIndex); if (fields != null) { try { try { switch (DataProvider.Instance.TryCeateObjectClass(dataset, "OC_TextureInfo", fields, arrDBIndex, out oc)) { case -1: return(false); case 1: oc.AliasName = "材质管理表"; Marshal.ReleaseComObject(oc); break; } } catch (Exception exception7) { return(false); } goto Label_0524; } finally { Marshal.ReleaseComObject(fields); fields = null; } } return(false); Label_0524: flag = true; } catch (Exception exception9) { flag = false; } finally { if (o != null) { Marshal.ReleaseComObject(o); o = null; } } return(flag); }
private void MainForm_Load(object sender, System.EventArgs e) { // 初始化RenderControl控件 IPropertySet ps = new PropertySet(); ps.SetProperty("RenderSystem", gviRenderSystem.gviRenderOpenGL); this.axRenderControl1.Initialize(true, ps); this.axRenderControl1.Camera.FlyTime = 1; rootId = this.axRenderControl1.ObjectManager.GetProjectTree().RootID; // 设置天空盒 if (System.IO.Directory.Exists(strMediaPath)) { string tmpSkyboxPath = strMediaPath + @"\skybox"; ISkyBox skybox = this.axRenderControl1.ObjectManager.GetSkyBox(0); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageBack, tmpSkyboxPath + "\\1_BK.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageBottom, tmpSkyboxPath + "\\1_DN.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageFront, tmpSkyboxPath + "\\1_FR.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageLeft, tmpSkyboxPath + "\\1_LF.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageRight, tmpSkyboxPath + "\\1_RT.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageTop, tmpSkyboxPath + "\\1_UP.jpg"); } else { MessageBox.Show("请不要随意更改SDK目录名"); return; } #region 加载FDB场景 try { IConnectionInfo ci = new ConnectionInfo(); ci.ConnectionType = gviConnectionType.gviConnectionFireBird2x; string tmpFDBPath = (strMediaPath + @"\MultiSpatialColumns.FDB"); ci.Database = tmpFDBPath; IDataSourceFactory dsFactory = new DataSourceFactory(); IDataSource ds = dsFactory.OpenDataSource(ci); string[] setnames = (string[])ds.GetFeatureDatasetNames(); if (setnames.Length == 0) { return; } IFeatureDataSet dataset = ds.OpenFeatureDataset(setnames[0]); projectCRS = dataset.SpatialReference as IProjectedCRS; string[] fcnames = (string[])dataset.GetNamesByType(gviDataSetType.gviDataSetFeatureClassTable); if (fcnames.Length == 0) { return; } fcMap = new Hashtable(fcnames.Length); fcGUIDMap = new Hashtable(fcnames.Length); foreach (string name in fcnames) { IFeatureClass fc = dataset.OpenFeatureClass(name); fcGUIDMap.Add(fc.Guid, fc); // 找到空间列字段 List <string> geoNames = new List <string>(); IFieldInfoCollection fieldinfos = fc.GetFields(); for (int i = 0; i < fieldinfos.Count; i++) { IFieldInfo fieldinfo = fieldinfos.Get(i); if (null == fieldinfo) { continue; } IGeometryDef geometryDef = fieldinfo.GeometryDef; if (null == geometryDef) { continue; } geoNames.Add(fieldinfo.Name); } fcMap.Add(fc, geoNames); } } catch (COMException ex) { System.Diagnostics.Trace.WriteLine(ex.Message); return; } // CreateFeautureLayer bool hasfly = false; foreach (IFeatureClass fc in fcMap.Keys) { List <string> geoNames = (List <string>)fcMap[fc]; foreach (string geoName in geoNames) { if (!geoName.Equals("Geometry")) { continue; } IFeatureLayer featureLayer = this.axRenderControl1.ObjectManager.CreateFeatureLayer( fc, geoName, null, null, rootId); if (!hasfly) { IFieldInfoCollection fieldinfos = fc.GetFields(); IFieldInfo fieldinfo = fieldinfos.Get(fieldinfos.IndexOf(geoName)); IGeometryDef geometryDef = fieldinfo.GeometryDef; IEnvelope env = geometryDef.Envelope; if (env == null || (env.MaxX == 0.0 && env.MaxY == 0.0 && env.MaxZ == 0.0 && env.MinX == 0.0 && env.MinY == 0.0 && env.MinZ == 0.0)) { continue; } IEulerAngle angle = new EulerAngle(); angle.Set(0, -20, 0); if (geoFactory == null) { geoFactory = new GeometryFactory(); } IPoint p = geoFactory.CreatePoint(gviVertexAttribute.gviVertexAttributeZ); p.Position = env.Center; p.SpatialCRS = fc.FeatureDataSet.SpatialReference; this.axRenderControl1.Camera.LookAt2(p, 1000, angle); } hasfly = true; } } #endregion if (crsFactory == null) { crsFactory = new CRSFactory(); } currentCRS = crsFactory.CreateFromWKT(this.axRenderControl1.GetCurrentCrsWKT()) as ISpatialCRS; this.axRenderControl1.HighlightHelper.VisibleMask = 1; }