using System; using System.Drawing; using System.IO; using System.Windows.Forms; using DevComponents.DotNetBar; using GeoScene.Data; using GeoScene.Engine; using GeoScene.Globe; namespace Cyberpipe { public partial class FrmGHRK : Office2007Form { GSOGlobeControl globeControl1; string filePath = ""; TreeNode layerManagerNode; public FrmGHRK(GSOGlobeControl _globeControl1,TreeNode _layerManagerNode) { globeControl1 = _globeControl1; layerManagerNode=_layerManagerNode; InitializeComponent(); } /// <summary> /// 窗体LOAD事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void FrmGHRK_Load(object sender, EventArgs e) { string pipelinetype = Utility.pipelinetype; string[] pipelinetypes = pipelinetype.Split(','); for (int i = 0; i < pipelinetypes.Length; i++) { pipelineTypeCbo.Items.Add(pipelinetypes[i]); } pipelineTypeCbo.Items.Add("燃气"); pipelineTypeCbo.Items.Add("热力"); pipelineTypeCbo.Items.Add("共同沟"); } /// <summary> /// 打开矢量数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonXLayerPath_Click(object sender, EventArgs e) { OpenFileDialog fdl = new OpenFileDialog(); fdl.Filter = "矢量数据(*.shp)|*.shp"; fdl.FileName="导入规划数据"; fdl.Multiselect = false; if (fdl.ShowDialog() == DialogResult.OK) { textBoxLayer.Text = fdl.FileName; filePath = fdl.FileName; textBoxLayerName.Text = Path.GetFileNameWithoutExtension(fdl.FileName); } } private void btnPipelineColor_Click(object sender, EventArgs e) { colorDialog1.Color = btnPipelineColor.BackColor; if (colorDialog1.ShowDialog() == DialogResult.OK) { btnPipelineColor.BackColor = colorDialog1.Color; } } private void pipelineTypeCbo_SelectedIndexChanged(object sender, EventArgs e) { if (pipelineTypeCbo.Text == "给水") { btnPipelineColor.BackColor = Color.FromArgb(0, 0, 255); } else if (pipelineTypeCbo.Text == "供电") { btnPipelineColor.BackColor = Color.FromArgb(255, 100, 150); } else if (pipelineTypeCbo.Text == "雨水") { btnPipelineColor.BackColor = Color.FromArgb(230, 120, 0); } else if (pipelineTypeCbo.Text == "污水") { btnPipelineColor.BackColor = Color.FromArgb(128, 64, 0); } else if (pipelineTypeCbo.Text == "天然气") { btnPipelineColor.BackColor = Color.FromArgb(215, 0, 64); } else if (pipelineTypeCbo.Text == "共通") { btnPipelineColor.BackColor = Color.FromArgb(0, 255, 0); } else if (pipelineTypeCbo.Text == "电通") { btnPipelineColor.BackColor = Color.FromArgb(0, 255, 0); } else if (pipelineTypeCbo.Text == "有线电视") { btnPipelineColor.BackColor = Color.FromArgb(0, 255, 0); } else if (pipelineTypeCbo.Text == "监控") { btnPipelineColor.BackColor = Color.FromArgb(0, 255, 0); } else if (pipelineTypeCbo.Text == "交通信号") { btnPipelineColor.BackColor = Color.FromArgb(0, 255, 0); } else if (pipelineTypeCbo.Text == "路灯") { btnPipelineColor.BackColor = Color.FromArgb(255, 0, 150); } else if (pipelineTypeCbo.Text == "通讯") { btnPipelineColor.BackColor = Color.FromArgb(0, 255, 0); } else if (pipelineTypeCbo.Text == "热力") { btnPipelineColor.BackColor = Color.FromArgb(255, 0, 0); } else if (pipelineTypeCbo.Text == "燃气") { btnPipelineColor.BackColor = Color.FromArgb(200, 0, 100); } else if (pipelineTypeCbo.Text == "共同沟") { btnPipelineColor.BackColor = Color.FromArgb(0, 0, 255); } else { btnPipelineColor.BackColor = Color.FromArgb(0, 0, 0); } } private void btnClose_Click(object sender, EventArgs e) { Close(); } private void btnOK_Click(object sender, EventArgs e) { GSODataSource dataSpace = globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.ghdbip.Trim() + "/" + Utility.ghdbname.Trim(), "", "", Utility.ghdbuser, Utility.ghdbpwd); if (textBoxLayer.Text == "") { MessageBox.Show("请选择要导入的矢量数据", "提示"); } else { if (pipelineTypeCbo.Text == "") { MessageBox.Show("请选择管线类型", "提示"); } else { if (textBoxLayerName.Text == "") { MessageBox.Show("请输入管线名称!", "提示"); } else { #region 地球中显示 GSOLayer layer = globeControl1.Globe.Layers.Add(filePath); GSOFeatures features = layer.GetAllFeatures(); if (layer != null) { GSODataset dataset = layer.Dataset; if (dataset.GeoReferenceType == EnumGeoReferenceType.Flat) { MessageBox.Show("没有空间参考信息!", "提示"); return; } } TreeUtils.AddNodeToManagerNode(layerManagerNode, layer); for (int j = 0; j < layer.GetAllFeatures().Length; j++) { GSOFeature f = layer.GetAt(j); if (f != null) f.Geometry.AltitudeMode = EnumAltitudeMode.RelativeToGround; } GSOSimpleLineStyle3D linestyle = new GSOSimpleLineStyle3D(); linestyle.LineColor = Color.FromArgb(255, btnPipelineColor.BackColor); linestyle.LineWidth = 5; layer.Style = linestyle; GSORect2d rd = layer.LatLonBounds; GSOPoint2d rdcenter = rd.Center; globeControl1.Globe.JumpToPosition(new GSOPoint3d(rdcenter.X, rdcenter.Y, 0), EnumAltitudeMode.Absolute, 500); globeControl1.Globe.Layers.MoveTo(0, globeControl1.Globe.Layers.Count - 1); globeControl1.Refresh(); #endregion //插入数据库 //CreateLine.batchInsert(dataSpace, textBoxLayerName.Text, features, btnPipelineColor.BackColor); IModelBuilder modelBuilder = new RedLineBuilder(); modelBuilder.batchInsert(dataSpace, textBoxLayerName.Text, features, btnPipelineColor.BackColor); } } } } } }