private void FeatureClassMapToFieldInfor() { try { featureClassMapping = new Dictionary <IFeatureClass, List <string> >(); fieldInfoCollections = new List <IFieldInfoCollection>(); foreach (IFeatureClass fc in featureClasses) { List <string> geoNames = new List <string>(); IFieldInfoCollection fieldinfos = fc.GetFields(); if (fieldinfos != null && fieldinfos.Count > 0) { for (int i = 0; i < fieldinfos.Count; i++) { IFieldInfo field = fieldinfos.Get(i); if (field != null && field.GeometryDef != null) { geoNames.Add(field.Name); } } featureClassMapping.Add(fc, geoNames); fieldInfoCollections.Add(fieldinfos); } } } catch (Exception ex) { throw ex; } }
private void toolStripMenuItemFieldInfo_Click(object sender, EventArgs e) { string fieldinfo_name = selectNode.Text; string fc_name = selectNode.Parent.Text; string set_name = selectNode.Parent.Parent.Text; myTreeNode node = (myTreeNode)selectNode.Parent.Parent.Parent; IConnectionInfo ci = node.con; IDataSource ds = dsFactory.OpenDataSource(ci); IFeatureDataSet dataset = ds.OpenFeatureDataset(set_name); IFeatureClass fc = dataset.OpenFeatureClass(fc_name); IFieldInfoCollection fieldinfos = fc.GetFields(); for (int i = 0; i < fieldinfos.Count; i++) { IFieldInfo fieldinfo = fieldinfos.Get(i); if (null == fieldinfo) { continue; } if (fieldinfo_name == fieldinfo.Name) { FieldInfoForm form = new FieldInfoForm(fieldinfo); form.Show(); } } }
public void BuildDelete(IDbCommand command, object data, string tableName, IFieldInfoCollection fields) { if (command is null) { throw new ArgumentNullException(nameof(command)); } if (data is null) { throw new ArgumentNullException(nameof(data)); } if (fields is null) { throw new ArgumentNullException(nameof(fields)); } if (string.IsNullOrEmpty(tableName)) { throw new ArgumentException("message", nameof(tableName)); } var keyFieldInfo = fields.PrimaryKeyField ?? throw new ORMException("type doesn't have primary key field"); object keyValue = keyFieldInfo.GetFieldValue(data) ?? throw new ORMException("key value can not be null"); var keyParam = MakeParameter(command, keyFieldInfo, keyValue); command.Parameters.Add(keyParam); command.CommandText = string.Format(@"DELETE FROM {0} WHERE {1} = {2};", tableName, keyFieldInfo.Name, keyParam.ParameterName); }
/// <summary> /// 通过modelPoint查找model,修改model顶点,塞回数据源 /// </summary> /// <param name="fdbPath"></param> void editModleNodeCoord(string fdbPath) { IConnectionInfo ci = new ConnectionInfo(); ci.ConnectionType = gviConnectionType.gviConnectionFireBird2x; ci.Database = fdbPath; //获取数据源 IDataSource ds = new DataSourceFactory().OpenDataSource(ci); string[] dataSetNames = ds.GetFeatureDatasetNames(); IFeatureDataSet fds = ds.OpenFeatureDataset("fdsName"); IResourceManager resourceM = (IResourceManager)fds; //获取所有featureClass string[] fcNames = fds.GetNamesByType(gviDataSetType.gviDataSetFeatureClassTable); for (int fci = 0; fci < fcNames.Length; fci++) { IFeatureClass fc = fds.OpenFeatureClass(fcNames[fci]); IFieldInfoCollection fieldInfos = fc.GetFields(); for (int fieldi = 0; fieldi < fieldInfos.Count; fieldi++) { IFieldInfo finfo = fieldInfos.Get(fieldi); if (finfo.FieldType == gviFieldType.gviFieldGeometry) { //获取fc的几何属性及其索引,索引用于更新模型 aaa(fc, fieldi, resourceM); break; } } } }
private void CreateFeautureLayer() { bool hasfly = false; foreach (FeatureClass fc in _featureClassMapping.Keys) { List <string> geoNames = _featureClassMapping[fc]; foreach (string geoName in geoNames) { if (!geoName.Equals("Geometry")) { continue; } IFeatureLayer featureLayer = _axRenderControl.ObjectManager.CreateFeatureLayer(fc, geoName, null, null); featureLayer.MaxVisibleDistance = 500000000; _featureLayerMaps.Add(new FeatureLayerMap(featureLayer, fc)); 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; } //var angle = SetAngle(0, -20, 0); //SetCameraLookAt(env.Center, 1000, angle); } hasfly = true; } } }
private void LoadFcFieldInfo() { IFieldInfoCollection fieldinfos = fc.GetFields(); for (int i = 0; i < fieldinfos.Count; i++) { IFieldInfo fieldinfo = fieldinfos.Get(i); if (null == fieldinfo) { continue; } if (fieldinfo.FieldType == gviFieldType.gviFieldGeometry || fieldinfo.FieldType == gviFieldType.gviFieldFID) { continue; } int iRowIndex = -1; if (fieldinfo.Domain != null) { iRowIndex = this.dgv_FieldInfo.Rows.Add(new object[] { fieldinfo.Name, ConvertFieldTypeByString(fieldinfo.FieldType), fieldinfo.Domain.Name }); } else { iRowIndex = this.dgv_FieldInfo.Rows.Add(new object[] { fieldinfo.Name, ConvertFieldTypeByString(fieldinfo.FieldType), null }); } this.dgv_FieldInfo.Rows[iRowIndex].Tag = fieldinfo; } }
private void viewFieldToolStripMenuItem_Click(object sender, EventArgs e) { string fieldinfo_name = selectNode.Text; string fc_name = selectNode.Parent.Text; string set_name = selectNode.Parent.Parent.Text; myTreeNode node = (myTreeNode)selectNode.Parent.Parent.Parent; IConnectionInfo ci = node.con; IDataSource ds = null; IFeatureDataSet dset = null; IFeatureClass fc = null; try { ds = dsFactory.OpenDataSource(ci); dset = ds.OpenFeatureDataset(set_name); fc = dset.OpenFeatureClass(fc_name); IFieldInfoCollection fieldinfos = fc.GetFields(); for (int i = 0; i < fieldinfos.Count; i++) { IFieldInfo fieldinfo = fieldinfos.Get(i); if (null == fieldinfo) { continue; } if (fieldinfo_name == fieldinfo.Name) { ViewFieldInfoForm form = new ViewFieldInfoForm(fieldinfo); form.Show(); } } } catch (COMException comEx) { System.Diagnostics.Trace.WriteLine(comEx.Message); } catch (System.Exception ex) { System.Diagnostics.Trace.WriteLine(ex.Message); } finally { if (fc != null) { //Marshal.ReleaseComObject(fc); fc = null; } if (dset != null) { //Marshal.ReleaseComObject(dset); dset = null; } if (ds != null) { //Marshal.ReleaseComObject(ds); ds = null; } } }
private void LoadProperty() { DF3DFeatureClass featureClassInfo = CommonUtils.Instance().CurEditLayer; if (featureClassInfo == null) { return; } IFeatureClass fc = featureClassInfo.GetFeatureClass(); if (fc == null) { return; } IFieldInfoCollection fiCol = fc.GetFields(); if (fiCol == null) { return; } for (int i = 0; i < fiCol.Count; i++) { IFieldInfo fi = fiCol.Get(i); if (fi.Name == fc.FidFieldName) { continue; } switch (fi.FieldType) { case gviFieldType.gviFieldBlob: case gviFieldType.gviFieldGeometry: case gviFieldType.gviFieldUnknown: continue; //case gviFieldType.gviFieldFloat: //case gviFieldType.gviFieldDouble: // break; //case gviFieldType.gviFieldFID: //case gviFieldType.gviFieldUUID: //case gviFieldType.gviFieldInt16: //case gviFieldType.gviFieldInt32: //case gviFieldType.gviFieldInt64: // break; //case gviFieldType.gviFieldString: // break; //case gviFieldType.gviFieldDate: default: DataRow dr = this._dt.NewRow(); dr["FN"] = string.IsNullOrEmpty(fi.Alias) ? fi.Name : fi.Alias; dr["FV"] = null; dr["F"] = fi; this._dt.Rows.Add(dr); break; } } }
private static object Insert(this DbConnection connection, object data, string tableName, IFieldInfoCollection fields, DbTransaction transaction = null, OnConflictOption option = OnConflictOption.Default, ICommandBuilder commandBuilder = null, IExceptionProcessor exceptionProcessor = null, object keyValue = null, bool persistKeyvalue = true) { if (data == null) { throw new ArgumentNullException("data"); } commandBuilder = commandBuilder ?? DefaultCommandBuilder; using (var command = connection.CreateCommand()) { commandBuilder.BuildInsert(command, data, tableName, fields, option: option, keyValue: keyValue, persistKeyvalue: persistKeyvalue); try { var ptData = data as IPersistanceTracking; ptData?.OnInserting(); var id = command.ExecuteScalar(); ptData?.OnInserted(); var pkField = fields.PrimaryKeyField; if (pkField != null) { var value = ValueMapper.ProcessValue(pkField.RunTimeType, id); pkField.SetFieldValue(data, value); return(value); } else { return(id); } } catch (Exception ex) { if (exceptionProcessor is null) { throw; } else { throw exceptionProcessor.ProcessException(ex, connection, (string)null, transaction); } } } }
private void LoadLocalData() { try { ConnectionInfo ci = new ConnectionInfo { ConnectionType = i3dConnectionType.i3dConnectionFireBird2x }; string rootPath = Path.GetFullPath(@"..//..//.."); string tmpFDBPath = Path.Combine(rootPath, "data\\3dm\\1.3DM"); 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]); datasetCRS = dataset.SpatialReference; string[] fcnames = (string[])dataset.GetNamesByType(i3dDataSetType.i3dDataSetFeatureClassTable); if (fcnames.Length == 0) { return; } fcMap = new Hashtable(fcnames.Length); foreach (string name in fcnames) { IFeatureClass fc = dataset.OpenFeatureClass(name); // 找到空间列字段 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; } }
internal static void Update(this DbConnection connection, object data, string tableName, string whereExpression = null, IFieldInfoCollection fields = null, OnConflictOption option = OnConflictOption.Default, DbTransaction transaction = null, ICommandBuilder commandBuilder = null, IExceptionProcessor exceptionProcessor = null, object keyValue = null) { if (data is null) { throw new ArgumentNullException("data"); } commandBuilder = commandBuilder ?? DefaultCommandBuilder; if (data is IPersistanceTracking) { ((IPersistanceTracking)data).OnUpdating(); } using (var command = connection.CreateCommand()) { commandBuilder.BuildUpdate(command, data, tableName, fields, whereExpression: whereExpression, option: option, keyValue: keyValue); try { var changes = ExecuteNonQuery(connection, command, transaction); if (option != OnConflictOption.Ignore) { Debug.Assert(changes > 0, "update command resulted in no changes"); } } catch (Exception e) { if (exceptionProcessor != null) { throw exceptionProcessor.ProcessException(e, connection, command.CommandText, transaction); } else { throw; } } } if (data is IPersistanceTracking) { ((IPersistanceTracking)data).OnUpdated(); } }
private void FeatureDataSetMapToFeatureClassMap() { try { if (_ci == null) { return; } dsFactory = new DataSourceFactory(); IDataSource ds = dsFactory.OpenDataSource(_ci); string[] setnames = (string[])ds.GetFeatureDatasetNames(); if (setnames == null || setnames.Length == 0) { return; } foreach (string name in setnames) { IFeatureDataSet dataSet = ds.OpenFeatureDataset(name); string[] fcnames = (string[])dataSet.GetNamesByType(i3dDataSetType.i3dDataSetFeatureClassTable); if (fcnames == null || fcnames.Length == 0) { continue; } foreach (string fcname in fcnames) { IFeatureClass fc = dataSet.OpenFeatureClass(fcname); if (fc != null) { List <string> geoNames = new List <string>(); IFieldInfoCollection fieldinfos = fc.GetFields(); if (fieldinfos != null && fieldinfos.Count > 0) { for (int i = 0; i < fieldinfos.Count; i++) { IFieldInfo field = fieldinfos.Get(i); if (field != null && field.GeometryDef != null) { geoNames.Add(field.Name); } } _featureClassMapping.Add(fc, geoNames); } } } } } catch (Exception ex) { LoggerHelper.Logger.Error(ex, "执行FeatureDataSetMapToFeatureClassMap错误"); } }
internal static void Delete(this DbConnection connection, object data, string tableName, IFieldInfoCollection fields, DbTransaction transaction = null, ICommandBuilder commandBuilder = null, IExceptionProcessor exceptionProcessor = null) { if (connection is null) { throw new ArgumentNullException(nameof(connection)); } if (data is null) { throw new ArgumentNullException("data"); } commandBuilder = commandBuilder ?? DefaultCommandBuilder; lock (data) { if (data is IPersistanceTracking) { ((IPersistanceTracking)data).OnDeleting(); } using (var command = connection.CreateCommand()) { commandBuilder.BuildDelete(command, data, tableName, fields); try { ExecuteNonQuery(connection, command, transaction); } catch (Exception e) { if (exceptionProcessor is null) { throw; } else { throw exceptionProcessor.ProcessException(e, connection, command.CommandText, transaction); } } } if (data is IPersistanceTracking) { ((IPersistanceTracking)data).OnDeleted(); } } }
private object[] GetRegisteredRenderIndexFields(IFeatureClass fc) { ArrayList list = new ArrayList(); IFieldInfoCollection cols = fc.GetFields(); for (int i = 0; i < cols.Count; i++) { IFieldInfo field = cols.Get(i); if (field.RegisteredRenderIndex == true) { list.Add(field.Name); } } return(list.ToArray()); }
/// <summary> /// 添加 FieldInfo 到树节点 /// </summary> /// <param name="featureClass"></param> /// <param name="node"></param> public void AppendFieldInfoToTreeNode(IFeatureClass featureClass, TreeNode node) { // 获取属性字段 IFieldInfoCollection fieldinfos = featureClass.GetFields(); for (int i = 0; i < fieldinfos.Count; i++) { IFieldInfo fieldinfo = fieldinfos.Get(i); if (fieldinfo == null || fieldinfo.Length == 0) { return; } TreeNode fieldinfoNode = new TreeNode(fieldinfo.Name); node.Nodes.Add(fieldinfoNode); } }
public int TryCeateObjectClass(IFeatureDataSet dataset, string Name, IFieldInfoCollection fields, string[] indexField, out IObjectClass oc) { oc = null; if (((dataset == null) || string.IsNullOrEmpty(Name)) || (fields == null)) { return(-1); } try { string[] namesByType = dataset.GetNamesByType(gviDataSetType.gviDataSetObjectClassTable); if ((namesByType != null) && (Array.IndexOf <string>(namesByType, Name) != -1)) { oc = dataset.OpenObjectClass(Name); return(0); } oc = dataset.CreateObjectClass(Name, fields); if (dataset == null) { return(-1); } IDbIndexInfo index = null; if (indexField != null) { foreach (string str in indexField) { try { index = new DbIndexInfoClass { Name = string.Format("Index_{0}_{1}", oc.Id, str) }; index.AppendFieldDefine(str, true); oc.AddDbIndex(index); } catch (Exception exception) { } } } return(1); } catch (Exception exception2) { return(-1); } }
public CreateDBIndexForm(IFieldInfoCollection fields, ListBoxControl lbc) : this() { for (int i = 0; i < fields.Count; i++) { IFieldInfo fieldInfo = fields.Get(i); if (fieldInfo.FieldType == gviFieldType.gviFieldFID) { this.Fid = fieldInfo.Name; } if (fieldInfo.FieldType != gviFieldType.gviFieldGeometry) { this.lbc_FieldsAvailable.Items.Add(fieldInfo.Name); } } this.lbcIndexName = lbc; }
void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender) { IPickResult pr = PickResult; if (pr == null) { return; } if (EventSender == gviMouseSelectMode.gviMouseSelectClick) { if (pr.Type == gviObjectType.gviObjectFeatureLayer) { // 高亮Polygon this.axRenderControl1.FeatureManager.UnhighlightAll(); IFeatureLayerPickResult flpr = pr as IFeatureLayerPickResult; fid = flpr.FeatureId; IFeatureLayer fl = flpr.FeatureLayer; foreach (IFeatureClass fc in fcMap.Keys) { if (fc.Guid.Equals(fl.FeatureClassId)) { IRowBuffer fdeRow = fc.GetRow(fid); IFieldInfoCollection col = fdeRow.Fields; for (int i = 0; i < col.Count; ++i) { IFieldInfo info = col.Get(i); if (info.GeometryDef != null && info.GeometryDef.GeometryColumnType == gviGeometryColumnType.gviGeometryColumnPolyline) { int nPos = fdeRow.FieldIndex(info.Name); polyline = fdeRow.GetValue(nPos) as IPolyline; this.axRenderControl1.FeatureManager.HighlightFeature(fc, fid, System.Drawing.Color.Yellow); //获取路宽 nPos = fdeRow.FieldIndex("WIDTH"); //width = (double)fdeRow.GetValue(nPos); width = 10; } } } // end " if (fc.Guid.Equals(fl.FeatureClassId))" } // end "foreach (IFeatureClass fc in fcMap.Keys)" } } }
private void CreateFeautureLayer() { bool hasfly = false; foreach (FeatureClass 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); if (!hasfly) { IFieldInfoCollection fieldinfos = fc.GetFields(); IFieldInfo fieldinfo = fieldinfos.Get(fieldinfos.IndexOf(geoName)); IGeometryDef geometryDef = fieldinfo.GeometryDef; 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; } EulerAngle angle = new EulerAngle(); angle.Set(0, -20, 0); if (geoFactory == null) { geoFactory = new GeometryFactory(); } IPoint pos = geoFactory.CreatePoint(i3dVertexAttribute.i3dVertexAttributeZ); pos.SpatialCRS = datasetCRS; pos.Position = env.Center; this.axRenderControl1.Camera.LookAt2(pos, 1000, angle); } hasfly = true; } } }
public CreateDBIndexDlg(IFieldInfoCollection pFields, List <string> existIndexName) { InitializeComponent(); fcFields = pFields; indexNames = existIndexName; for (int k = 0; k < fcFields.Count; k++) { IFieldInfo fcField = fcFields.Get(k); if (fcField.FieldType == gviFieldType.gviFieldFID) { fidField = fcField.Name; } if (fcField.FieldType != gviFieldType.gviFieldGeometry && fcField.FieldType != gviFieldType.gviFieldBlob) { this.lb_Fields.Items.Add(new myFieldInfo(fcField)); } } }
public bool CompareFeatureClass(IFieldInfoCollection fields1, IFieldInfoCollection fields2) { if (fields1.Count != fields2.Count) { return(false); } for (int i = 0; i < fields1.Count; i++) { IFieldInfo fieldInfo = fields1.Get(i); int num = fields2.IndexOf(fieldInfo.Name); if (num == -1) { return(false); } if (!fieldInfo.Equal(fields2.Get(num))) { return(false); } } return(true); }
private void menuLoadData_Click(object sender, EventArgs e) { if (layers.Count > 0) { MessageBox.Show("数据已加载"); return; } // CreateFeautureLayer bool hasfly = false; foreach (IFeatureClass fc in fcMap.Keys) { List <string> geoNames = (List <string>)fcMap[fc]; foreach (string geoName in geoNames) { IFeatureLayer featureLayer = this.axRenderControl1.ObjectManager.CreateFeatureLayer( fc, geoName, null, null, rootId); layers.Add(featureLayer); 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); this.axRenderControl1.Camera.LookAt(env.Center, 1000, angle); } hasfly = true; } } }
public SqlSelectBuilder BuildSelect(TableOrSubQuery source, IFieldInfoCollection fields) { if (source is null) { throw new ArgumentNullException(nameof(source)); } if (fields is null) { throw new ArgumentNullException(nameof(fields)); } var selectBuilder = new SqlSelectBuilder(); selectBuilder.Source = source; foreach (var field in fields) { var resultColExpr = MakeResultColumnExpression(field, source); selectBuilder.ResultColumns.Add(resultColExpr); } return(selectBuilder); }
private void AddColumnToDataTable(DataTable dt, IFeatureClass fc) { DataColumn dc; if (fc != null) { IFieldInfoCollection fields = fc.GetFields(); for (int i = 0; i < fields.Count; i++) { IFieldInfo fInfo = fields.Get(i); if (fInfo.FieldType == i3dFieldType.i3dFieldGeometry || fInfo.FieldType == i3dFieldType.i3dFieldBlob || fInfo.Name.ToUpper() == "GROUPID") { continue; } dc = new DataColumn { ColumnName = fInfo.Name }; SetDataColumnType(fInfo.FieldType, dc); dt.Columns.Add(dc); } // GroupId dc = new DataColumn("GroupId") { DataType = typeof(int) }; dt.Columns.Add(dc); // GroupName dc = new DataColumn("GroupName") { DataType = typeof(string) }; dt.Columns.Add(dc); } }
/// <summary> /// 初始化 /// </summary> private void init() { // 初始化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"); skybox = this.axRenderControl1.ObjectManager.GetSkyBox(1); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageBack, tmpSkyboxPath + "\\2_BK.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageBottom, tmpSkyboxPath + "\\2_DN.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageFront, tmpSkyboxPath + "\\2_FR.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageLeft, tmpSkyboxPath + "\\2_LF.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageRight, tmpSkyboxPath + "\\2_RT.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageTop, tmpSkyboxPath + "\\2_UP.jpg"); skybox = this.axRenderControl1.ObjectManager.GetSkyBox(2); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageBack, tmpSkyboxPath + "\\04_BK.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageBottom, tmpSkyboxPath + "\\04_DN.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageFront, tmpSkyboxPath + "\\04_FR.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageLeft, tmpSkyboxPath + "\\04_LF.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageRight, tmpSkyboxPath + "\\04_RT.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageTop, tmpSkyboxPath + "\\04_UP.jpg"); skybox = this.axRenderControl1.ObjectManager.GetSkyBox(3); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageBack, tmpSkyboxPath + "\\9_BK.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageBottom, tmpSkyboxPath + "\\9_DN.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageFront, tmpSkyboxPath + "\\9_FR.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageLeft, tmpSkyboxPath + "\\9_LF.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageRight, tmpSkyboxPath + "\\9_RT.jpg"); skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageTop, tmpSkyboxPath + "\\9_UP.jpg"); } else { MessageBox.Show("请不要随意更改SDK目录名"); return; } #region 加载FDB场景 try { IConnectionInfo ci = new ConnectionInfo(); ci.ConnectionType = gviConnectionType.gviConnectionFireBird2x; string tmpFDBPath = (strMediaPath + @"\SDKDEMO.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]); string[] fcnames = (string[])dataset.GetNamesByType(gviDataSetType.gviDataSetFeatureClassTable); if (fcnames.Length == 0) { return; } fcMap = new Hashtable(fcnames.Length); foreach (string name in fcnames) { IFeatureClass fc = dataset.OpenFeatureClass(name); // 找到空间列字段 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); this.axRenderControl1.Camera.LookAt(env.Center, 1000, angle); } hasfly = true; } } #endregion 加载FDB场景 { this.helpProvider1.SetShowHelp(this.axRenderControl1, true); this.helpProvider1.SetHelpString(this.axRenderControl1, ""); this.helpProvider1.HelpNamespace = "HideSelectedArea.html"; } // 注册控件拾取事件 this.axRenderControl1.RcMouseClickSelect += new _IRenderControlEvents_RcMouseClickSelectEventHandler(axRenderControl1_RcMouseClickSelect); this.axRenderControl1.RcMouseDragSelect += new _IRenderControlEvents_RcMouseDragSelectEventHandler(axRenderControl1_RcMouseDragSelect); this.axRenderControl1.MouseSelectObjectMask = gviMouseSelectObjectMask.gviSelectFeatureLayer; this.axRenderControl1.InteractMode = gviInteractMode.gviInteractSelect; this.axRenderControl1.MouseSelectMode = gviMouseSelectMode.gviMouseSelectClick | gviMouseSelectMode.gviMouseSelectDrag; }
void init() { // 初始化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; // 注册出图事件 this.axRenderControl1.RcPictureExportBegin += new _IRenderControlEvents_RcPictureExportBeginEventHandler(axRenderControl1_RcPictureExportBegin); this.axRenderControl1.RcPictureExporting += new _IRenderControlEvents_RcPictureExportingEventHandler(axRenderControl1_RcPictureExporting); this.axRenderControl1.RcPictureExportEnd += new _IRenderControlEvents_RcPictureExportEndEventHandler(axRenderControl1_RcPictureExportEnd); // 注册相机“返回”和“前进”事件 this.axRenderControl1.RcCameraUndoRedoStatusChanged += new _IRenderControlEvents_RcCameraUndoRedoStatusChangedEventHandler(axRenderControl1_RcCameraUndoRedoStatusChanged); _rcCameraUndoRedo = new _IRenderControlEvents_RcCameraUndoRedoStatusChangedEventHandler(axRenderControl1_RcCameraUndoRedoStatusChanged); // 设置天空盒 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; } // 加载FDB场景 try { IConnectionInfo ci = new ConnectionInfo(); ci.ConnectionType = gviConnectionType.gviConnectionFireBird2x; string tmpFDBPath = (strMediaPath + @"\SDKDEMO.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]); string[] fcnames = (string[])dataset.GetNamesByType(gviDataSetType.gviDataSetFeatureClassTable); if (fcnames.Length == 0) { return; } fcMap = new Hashtable(fcnames.Length); foreach (string name in fcnames) { IFeatureClass fc = dataset.OpenFeatureClass(name); // 找到空间列字段 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; 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); this.axRenderControl1.Camera.LookAt(env.Center, 1000, angle); } hasfly = true; } } // 加载动画导航 BindingSource bindingSource1 = new BindingSource(); { string tmpXMLPath = (strMediaPath + @"\xml\CameraTour_1.xml"); tour = this.axRenderControl1.ObjectManager.CreateCameraTour(rootId); if (File.Exists(tmpXMLPath)) { StreamReader sr = new StreamReader(tmpXMLPath); string xmlstring = ""; string line = sr.ReadLine(); while (!string.IsNullOrEmpty(line)) { xmlstring += line; line = sr.ReadLine(); } sr.Close(); tour.FromXml(xmlstring); } bindingSource1.Add(new Knight("CameraTour_1", tour)); } { string tmpXMLPath = (strMediaPath + @"\xml\CameraTour_2.xml"); tour = this.axRenderControl1.ObjectManager.CreateCameraTour(rootId); if (File.Exists(tmpXMLPath)) { StreamReader sr = new StreamReader(tmpXMLPath); string xmlstring = ""; string line = sr.ReadLine(); while (!string.IsNullOrEmpty(line)) { xmlstring += line; line = sr.ReadLine(); } sr.Close(); tour.FromXml(xmlstring); } bindingSource1.Add(new Knight("CameraTour_2", tour)); } dataGridView1.DataSource = bindingSource1; dataGridView1.Columns[1].Visible = false; this.btnPause.Enabled = false; this.btnStop.Enabled = false; this.toolStripComboBoxWeather.SelectedIndex = 0; { this.helpProvider1.SetShowHelp(this.axRenderControl1, true); this.helpProvider1.SetHelpString(this.axRenderControl1, ""); this.helpProvider1.HelpNamespace = "HelloWorld.html"; } }
private void toolStripSetGeometryRender_Click(object sender, EventArgs e) { string nodeName = selectNode.Text; myListNode node = selectNode as myListNode; IFeatureLayer layer = node.layer; // 获取注册了RenderIndex的字段名集合 IFeatureClass fc = layerFcMap[node.layer] as IFeatureClass; ArrayList fieldNamesWithRegisterRenderIndex = new ArrayList(); fieldNamesWithRegisterRenderIndex.Add(""); IFieldInfoCollection fields = fc.GetFields(); for (int i = 0; i < fields.Count; i++) { if (fields.Get(i).RegisteredRenderIndex) { fieldNamesWithRegisterRenderIndex.Add(fields.Get(i).Name); } } switch (nodeName.Split('_')[0]) { case "ModelPoint": { ModelPointRenderForm trform = new ModelPointRenderForm(node.layer.GetGeometryRender(), fieldNamesWithRegisterRenderIndex.ToArray()); if (trform.ShowDialog() == DialogResult.OK) { node.layer.SetGeometryRender(trform.newRender); this.axRenderControl1.FeatureManager.RefreshFeatureClass(fc); } } break; case "Point": { SelectPointStyleForm selectStyleForm = new SelectPointStyleForm(); if (selectStyleForm.ShowDialog() == DialogResult.OK) { PointRenderForm trform; if (selectStyleForm.radioButtonSimplePoint.Checked) { trform = new PointRenderForm(node.layer.GetGeometryRender(), fieldNamesWithRegisterRenderIndex.ToArray(), true); } else { trform = new PointRenderForm(node.layer.GetGeometryRender(), fieldNamesWithRegisterRenderIndex.ToArray(), false); } if (trform.ShowDialog() == DialogResult.OK) { node.layer.SetGeometryRender(trform.newRender); this.axRenderControl1.FeatureManager.RefreshFeatureClass(fc); } } } break; case "Polyline": { PolylineRenderForm trform = new PolylineRenderForm(node.layer.GetGeometryRender(), fieldNamesWithRegisterRenderIndex.ToArray()); if (trform.ShowDialog() == DialogResult.OK) { node.layer.SetGeometryRender(trform.newRender); this.axRenderControl1.FeatureManager.RefreshFeatureClass(fc); } } break; case "Polygon": { PolygonRenderForm trform = new PolygonRenderForm(node.layer.GetGeometryRender(), fieldNamesWithRegisterRenderIndex.ToArray()); if (trform.ShowDialog() == DialogResult.OK) { node.layer.SetGeometryRender(trform.newRender); this.axRenderControl1.FeatureManager.RefreshFeatureClass(fc); } } break; } }
// 公共方法 void FeatureLayerVisualize(IConnectionInfo ci, bool needfly, string sourceName, ITextRender textRender, IGeometryRender geoRender) { IDataSourceFactory dsFactory = null; IDataSource ds = null; IFeatureDataSet dataset = null; try { dsFactory = new DataSourceFactory(); ds = dsFactory.OpenDataSource(ci); string[] setnames = (string[])ds.GetFeatureDatasetNames(); if (setnames.Length == 0) { return; } dataset = ds.OpenFeatureDataset(setnames[0]); string[] fcnames = (string[])dataset.GetNamesByType(gviDataSetType.gviDataSetFeatureClassTable); if (fcnames.Length == 0) { return; } fcMap = new Hashtable(fcnames.Length); foreach (string name in fcnames) { IFeatureClass fc = dataset.OpenFeatureClass(name); // 找到空间列字段 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); } // CreateFeautureLayer bool hasfly = !needfly; foreach (IFeatureClass fcInMap in fcMap.Keys) { List <string> geoNames = (List <string>)fcMap[fcInMap]; foreach (string geoName in geoNames) { IFeatureLayer featureLayer = this.axRenderControl1.ObjectManager.CreateFeatureLayer( fcInMap, geoName, textRender, geoRender, rootId); // 设置featureLayer组可见 if (!geoRender.RenderGroupField.Equals("")) { SetGroupVisiable(dataset, featureLayer); } // 添加节点到界面控件上 myListNode item = new myListNode(string.Format("{0}_{1}_{2}", sourceName, fcInMap.Name, featureLayer.MaxVisibleDistance.ToString()), featureLayer); item.Checked = true; listView1.Items.Add(item); layerFcMap.Add(featureLayer, fcInMap); IFieldInfoCollection fieldinfos = fcInMap.GetFields(); IFieldInfo fieldinfo = fieldinfos.Get(fieldinfos.IndexOf(geoName)); IGeometryDef geometryDef = fieldinfo.GeometryDef; IEnvelope env = geometryDef.Envelope; layerEnvelopeMap.Add(featureLayer, env); 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; } // 相机飞入 if (!hasfly) { angle.Set(0, -20, 0); this.axRenderControl1.Camera.LookAt(env.Center, 1000, angle); } hasfly = true; } } } catch (COMException ex) { System.Diagnostics.Trace.WriteLine(ex.Message); return; } catch (System.Exception e) { System.Diagnostics.Trace.WriteLine(e.Message); return; } finally { if (dsFactory != null) { //Marshal.ReleaseComObject(dsFactory); dsFactory = null; } if (ds != null) { //Marshal.ReleaseComObject(ds); ds = null; } if (dataset != null) { //Marshal.ReleaseComObject(dataset); dataset = null; } //if (fc != null) //{ // //Marshal.ReleaseComObject(fc); // fc = null; //} } }
// 公共方法 void FeatureLayerVisualize(IConnectionInfo ci, bool needfly, string sourceName) { try { 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]); string[] fcnames = (string[])dataset.GetNamesByType(gviDataSetType.gviDataSetFeatureClassTable); if (fcnames.Length == 0) { return; } fcMap = new Hashtable(fcnames.Length); foreach (string name in fcnames) { IFeatureClass fc = dataset.OpenFeatureClass(name); _featureClass = 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 = !needfly; foreach (IFeatureClass fc in fcMap.Keys) { List <string> geoNames = (List <string>)fcMap[fc]; foreach (string geoName in geoNames) { IFeatureLayer featureLayer = this.axRenderControl1.ObjectManager.CreateFeatureLayer( fc, geoName, null, null, rootId); 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; } // 相机飞入 if (!hasfly) { IEulerAngle angle = new EulerAngle(); angle.Set(0, -20, 0); this.axRenderControl1.Camera.LookAt(env.Center, 1000, angle); } hasfly = true; } } }
private void MainForm_Load(object sender, System.EventArgs e) { // 初始化RenderControl控件 IPropertySet ps = new PropertySet(); ps.SetProperty("RenderSystem", gviRenderSystem.gviRenderOpenGL); this.axRenderControl1.Initialize(true, ps); 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; } // 加载FDB场景 try { IConnectionInfo ci = new ConnectionInfo(); ci.ConnectionType = gviConnectionType.gviConnectionFireBird2x; string tmpFDBPath = (strMediaPath + @"\PIPE.FDB"); ci.Database = tmpFDBPath; IDataSourceFactory dsFactory = new DataSourceFactory(); IDataSource ds = dsFactory.OpenDataSource(ci); string[] setnames = (string[])ds.GetFeatureDatasetNames(); if (setnames.Length == 0) { return; } dataset = ds.OpenFeatureDataset(setnames[0]); string[] fcnames = (string[])dataset.GetNamesByType(gviDataSetType.gviDataSetFeatureClassTable); if (fcnames.Length == 0) { return; } fcMap = new Hashtable(fcnames.Length); foreach (string name in fcnames) { IFeatureClass fc = dataset.OpenFeatureClass(name); // 找到空间列字段 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 foreach (IFeatureClass fc in fcMap.Keys) { List <string> geoNames = (List <string>)fcMap[fc]; foreach (string geoName in geoNames) { if (!geoName.Equals("Geometry")) { continue; } this.axRenderControl1.ObjectManager.CreateFeatureLayer(fc, geoName, null, null, rootId); } } IPoint position = new GeometryFactory().CreatePoint(gviVertexAttribute.gviVertexAttributeZ); position.SetCoords(506308.31579040177, 314272.281405516, 3.2581421811509275, 0, 0); position.SpatialCRS = dataset.SpatialReference; IEulerAngle angle = new EulerAngle(); angle.Set(66.16, -14.2, 0); this.axRenderControl1.Camera.SetCamera2(position, angle, gviSetCameraFlags.gviSetCameraNoFlags); { this.helpProvider1.SetShowHelp(this.axRenderControl1, true); this.helpProvider1.SetHelpString(this.axRenderControl1, ""); this.helpProvider1.HelpNamespace = "DynamicPipe.html"; } }