Exemplo n.º 1
0
        public void LoadCoordinateSystems(ICRSFactory crsFactory, List <int> recentCRSList = null)
        {
            ICRS crs = SelectedCRS;

            this.crsFactory = crsFactory;

            LoadCoordinateSystems();

            if (crs != null)
            {
                SelectedCRS = crs;
            }

            LoadRecentCRSList(recentCRSList);
        }
Exemplo n.º 2
0
 public CRSSelectionForm(ICRSFactory crsFactory)
     : this()
 {
     this.crsFactory = crsFactory;
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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;
        }