private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { int selectIndex = comboBox1.SelectedIndex; if (selectIndex >= 0) { layer = mGlobeControl.Globe.Layers.GetLayerByCaption(comboBox1.SelectedItem.ToString()); if (layer != null) { features = layer.GetAllFeatures(); if (features.Length > 0) { GSOFeature feature = features[0]; if (feature.GetFieldCount() > 0) { for (int i = 0; i < feature.GetFieldCount(); i++) { GSOFieldDefn defn = (GSOFieldDefn)feature.GetFieldDefn(i); listBox1.Items.Add(defn.Name); } } } } } }
public FrmAddFieldToLayer(GSOLayer _layer, DataGridView _dataGridView1) { InitializeComponent(); layer = _layer; dataGridView1 = _dataGridView1; comboBoxFieldType.SelectedItem = "Text"; }
/// <summary> /// 获取图层中的所有feature对象,包括featureFolder下面的feature对象 /// </summary> /// <param name="layer"></param> /// <returns></returns> public static GSOFeatures getRealFeaturesByLayer(GSOLayer layer) { GSOFeatures realFeatures = new GSOFeatures(); if (layer != null) { for (int i = 0; i < layer.GetAllFeatures().Length; i++) { GSOFeature feature = layer.GetAt(i); if (feature != null) { if (feature.Type == EnumFeatureType.FeatureFolder) { GSOFeatureFolder featureFolder = feature as GSOFeatureFolder; getRealFeatureByFeatures(featureFolder.Features, ref realFeatures); } else { realFeatures.Add(feature); } } } } return(realFeatures); }
private FrmEditLayerAttributesByTable(GSOLayer layer,GSOFeatures selectFeatures, GSOGlobeControl globeControl) { InitializeComponent(); geoLayer = layer; m_features = selectFeatures; globeControl1 = globeControl; }
private void FrmAddWell_Load(object sender, EventArgs e) { cmbLayer.Items.Clear(); for (int i = 0; i < globeControl1.Globe.Layers.Count; i++) { GSOLayer layer = globeControl1.Globe.Layers[i]; cmbLayer.Items.Add(layer.Caption); } string filename = Application.StartupPath + "\\config.xml"; if (File.Exists(filename)) { XmlTextReader XmlReader = new XmlTextReader(filename); try { while (XmlReader.Read()) { if (XmlReader.Name == "GongJing") { string str1 = XmlReader["label"]; string str3 = XmlReader["type"]; string str2 = XmlReader.ReadElementString(); en_cns.Add(str1, str2); fields_types.Add(str1, str3); } } } catch (Exception ex) { Log.PublishTxt(ex); MessageBox.Show(ex.Message); } } }
private FrmEditLayerAttributesByTable(GSOLayer layer, GSOFeatures selectFeatures, GSOGlobeControl globeControl) { InitializeComponent(); geoLayer = layer; m_features = selectFeatures; globeControl1 = globeControl; }
private void cmbLayer_SelectedIndexChanged(object sender, EventArgs e) { GSOLayer layer = ctl.Globe.Layers[cmbLayer.SelectedIndex]; GSOFeatures features = layer.GetAllFeatures(); if (features.Length == 0) { return; } cmbFrom.Items.Clear(); cmbTo.Items.Clear(); cmbRadius.Items.Clear(); cmbID.Items.Clear(); for (int i = 0; i < features[0].GetFieldCount(); i++) { cmbFrom.Items.Add(((GeoScene.Data.GSOFieldDefn)(features[0].GetFieldDefn(i))).Name); cmbTo.Items.Add(((GeoScene.Data.GSOFieldDefn)(features[0].GetFieldDefn(i))).Name); cmbRadius.Items.Add(((GeoScene.Data.GSOFieldDefn)(features[0].GetFieldDefn(i))).Name); cmbID.Items.Add(((GeoScene.Data.GSOFieldDefn)(features[0].GetFieldDefn(i))).Name); } cmbFrom.SelectedItem = "Deep1"; cmbTo.SelectedItem = "Deep2"; cmbRadius.SelectedItem = "Diameter"; cmbID.SelectedItem = "Handle"; }
private void btn_ImportCAD_Click(object sender, EventArgs e) { //打开CAD文件 OpenFileDialog dialog = new OpenFileDialog(); //定义CAD文件类型 string[] cadExtension = new string[] { ".dxf", ".dwg" }; dialog.Filter = "支持格式(*.dxf,*.dwg)|*.dxf;*.dwg"; if (dialog.ShowDialog() == DialogResult.OK) { //获取文件后缀名 string fileExt = Path.GetExtension(dialog.FileName); //判断是CAD文件并且文件夹下没有同名投影文件 if (cadExtension.Contains(fileExt) && !File.Exists(dialog.FileName.Replace(fileExt, ".prj"))) { MessageBox.Show(Path.GetFileName(dialog.FileName) + "文件不包含投影信息,请选择匹配的投影文件或者重新生成一个投影文件", "未知投影"); //添加投影文件窗口 FrmAddPrj frm = new FrmAddPrj(dialog.FileName); if (frm.ShowDialog() != DialogResult.OK) { return; } } //添加CAD文件图层 GSOLayer layer = _glbControl.Globe.Layers.Add(dialog.FileName); layer.Editable = true; FlyToLayer(layer); //添加完图层之后视角飞到图层上方 } }
//加载shp文件并显示管线 private void btn_LoadLayer_Click(object sender, EventArgs e) { if (_layerAdded) { return; } _shpLayer = _glbControl.Globe.Layers.Add(_testShpPath); _shpLayer.Editable = true; //设置样式 GSOPipeLineStyle3D style = new GSOPipeLineStyle3D(); style.LineColor = Color.Green; //管线半径 style.Radius = _radius; //获得默认图层的要素 var features = _shpLayer.GetAllFeatures(); //遍历要素 for (int i = 0; i < features.Length; i++) { GSOGeoPolyline3D geometry = features[i].Geometry as GSOGeoPolyline3D; geometry.Style = style; //将高度抬高到管径高度 geometry.MoveZ(style.Radius); //重要,要将高度模式设置成相对地表,如果为依附地面则无渲染效果 geometry.AltitudeMode = EnumAltitudeMode.RelativeToGround; } _glbControl.Refresh(); FlyToLayer(_shpLayer); }
private FrmShowFeatureAttributesByTable(DataTable importDt, GSOLayer layer, GSOGlobeControl globeControl) { InitializeComponent(); dt = importDt; geoLayer = layer; globeControl1 = globeControl; }
/// <summary> /// 鼠标移动的时候 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void GlobeControl1OnMouseMove(object sender, MouseEventArgs e) { //3D可视域分析 { if (bViewshed3DAnalysisCheck && bViewshed3DAnalysising) { //如果是第一次分析 if (curViewshed3DAnalysisOther == null) { GSOLayer resLayer = null; GSOPoint3d resIntersectPoint; globeControl1.Globe.HitTest(e.X, e.Y, out resLayer, out resIntersectPoint, false, true, 0); pntDistDirPoint = resIntersectPoint; curViewshed3DAnalysis.SetDistDirByPoint(resIntersectPoint); } //如果是其他分析 else { GSOLayer resLayer = null; GSOPoint3d resIntersectPoint; globeControl1.Globe.HitTest(e.X, e.Y, out resLayer, out resIntersectPoint, false, true, 0); pntDistDirPoint = resIntersectPoint; curViewshed3DAnalysisOther.SetDistDirByPoint(resIntersectPoint); } } } }
private void FrmBatchUpdateFieldValue_FormClosing(object sender, FormClosingEventArgs e) { globeControl1.Globe.Action = EnumAction3D.ActionNull; isSelectObject = false; layer = null; features = null; }
private void buttonMerge_Click(object sender, EventArgs e) { GSOLayer layerlgd = mGlobeControl.Globe.Layers.Add(textBoxLgdPath.Text.Trim()); GSOLayer layerkml = mGlobeControl.Globe.Layers.Add(textBoxKmlPath.Text.Trim()); GSOLayer newlayer = mGlobeControl.Globe.Layers.Add(textBoxSavePath.Text.Trim()); if (layerlgd.GetAllFeatures().Length > 0) { GSOFeatures features = layerlgd.GetAllFeatures(); for (int i = 0; i < features.Length; i++) { GSOFeature feature = features[i]; newlayer = AddFeatureAndFeatureFolder(feature, newlayer); } } if (layerkml.GetAllFeatures().Length > 0) { GSOFeatures features = layerkml.GetAllFeatures(); for (int i = 0; i < features.Length; i++) { GSOFeature feature = features[i]; newlayer = AddFeatureAndFeatureFolder(feature, newlayer); } } if (newlayer.GetAllFeatures().Length > 0) { newlayer.SaveAs(textBoxSavePath.Text.Trim()); MessageBox.Show("合并成功", "提示"); } else { MessageBox.Show("将要合并的图层不符合要求", "提示"); } this.Close(); }
private void cbox_Layers_SelectedIndexChanged(object sender, EventArgs e) { if (cbox_Layers.SelectedItem == null) { return; } GSOLayer m_layer = globeControl1.Globe.Layers.GetLayerByCaption(cbox_Layers.SelectedItem.ToString().Trim());//获取当前选择的layer图层 if (m_layer == null) { return; } listBox_Field.Items.Clear(); GSOFeatureLayer flayer = m_layer as GSOFeatureLayer; if (flayer == null) { return; } sourcefDataset = m_layer.Dataset as GSOFeatureDataset; if (sourcefDataset == null) { return; } sourcefDataset.Open(); for (int j = 0; j < sourcefDataset.FieldCount; j++) { GSOFieldAttr fieldef = sourcefDataset.GetField(j); listBox_Field.Items.Add(fieldef.Name); } //设置当前选择字段为第一个 listBox_Field.SelectedIndex = 0; //将描述信息修改 label3.Text = "SELECT * FROM " + m_layer.Caption + " WHERE:"; }
private void cmbLayer_SelectedIndexChanged(object sender, EventArgs e) { if (comboBoxShpLayerList.SelectedItem == null) { return; } GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(comboBoxShpLayerList.SelectedItem.ToString().Trim()); if (layer == null) { return; } textBoxNewLayerName.Text = layer.Caption; GSOFeatures features = layer.GetAllFeatures(); if (features.Length == 0) { return; } combCode.Items.Clear(); combDeep.Items.Clear(); combModelName.Items.Clear(); for (int i = 0; i < features[0].GetFieldCount(); i++) { GeoScene.Data.GSOFieldDefn fielddef = (GeoScene.Data.GSOFieldDefn)(features[0].GetFieldDefn(i)); combCode.Items.Add(fielddef.Name); combDeep.Items.Add(fielddef.Name); combModelName.Items.Add(fielddef.Name); } combCode.SelectedItem = "管线点编码"; combDeep.SelectedItem = "井深"; combModelName.SelectedItem = "编号"; }
public FrmAttriTable(GSOGlobeControl glbControl, GSOLayer layer) { InitializeComponent(); _glbControl = glbControl; _layer = layer; InitialTable(); }
public FrmAtrributeMapping1(GSOGlobeControl globeControl,GSOLayer layer,GSOFeature feature) { InitializeComponent(); m_globeControl = globeControl; m_feature = feature; m_layer = layer; }
//导弹动画 private void btn_Missile_Click(object sender, EventArgs e) { //创建相机状态 GSOCameraState camera = new GSOCameraState(); camera.Longitude = 100.42875293029; camera.Latitude = 38.9355930610869; camera.Distance = 12209.9485092387; camera.Heading = -92.7905229605158; camera.Tilt = 68.5957814133134; camera.Altitude = 1490.27994062379; camera.AltitudeMode = EnumAltitudeMode.Absolute; //添加.lgd图层 _glbControl.Globe.JumpToCameraState(camera); //添加.lgd图层 GSOLayer layer = _glbControl.Globe.Layers.Add(_missileAnimatePath); if (layer != null) { //添加.gla动画文件 GSOAnimationPage page = _glbControl.Globe.AnimationPages.AddAnimationPage(_missileAnimatePath.Replace(".lgd", ".gla")); if (page != null) { page.RepeatCount = 1; page.Play(); } } }
public FrmAtrributeMapping1(GSOGlobeControl globeControl, GSOLayer layer, GSOFeature feature) { InitializeComponent(); m_globeControl = globeControl; m_feature = feature; m_layer = layer; }
private void btnExportCAD_Click(object sender, EventArgs e) { globeControl1.Globe.MemoryLayer.RemoveAllFeature(); int id = GeoScene.Data.GSOProjectManager.AddProject("+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=555484.8092 +y_0=-4114948.631 +ellps=krass +units=m +no_defs"); for (int i = 0; i < listPoint.Count; i++) { GSOPoint3d geoPoint = (GSOPoint3d)listPoint[i]; GSOFeature feature = listFeat[i] as GSOFeature; if (feature != null) { if (feature.Geometry.Type == EnumGeometryType.GeoPolyline3D) { GSOPipeLineStyle3D style = feature.Geometry.Style as GSOPipeLineStyle3D; double r = style.Radius; //ExportCAD(double.Parse(sortIndex[i, 0].ToString()), geoPoint.Z, r); Export(geoPoint, r); } } } GSOLayer layer = globeControl1.Globe.MemoryLayer; layer.Dataset.ImportProjectionRefFromProj4("+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=555484.8092 +y_0=-4114948.631 +ellps=krass +units=m +no_defs"); SaveFileDialog dlg = new SaveFileDialog(); dlg.Filter = "*.dxf|*.dxf"; if (dlg.ShowDialog() == DialogResult.OK) { layer.SaveAs(dlg.FileName); globeControl1.Globe.MemoryLayer.RemoveAllFeature(); MessageBox.Show("导出CAD完成!", "提示"); } }
//删除 private void button3_Click(object sender, EventArgs e) { try { double min = double.Parse(textBox1.Text); double max = double.Parse(textBox2.Text); for (int i = 0; i < treeView1.Nodes.Count; i++) { if (treeView1.Nodes[i].Checked) { GSOLayer layer = treeView1.Nodes[i].Tag as GSOLayer; GSOFeatures fs = layer.GetAllFeatures(); for (int j = fs.Length - 1; j >= 0; j--) { GSOFeature f = fs[j]; double z = f.Geometry.GeoCenterPoint.Z; if (z >= min && z <= max) { layer.RemoveAt(j); } } } } } catch (Exception exp) { exp.GetType(); } }
private void button1_Click(object sender, EventArgs e)//确定 { if (listBox1.SelectedItems.Count > 0) { GSODataSource ds = Utility.getDataSourceByFullName(globeControl1, comboBoxDataSourceList.SelectedItem.ToString().Trim()); if (ds != null) { DateTime timeStart = DateTime.Now; for (int i = 0; i < listBox1.SelectedItems.Count; i++) { GSODataset dataset = ds.GetDatasetByName(listBox1.SelectedItems[i].ToString().Trim()); if (dataset != null) { dataset.Caption = dataset.Name; GSOLayer layer = globeControl1.Globe.Layers.Add(dataset); layer.MaxVisibleAltitude = 7000; } } TimeSpan timeConnect = DateTime.Now - timeStart; double secondsConnect = timeConnect.TotalSeconds; MessageBox.Show("打开" + listBox1.SelectedItems.Count.ToString() + "个图层, 用时" + secondsConnect.ToString() + "秒", "提示"); this.Close(); } } }
private GSOFeatureDataset CreateDBFeatureDataset(string name) { if (comboBoxShpLayerList.SelectedItem == null) { MessageBox.Show("请选择一个Shp图层!", "提示"); return(null); } GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(comboBoxShpLayerList.SelectedItem.ToString().Trim()); if (layer == null) { MessageBox.Show("Shp图层为空!", "提示"); return(null); } GSOFeatures features = layer.GetAllFeatures(); if (features.Length == 0) { MessageBox.Show("图层要素个数为0!", "提示"); return(null); } GSOFeatureDataset featureDataset = layer.Dataset as GSOFeatureDataset; if (featureDataset == null) { MessageBox.Show("Shp图层不是矢量图层!", "提示"); return(null); } if (comboBoxDataSourceList.SelectedItem == null) { MessageBox.Show("请选择一个目标数据源!", "提示"); return(null); } GSODataSource ds = Utility.getDataSourceByFullName(globeControl1, comboBoxDataSourceList.SelectedItem.ToString().Trim()); if (ds == null) { MessageBox.Show("选择的目标数据源为空!", "提示"); return(null); } GSOFeatureDataset newFeatureDataset = ds.CreateFeatureDataset(name); if (newFeatureDataset != null) { for (int i = 0; i < featureDataset.FieldCount; i++) { GeoScene.Data.GSOFieldAttr fielddef = featureDataset.GetField(i); GSOFieldAttr field = new GSOFieldAttr(); field.Name = fielddef.Name; field.Type = fielddef.Type; field.Width = fielddef.Width; field.Precision = fielddef.Precision; bool res = newFeatureDataset.AddField(field); } newFeatureDataset.Save(); } return(newFeatureDataset); }
public CtrlLineFieldsValuePage(GSOFeature feature, GSOLayer layer, GSOGlobeControl globeControl) { InitializeComponent(); mGlobeControl = globeControl; m_feature = feature; mlayer = layer; }
public CtrlLineFieldsValuePage(GSOFeature feature,GSOLayer layer, GSOGlobeControl globeControl) { InitializeComponent(); mGlobeControl = globeControl; m_feature = feature; mlayer = layer; }
public static FrmFeatureInfo GetForm(GSOFeature feature, GSOLayer layer, GSOGlobeControl globeControl) { if (featureInfo == null) { featureInfo = new FrmFeatureInfo(feature, layer, globeControl); } return(featureInfo); }
private void FrmLayerOperate_Load(object sender, EventArgs e) { _layer = _glbControl.Globe.Layers.Add(_testLayerPath); //设置图层为可编辑 _layer.Editable = true; FlyToLayer(_layer); _glbControl.Globe.Action = EnumAction3D.SelectObject; }
public static void removeLayer(GSOGlobeControl globeControl1, GSOLayer layer) { if (globeControl1 != null && layer != null) { layer.Dataset.DataSource.RemoveDataset(layer.Dataset); globeControl1.Globe.Layers.Remove(layer); } }
public static FrmFeatureInfo GetForm(GSOFeature feature, GSOLayer layer, GSOGlobeControl globeControl) { if (featureInfo == null) { featureInfo = new FrmFeatureInfo(feature, layer, globeControl); } return featureInfo; }
private void FrmPipelineModel_Load(object sender, EventArgs e) { cmbLayer.Items.Clear(); for (int i = 0; i < ctl.Globe.Layers.Count; i++) { GSOLayer layer = ctl.Globe.Layers[i]; cmbLayer.Items.Add(layer.Caption); } }
public CtrlPolylineSpaceInfo(GSOGeometry geometry,GSOFeature feature,GSOLayer layer,GSOGlobeControl globeControl) { InitializeComponent(); m_GlobeControl = globeControl; m_Geometry = geometry; mlayer = layer; mfeature = feature; }
private void FrmFlow_Load(object sender, EventArgs e) { cboxLayer.Items.Clear(); for (int i = 0; i < globeControl.Globe.Layers.Count; i++) { GSOLayer layer = globeControl.Globe.Layers[i]; cboxLayer.Items.Add(layer.Caption); } }
public CtrlPolylineSpaceInfo(GSOGeometry geometry, GSOFeature feature, GSOLayer layer, GSOGlobeControl globeControl) { InitializeComponent(); m_GlobeControl = globeControl; m_Geometry = geometry; mlayer = layer; mfeature = feature; }
/// <summary> /// 向LDB中新建图层数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_EditLayer_Click(object sender, EventArgs e) { //添加名为Test的图层数据 GSOFeatureDataset dataset = _ldbDataSource.CreateFeatureDataset("Test"); //将新建的图层数据添加到Globe控件中 GSOLayer featureLayer = _glbControl.Globe.Layers.Add(dataset); btn_EditFeature.Enabled = true; }
public FrmAddPipeFitting(GSOGlobeControl ctl, GSOPoint3d p,GSOLayer _layer) { InitializeComponent(); this.globeControl1 = ctl; this.point = p; layer = _layer; plane3DControl = new GSOPlane3DControl(); panel1.Controls.Add(plane3DControl); plane3DControl.Dock = DockStyle.Fill; }
public FrmAddPipeFitting(GSOGlobeControl ctl, GSOPoint3d p, GSOLayer _layer) { InitializeComponent(); this.globeControl1 = ctl; this.point = p; layer = _layer; plane3DControl = new GSOPlane3DControl(); panel1.Controls.Add(plane3DControl); plane3DControl.Dock = DockStyle.Fill; }
public CtrlDataGridView(GSOGlobeControl globeControl,GSOLayer layer1, DataTable dt) { InitializeComponent(); globeControl1 = globeControl; layer = layer1; mDataTable = dt; countLog = dt.Rows.Count; dataGridView1.DataSource = mDataTable; dataGridView1.ReadOnly = true; }
public static FrmShowFeatureAttributesByTable GetForm(DataTable importDt, GSOLayer layer, GSOGlobeControl globeControl) { if (tableAttribute == null) { tableAttribute = new FrmShowFeatureAttributesByTable(importDt, layer, globeControl); } else { dt = importDt; geoLayer = layer; globeControl1 = globeControl; } return tableAttribute; }
public FrmSetLineStyle(GSOStyle style,GSOFeature feature,GSOLayer layer, GSOGlobeControl globeControl) { InitializeComponent(); m_GlobeControl = globeControl; mlayer = layer; mfeature = feature; // 如果m_OldStyle不存在,先备份一个 if (style != null) { m_OldStyle = style.Clone(); } m_Style = style; }
public static FrmEditLayerAttributesByTable GetForm(GSOLayer layer, GSOFeatures selectFeatures, GSOGlobeControl globeControl) { if (tableAttribute == null) { tableAttribute = new FrmEditLayerAttributesByTable(layer, selectFeatures, globeControl); } else { geoLayer = layer; m_features = selectFeatures; globeControl1 = globeControl; } tableAttribute.isShow = true; return tableAttribute; }
public FrmFeatureInfo(GSOFeature feature, GSOLayer layer, GSOGlobeControl globeControl) { InitializeComponent(); if (layer != null) { mlayer = layer; } m_Feature = feature; // 先备份一个 if (feature != null) { m_OldFeture = feature.Clone(); } m_GlobeControl = globeControl; }
public CtrlPipelineStyleSetting(GSOStyle style, GSOFeature feature, GSOLayer layer, GSOGlobeControl globeControl) { InitializeComponent(); m_GlobeControl = globeControl; mlayer = layer; mfeature = feature; altituMode = feature.Geometry.AltitudeMode; // 如果m_OldStyle不存在,先备份一个 if (style != null) { m_OldStyle = style.Clone(); } m_Style = style; }
public CtrlLineStylePage(GSOGeometry geometry,GSOFeature feature,GSOLayer layer, GSOGlobeControl globeControl) { InitializeComponent(); m_GlobeControl = globeControl; m_Geometry = geometry; mlayer = layer; mfeature = feature; if (m_Geometry != null && m_Geometry.Style != null) { m_Style = (GSOLineStyle3D)m_Geometry.Style; m_OldStyle = (GSOLineStyle3D)m_Geometry.Style.Clone(); } }
GSOLayer AddFeatureAndFeatureFolder(GSOFeature feature,GSOLayer newlayer) { if (feature != null && newlayer != null) { if (feature.Type == EnumFeatureType.Feature) { newlayer.AddFeature(feature); } else { GSOFeatureFolder folder = (GSOFeatureFolder)feature; for (int i = 0; i < folder.Features.Length; i++) { newlayer = AddFeatureAndFeatureFolder(folder.Features[i], newlayer); } } } return newlayer; }
public FrmAddFieldToLayer(GSOLayer _layer, DataGridView _dataGridView1) { InitializeComponent(); layer = _layer; dataGridView1 = _dataGridView1; }
private void one2Multi(GSOGeoPolyline3D line, int num_width, int num_height, double interval, GSOPipeLineStyle3D style, GSOLayer layer,string name) { line = LatLon2Coord_Line(line); double width_all = interval * (num_width-1); double height_all = interval * (num_height-1); line.Clone(); GSOGeoPolyline3D line_1 = line.Clone() as GSOGeoPolyline3D; GSOPoint3d p1 = line[0][0]; GSOPoint3d p2 = line[0][1]; double daltaX = p2.X-p1.X; double daltaY = p2.Y-p1.Y; double agree = Math.Atan(daltaY/daltaX); line.MoveXY((-0.5*width_all-interval)*Math.Sin(agree),(0.5*width_all+interval)*Math.Cos(agree)); line.MoveZ(height_all / -2); for (int i = 0; i < num_width; i++) { for (int j = 0; j < num_height; j++) { GSOGeoPolyline3D templine = line.Clone() as GSOGeoPolyline3D; templine.MoveXY((i + 1) * interval * Math.Sin(agree), -1 * (i + 1) * interval * Math.Cos(agree)); templine = Coord2LatLon_Line(templine); templine.MoveZ(interval*j); GSOFeature feat = new GSOFeature(); feat.Geometry = templine; feat.Geometry.Style = style; feat.Name = name; layer.AddFeature(feat); } } }
private void cboxLayer_SelectedIndexChanged(object sender, EventArgs e) { layer = globeControl.Globe.Layers[cboxLayer.SelectedIndex]; }
private void comboBoxLayers_SelectedIndexChanged(object sender, EventArgs e) { string layerCaption = comboBoxLayers.Text; layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); if (layer.Dataset.IsFeatureDataset) { GSOFeatureDataset data = (GSOFeatureDataset)layer.Dataset; if (data.FieldCount <= 0) { return; } for (int i = 0; i < data.FieldCount; i++) { comboBoxUpdateFieldName.Items.Add(data.GetField(i).Name); //绑定图层中的字段 comboBoxConditionFieldName.Items.Add(data.GetField(i).Name); } } }
public FrmDeleteFieldFromLayer(GSOLayer _layer, DataGridView _dataGridView1) { InitializeComponent(); layer = _layer; dataGridView1 = _dataGridView1; }
GSOFeatures GetAllRealFeatures(GSOLayer layer) { if (layer == null) { return null; } GSOFeatures realfeatures = new GSOFeatures(); for (int i = 0; i < layer.GetAllFeatures().Length; i++) { GSOFeature feature = layer.GetAllFeatures()[i]; GetRealFeature(feature, realfeatures); } return realfeatures; }
private void valiYBdata(GSOLayer layer) { txtMessage.Text = ""; if (layer != null) { GSOFeatureDataset featDataSet = layer.Dataset as GSOFeatureDataset; List<string> lstField = new List<string>(); List<string> listFieldType_Text = new List<string>(); for (int i = 0; i < featDataSet.FieldCount; i++) { string fieldName = featDataSet.GetField(i).Name; lstField.Add(fieldName); if (yb_types.ContainsKey(fieldName)) { string fieldType = yb_types[fieldName].ToString().ToUpper(); switch (featDataSet.GetField(i).Type) { case EnumFieldType.Text: if (fieldType != "string".ToUpper()) { txtMessage.Text += "" + fieldName + "数据类型不正确\r\n"; } listFieldType_Text.Add(fieldName); break; case EnumFieldType.INT32: if (fieldType != "int".ToUpper() && fieldType != "double".ToUpper()) { txtMessage.Text += "" + fieldName + "数据类型不正确\r\n"; } break; case EnumFieldType.INT16: if (fieldType != "int".ToUpper() && fieldType != "double".ToUpper()) { txtMessage.Text += "" + fieldName + "数据类型不正确\r\n"; } break; case EnumFieldType.Double: if (fieldType != "double".ToUpper()) { txtMessage.Text += "" + fieldName + "数据类型不正确\r\n"; } break; case EnumFieldType.Date: if (fieldType != "date".ToUpper()) { txtMessage.Text += "" + fieldName + "数据类型不正确\r\n"; } break; } } else { txtMessage.Text += "警告:配置文件中不包含\"" + fieldName + "\"字段\r\n"; } } if (!lstField.Contains("编号")) { txtMessage.Text += "编号字段不存在!\r\n"; } if (!lstField.Contains("管线点编码")) { txtMessage.Text += "管线点编码字段不存在!\r\n"; } if (!lstField.Contains("井深")) { txtMessage.Text += "井深字段不存在!\r\n"; } else { GSOFieldAttr fieldZ = featDataSet.GetField("井深"); if (fieldZ.Type != EnumFieldType.Double && fieldZ.Type != EnumFieldType.Float && fieldZ.Type != EnumFieldType.INT16 && fieldZ.Type != EnumFieldType.INT32) { txtMessage.Text += "\"井深\"字段必须为数值类型 \r\n"; } } if (!lstField.Contains("旋转角度")) { txtMessage.Text += "旋转角度字段不存在!\r\n"; } else { GSOFieldAttr fieldZ = featDataSet.GetField("旋转角度"); if (fieldZ.Type != EnumFieldType.Double && fieldZ.Type != EnumFieldType.Float && fieldZ.Type != EnumFieldType.INT16 && fieldZ.Type != EnumFieldType.INT32) { txtMessage.Text += "\"旋转角度\"字段必须为数值类型 \r\n"; } } for (int i = 0; i < layer.GetAllFeatures().Length; i++) { GSOFeature f = layer.GetAt(i); for (int j = 0; j < listFieldType_Text.Count; j++) { string fieldName = listFieldType_Text[j]; if (yb_types.ContainsKey(fieldName)) { if (f.GetValue(fieldName).ToString().Trim().Length > 8000) { txtMessage.Text += "名称为" + f.Name + "的要素的字段" + fieldName + "的长度大于8000 !\r\n"; } } } } } }
private void valiPipedata(GSOLayer layer) { txtMessage.Text = ""; if (layer != null) { GSOFeatureDataset featDataSet = layer.Dataset as GSOFeatureDataset; List<string> lstField = new List<string>(); List<string> listFieldType_Text = new List<string>(); for (int i = 0; i < featDataSet.FieldCount; i++) { string fieldName = featDataSet.GetField(i).Name; lstField.Add(fieldName); if (fields_types.ContainsKey(fieldName)) { string fieldType = fields_types[fieldName].ToString().ToUpper(); switch (featDataSet.GetField(i).Type) { case EnumFieldType.Text: if (fieldType != "string".ToUpper()) { txtMessage.Text += "" + fieldName + "数据类型不正确\r\n"; } listFieldType_Text.Add(fieldName); break; case EnumFieldType.INT32: if (fieldType != "int".ToUpper() && fieldType != "double".ToUpper()) { txtMessage.Text += "" + fieldName + "数据类型不正确\r\n"; } break; case EnumFieldType.INT16: if (fieldType != "int".ToUpper() && fieldType != "double".ToUpper()) { txtMessage.Text += "" + fieldName + "数据类型不正确\r\n"; } break; case EnumFieldType.Double: if (fieldType != "double".ToUpper()) { txtMessage.Text += "" + fieldName + "数据类型不正确\r\n"; } break; case EnumFieldType.Date: if (fieldType != "date".ToUpper()) { txtMessage.Text += "" + fieldName + "数据类型不正确\r\n"; } break; } } else { txtMessage.Text += "警告:配置文件中不包含\"" + fieldName + "\"字段\r\n"; } } if (!lstField.Contains("Deep1")) { txtMessage.Text += "Deep1字段不存在!\r\n"; } else { GSOFieldAttr fieldDeep1 = featDataSet.GetField("Deep1"); if (fieldDeep1.Type != EnumFieldType.Double && fieldDeep1.Type != EnumFieldType.Float && fieldDeep1.Type != EnumFieldType.INT16 && fieldDeep1.Type != EnumFieldType.INT32) { txtMessage.Text += "Deep1字段必须为数值类型\r\n"; } } if (!lstField.Contains("Deep2")) { txtMessage.Text += "Deep2字段不存在!\r\n"; } else { GSOFieldAttr fieldDeep1 = featDataSet.GetField("Deep2"); if (fieldDeep1.Type != EnumFieldType.Double && fieldDeep1.Type != EnumFieldType.Float && fieldDeep1.Type != EnumFieldType.INT16 && fieldDeep1.Type != EnumFieldType.INT32) { txtMessage.Text += "Deep2字段必须为数值类型\r\n"; } } if (!lstField.Contains("Diameter")) { txtMessage.Text += "Diameter字段不存在!\r\n"; } else { GSOFieldAttr fieldDeep1 = featDataSet.GetField("Diameter"); if (fieldDeep1.Type != EnumFieldType.Double && fieldDeep1.Type != EnumFieldType.Float && fieldDeep1.Type != EnumFieldType.INT16 && fieldDeep1.Type != EnumFieldType.INT32) { txtMessage.Text += "Diameter字段必须为数值类型\r\n"; } } if (!lstField.Contains("Handle")) { txtMessage.Text += "Handle字段不存在!\r\n"; } List<string> lstHandle = new List<string>(); for (int i = 0; i < layer.GetAllFeatures().Length; i++) { GSOFeature f = layer.GetAt(i); for (int j = 0; j < listFieldType_Text.Count; j++) { string fieldName = listFieldType_Text[j]; if (fields_types.ContainsKey(fieldName)) { if (f.GetValue(fieldName).ToString().Trim().Length > 8000) { txtMessage.Text += "ID为" + f.ID + "的要素的字段" + fieldName + "的长度大于8000 !\r\n"; } } } if (f.GetFieldAsFloat("Diameter") <= 0) { txtMessage.Text += "ID为" + f.ID + "\"Diameter\"字段中的值必须大于0 \r\n"; } if (!lstHandle.Contains(f.GetFieldAsString("Handle"))) { lstHandle.Add(f.GetFieldAsString("Handle")); } else { txtMessage.Text += "ID为" + f.ID + "的\"Handle\"字段中的值重复\r\n"; } } } }
public FrmPolygonToWater(GSOGlobeControl globeControl,GSOLayer layer) { mGlobeControl = globeControl; mLayer = layer; InitializeComponent(); }
public FrmUpdateLayoutColor(GSOGlobeControl globeControl,GSOLayer layer) { InitializeComponent(); mGlobeControl = globeControl; mlayer = layer; }
private void btnEnter_Click(object sender, EventArgs e) { int n = 0; layer = globeControl1.Globe.Layers.GetLayerByCaption(cmbPipeShow.Text.Trim()); GSOFeatureLayer flayer = layer as GSOFeatureLayer; if(flayer == null) { return ; } GSOFeatureDataset fdataset = flayer.Dataset as GSOFeatureDataset; if (fdataset == null || fdataset.DataSource == null) { return; } connectParams = Utility.getConnectParamsByDatasourceName(globeControl1, fdataset.DataSource.Name); if (connectParams == null) { return; } GSOFeatures feats = flayer.GetAllFeatures(); string type = layer.Caption.Substring(0, 2); string sql = "select * " + " from " + layer.Caption + " where"; for (int i = 0; i < feats.Length; i++) { GSOFeature f = feats[i]; if (f.Geometry.Type == EnumGeometryType.GeoPolyline3D) { GSOGeoPolyline3D line = f.Geometry as GSOGeoPolyline3D; GSOPipeLineStyle3D style = line.Style as GSOPipeLineStyle3D; if (style != null) { GSOPoint3ds pnts = getAllPointInPipeline(line); for (int j = 0; j < pnts.Count; j++) { GSOPoint3d pt = pnts[j]; if (Math.Abs(pt.Z) < style.Radius) { n++; sql += " 编号='" + f.Name + "' or "; break; } } } } } if (n > 0) { sql = sql.Substring(0, sql.Length - 3); DataTable dt = new DataTable(); dt = OledbHelper.QueryTable(sql, connectParams); if (dt == null) { MessageBox.Show("没有地上管线!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { if (dt.Columns.Count > 3) { dt.Columns.RemoveAt(0); dt.Columns.RemoveAt(0); dt.Columns.RemoveAt(0); } dataGridView1.ReadOnly = !layer.Editable; dataGridView1.DataSource = dt; if (statusStrip1.Items.Count > 0) { statusStrip1.Items[0].Text = " 共有 " + dt.Rows.Count + " 条记录"; } globeControl1.Globe.Refresh(); } } else { MessageBox.Show("没有地上管线!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); dataGridView1.DataSource = null; if (statusStrip1.Items.Count > 0) { statusStrip1.Items[0].Text = " 共有 " + 0 + " 条记录"; } } }
private void AddKmlLayer(GSOLayer layer) { if (layer != null) { TreeNode node = new TreeNode(); node.Tag = layer; node.Text = layer.Caption; node.ImageIndex = 0; node.SelectedImageIndex = 0; node.Checked = layer.Visible; layerManagerNode.Nodes.Insert(0, node); VisitFeature3Ds(layer.GetAllFeatures(), node); } }
public FrmEditLayerAttributes(GSOLayer layer, GSOGlobeControl globeControl) { InitializeComponent(); geoLayer = layer; m_globeControl = globeControl; }