diff --git a/Cyberpipe.suo b/Cyberpipe.suo index e88befb..44957ec 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/Cyberpipe.suo b/Cyberpipe.suo index e88befb..44957ec 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs index 53946c0..fe32265 100644 --- a/FeatureStatisticsService.cs +++ b/FeatureStatisticsService.cs @@ -4,7 +4,7 @@ using GeoScene.Globe; namespace Cyberpipe -{ +{ //本类作用为:辅助GlobalControl上Feature的统计分析工具类 class FeatureStatisticsService { /// @@ -60,8 +60,8 @@ /// /// /// - /// - /// + /// + /// /// /// public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName) @@ -74,6 +74,7 @@ for (int i = 0; i < features.Length; i++) { GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D; + if (line == null) continue; double length = line.GetSpaceLength(true, 6378137); totalLength += length; ncount += 1; @@ -114,7 +115,7 @@ for (int i = 0; i < feats.Length; i++) { double radius = feats[i].GetFieldAsDouble(fieldName); - if (radius >= min && radius <= max) + if (radius >= minValue && radius <= maxValue) { result.Add(feats[i]); } @@ -148,23 +149,22 @@ lstDiameter.Sort(); if (lstDiameter.Count > 0) { - for (int m = 0; m < lstDiameter.Count; m++) + foreach (float diameter in lstDiameter) { double totalLength = 0.00; int ncount = 0; for (int j = 0; j < feats.Length; j++) { - if (feats[j].GetFieldAsFloat("管径_毫米") == lstDiameter[m]) - { - GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; - double length = line.GetSpaceLength(true, 6378137); - totalLength += length; - ncount += 1; - } + if (Math.Abs(feats[j].GetFieldAsFloat("管径_毫米") - diameter) > 0.00001) continue; + GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; + if (line == null) continue; + double length = line.GetSpaceLength(true, 6378137); + totalLength += length; + ncount += 1; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); featuresClass.layerName = layer.Caption; - featuresClass.groupFieldValue = lstDiameter[m].ToString(); + featuresClass.groupFieldValue = diameter.ToString(); featuresClass.ncount = ncount; featuresClass.sum = Math.Round(totalLength, 2); @@ -191,13 +191,13 @@ //layer.Name是表名 string[] accessStrs = Utility.getAccStrsByLayer(layer.Name); - for (int j = 0; j < accessStrs.Length; j++) + foreach (string accssname in accessStrs) { - GSOFeatures feats = null; - int ncount = 0; + GSOFeatures feats; + int ncount; if (polygon == null) { - feats = flayer.GetFeatureByFieldValue("附属物名称", accessStrs[j], true); + feats = flayer.GetFeatureByFieldValue("附属物名称", accssname, true); ncount = feats.Length; } else @@ -207,14 +207,14 @@ //过滤 for (int n = 0; n < feats.Length; n++) { - if (feats[n].GetFieldAsString("附属物名称").Contains(accessStrs[j])) newfeats.Add(feats[n]); + if (feats[n].GetFieldAsString("附属物名称").Contains(accssname)) newfeats.Add(feats[n]); } ncount = newfeats.Length; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); - featuresClass.layerName = accessStrs[j]; + featuresClass.layerName = accssname; featuresClass.ncount = ncount; result.Add(featuresClass); @@ -303,6 +303,26 @@ if (layer == null) return null; GSOFeatureLayer flayer = layer as GSOFeatureLayer; return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false); - } + } + + + /// + /// 获取globeControl上选中的管线,如果返回空则没有选中的管线 + /// + /// 地球引擎 + /// 返回一根线 + public static GSOFeature GetSelectedPipeline(GSOGlobeControl globeControl) + { + GSOFeature resFeature; + if (globeControl.Globe.SelObjectCount < 1) return null; + GSOLayer resLayer; + globeControl.Globe.GetSelectObject(0, out resFeature, out resLayer); + if (resFeature == null) return null; + + GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; + if (line1 == null) return null; + GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; + return pipeStyle1 == null ? null : resFeature; + } } } diff --git a/Cyberpipe.suo b/Cyberpipe.suo index e88befb..44957ec 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs index 53946c0..fe32265 100644 --- a/FeatureStatisticsService.cs +++ b/FeatureStatisticsService.cs @@ -4,7 +4,7 @@ using GeoScene.Globe; namespace Cyberpipe -{ +{ //本类作用为:辅助GlobalControl上Feature的统计分析工具类 class FeatureStatisticsService { /// @@ -60,8 +60,8 @@ /// /// /// - /// - /// + /// + /// /// /// public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName) @@ -74,6 +74,7 @@ for (int i = 0; i < features.Length; i++) { GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D; + if (line == null) continue; double length = line.GetSpaceLength(true, 6378137); totalLength += length; ncount += 1; @@ -114,7 +115,7 @@ for (int i = 0; i < feats.Length; i++) { double radius = feats[i].GetFieldAsDouble(fieldName); - if (radius >= min && radius <= max) + if (radius >= minValue && radius <= maxValue) { result.Add(feats[i]); } @@ -148,23 +149,22 @@ lstDiameter.Sort(); if (lstDiameter.Count > 0) { - for (int m = 0; m < lstDiameter.Count; m++) + foreach (float diameter in lstDiameter) { double totalLength = 0.00; int ncount = 0; for (int j = 0; j < feats.Length; j++) { - if (feats[j].GetFieldAsFloat("管径_毫米") == lstDiameter[m]) - { - GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; - double length = line.GetSpaceLength(true, 6378137); - totalLength += length; - ncount += 1; - } + if (Math.Abs(feats[j].GetFieldAsFloat("管径_毫米") - diameter) > 0.00001) continue; + GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; + if (line == null) continue; + double length = line.GetSpaceLength(true, 6378137); + totalLength += length; + ncount += 1; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); featuresClass.layerName = layer.Caption; - featuresClass.groupFieldValue = lstDiameter[m].ToString(); + featuresClass.groupFieldValue = diameter.ToString(); featuresClass.ncount = ncount; featuresClass.sum = Math.Round(totalLength, 2); @@ -191,13 +191,13 @@ //layer.Name是表名 string[] accessStrs = Utility.getAccStrsByLayer(layer.Name); - for (int j = 0; j < accessStrs.Length; j++) + foreach (string accssname in accessStrs) { - GSOFeatures feats = null; - int ncount = 0; + GSOFeatures feats; + int ncount; if (polygon == null) { - feats = flayer.GetFeatureByFieldValue("附属物名称", accessStrs[j], true); + feats = flayer.GetFeatureByFieldValue("附属物名称", accssname, true); ncount = feats.Length; } else @@ -207,14 +207,14 @@ //过滤 for (int n = 0; n < feats.Length; n++) { - if (feats[n].GetFieldAsString("附属物名称").Contains(accessStrs[j])) newfeats.Add(feats[n]); + if (feats[n].GetFieldAsString("附属物名称").Contains(accssname)) newfeats.Add(feats[n]); } ncount = newfeats.Length; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); - featuresClass.layerName = accessStrs[j]; + featuresClass.layerName = accssname; featuresClass.ncount = ncount; result.Add(featuresClass); @@ -303,6 +303,26 @@ if (layer == null) return null; GSOFeatureLayer flayer = layer as GSOFeatureLayer; return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false); - } + } + + + /// + /// 获取globeControl上选中的管线,如果返回空则没有选中的管线 + /// + /// 地球引擎 + /// 返回一根线 + public static GSOFeature GetSelectedPipeline(GSOGlobeControl globeControl) + { + GSOFeature resFeature; + if (globeControl.Globe.SelObjectCount < 1) return null; + GSOLayer resLayer; + globeControl.Globe.GetSelectObject(0, out resFeature, out resLayer); + if (resFeature == null) return null; + + GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; + if (line1 == null) return null; + GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; + return pipeStyle1 == null ? null : resFeature; + } } } diff --git a/FrmHotFuncStat.cs b/FrmHotFuncStat.cs index 84131ef..f313b20 100644 --- a/FrmHotFuncStat.cs +++ b/FrmHotFuncStat.cs @@ -58,14 +58,11 @@ DataTable table = OledbHelper.QueryTable(sql); - if (table != null) + if (table == null) return; + for (int i = 0; i < table.Rows.Count; i++) { - for (int i = 0; i < table.Rows.Count; i++) - { - userLists.Items.Add(table.Rows[i][0].ToString()); - } + userLists.Items.Add(table.Rows[i][0].ToString()); } - } //统计结果 private void statBtn_Click(object sender, EventArgs e) diff --git a/Cyberpipe.suo b/Cyberpipe.suo index e88befb..44957ec 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs index 53946c0..fe32265 100644 --- a/FeatureStatisticsService.cs +++ b/FeatureStatisticsService.cs @@ -4,7 +4,7 @@ using GeoScene.Globe; namespace Cyberpipe -{ +{ //本类作用为:辅助GlobalControl上Feature的统计分析工具类 class FeatureStatisticsService { /// @@ -60,8 +60,8 @@ /// /// /// - /// - /// + /// + /// /// /// public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName) @@ -74,6 +74,7 @@ for (int i = 0; i < features.Length; i++) { GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D; + if (line == null) continue; double length = line.GetSpaceLength(true, 6378137); totalLength += length; ncount += 1; @@ -114,7 +115,7 @@ for (int i = 0; i < feats.Length; i++) { double radius = feats[i].GetFieldAsDouble(fieldName); - if (radius >= min && radius <= max) + if (radius >= minValue && radius <= maxValue) { result.Add(feats[i]); } @@ -148,23 +149,22 @@ lstDiameter.Sort(); if (lstDiameter.Count > 0) { - for (int m = 0; m < lstDiameter.Count; m++) + foreach (float diameter in lstDiameter) { double totalLength = 0.00; int ncount = 0; for (int j = 0; j < feats.Length; j++) { - if (feats[j].GetFieldAsFloat("管径_毫米") == lstDiameter[m]) - { - GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; - double length = line.GetSpaceLength(true, 6378137); - totalLength += length; - ncount += 1; - } + if (Math.Abs(feats[j].GetFieldAsFloat("管径_毫米") - diameter) > 0.00001) continue; + GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; + if (line == null) continue; + double length = line.GetSpaceLength(true, 6378137); + totalLength += length; + ncount += 1; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); featuresClass.layerName = layer.Caption; - featuresClass.groupFieldValue = lstDiameter[m].ToString(); + featuresClass.groupFieldValue = diameter.ToString(); featuresClass.ncount = ncount; featuresClass.sum = Math.Round(totalLength, 2); @@ -191,13 +191,13 @@ //layer.Name是表名 string[] accessStrs = Utility.getAccStrsByLayer(layer.Name); - for (int j = 0; j < accessStrs.Length; j++) + foreach (string accssname in accessStrs) { - GSOFeatures feats = null; - int ncount = 0; + GSOFeatures feats; + int ncount; if (polygon == null) { - feats = flayer.GetFeatureByFieldValue("附属物名称", accessStrs[j], true); + feats = flayer.GetFeatureByFieldValue("附属物名称", accssname, true); ncount = feats.Length; } else @@ -207,14 +207,14 @@ //过滤 for (int n = 0; n < feats.Length; n++) { - if (feats[n].GetFieldAsString("附属物名称").Contains(accessStrs[j])) newfeats.Add(feats[n]); + if (feats[n].GetFieldAsString("附属物名称").Contains(accssname)) newfeats.Add(feats[n]); } ncount = newfeats.Length; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); - featuresClass.layerName = accessStrs[j]; + featuresClass.layerName = accssname; featuresClass.ncount = ncount; result.Add(featuresClass); @@ -303,6 +303,26 @@ if (layer == null) return null; GSOFeatureLayer flayer = layer as GSOFeatureLayer; return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false); - } + } + + + /// + /// 获取globeControl上选中的管线,如果返回空则没有选中的管线 + /// + /// 地球引擎 + /// 返回一根线 + public static GSOFeature GetSelectedPipeline(GSOGlobeControl globeControl) + { + GSOFeature resFeature; + if (globeControl.Globe.SelObjectCount < 1) return null; + GSOLayer resLayer; + globeControl.Globe.GetSelectObject(0, out resFeature, out resLayer); + if (resFeature == null) return null; + + GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; + if (line1 == null) return null; + GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; + return pipeStyle1 == null ? null : resFeature; + } } } diff --git a/FrmHotFuncStat.cs b/FrmHotFuncStat.cs index 84131ef..f313b20 100644 --- a/FrmHotFuncStat.cs +++ b/FrmHotFuncStat.cs @@ -58,14 +58,11 @@ DataTable table = OledbHelper.QueryTable(sql); - if (table != null) + if (table == null) return; + for (int i = 0; i < table.Rows.Count; i++) { - for (int i = 0; i < table.Rows.Count; i++) - { - userLists.Items.Add(table.Rows[i][0].ToString()); - } + userLists.Items.Add(table.Rows[i][0].ToString()); } - } //统计结果 private void statBtn_Click(object sender, EventArgs e) diff --git a/FrmLayerControl.cs b/FrmLayerControl.cs index 6ebb807..8fbce97 100644 --- a/FrmLayerControl.cs +++ b/FrmLayerControl.cs @@ -103,8 +103,8 @@ { layerTree1.Nodes.Clear(); layerTree2.Nodes.Clear(); - TreeUtils.InitTree(globeControl1, layerTree1, "实测数据"); - TreeUtils.InitTree(globeControl2, layerTree2, "施工数据"); + TreeUtils.InitLayerTree(globeControl1, layerTree1, "实测数据"); + TreeUtils.InitLayerTree(globeControl2, layerTree2, "施工数据"); } #region wxl重构树形结构代码 diff --git a/Cyberpipe.suo b/Cyberpipe.suo index e88befb..44957ec 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs index 53946c0..fe32265 100644 --- a/FeatureStatisticsService.cs +++ b/FeatureStatisticsService.cs @@ -4,7 +4,7 @@ using GeoScene.Globe; namespace Cyberpipe -{ +{ //本类作用为:辅助GlobalControl上Feature的统计分析工具类 class FeatureStatisticsService { /// @@ -60,8 +60,8 @@ /// /// /// - /// - /// + /// + /// /// /// public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName) @@ -74,6 +74,7 @@ for (int i = 0; i < features.Length; i++) { GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D; + if (line == null) continue; double length = line.GetSpaceLength(true, 6378137); totalLength += length; ncount += 1; @@ -114,7 +115,7 @@ for (int i = 0; i < feats.Length; i++) { double radius = feats[i].GetFieldAsDouble(fieldName); - if (radius >= min && radius <= max) + if (radius >= minValue && radius <= maxValue) { result.Add(feats[i]); } @@ -148,23 +149,22 @@ lstDiameter.Sort(); if (lstDiameter.Count > 0) { - for (int m = 0; m < lstDiameter.Count; m++) + foreach (float diameter in lstDiameter) { double totalLength = 0.00; int ncount = 0; for (int j = 0; j < feats.Length; j++) { - if (feats[j].GetFieldAsFloat("管径_毫米") == lstDiameter[m]) - { - GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; - double length = line.GetSpaceLength(true, 6378137); - totalLength += length; - ncount += 1; - } + if (Math.Abs(feats[j].GetFieldAsFloat("管径_毫米") - diameter) > 0.00001) continue; + GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; + if (line == null) continue; + double length = line.GetSpaceLength(true, 6378137); + totalLength += length; + ncount += 1; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); featuresClass.layerName = layer.Caption; - featuresClass.groupFieldValue = lstDiameter[m].ToString(); + featuresClass.groupFieldValue = diameter.ToString(); featuresClass.ncount = ncount; featuresClass.sum = Math.Round(totalLength, 2); @@ -191,13 +191,13 @@ //layer.Name是表名 string[] accessStrs = Utility.getAccStrsByLayer(layer.Name); - for (int j = 0; j < accessStrs.Length; j++) + foreach (string accssname in accessStrs) { - GSOFeatures feats = null; - int ncount = 0; + GSOFeatures feats; + int ncount; if (polygon == null) { - feats = flayer.GetFeatureByFieldValue("附属物名称", accessStrs[j], true); + feats = flayer.GetFeatureByFieldValue("附属物名称", accssname, true); ncount = feats.Length; } else @@ -207,14 +207,14 @@ //过滤 for (int n = 0; n < feats.Length; n++) { - if (feats[n].GetFieldAsString("附属物名称").Contains(accessStrs[j])) newfeats.Add(feats[n]); + if (feats[n].GetFieldAsString("附属物名称").Contains(accssname)) newfeats.Add(feats[n]); } ncount = newfeats.Length; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); - featuresClass.layerName = accessStrs[j]; + featuresClass.layerName = accssname; featuresClass.ncount = ncount; result.Add(featuresClass); @@ -303,6 +303,26 @@ if (layer == null) return null; GSOFeatureLayer flayer = layer as GSOFeatureLayer; return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false); - } + } + + + /// + /// 获取globeControl上选中的管线,如果返回空则没有选中的管线 + /// + /// 地球引擎 + /// 返回一根线 + public static GSOFeature GetSelectedPipeline(GSOGlobeControl globeControl) + { + GSOFeature resFeature; + if (globeControl.Globe.SelObjectCount < 1) return null; + GSOLayer resLayer; + globeControl.Globe.GetSelectObject(0, out resFeature, out resLayer); + if (resFeature == null) return null; + + GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; + if (line1 == null) return null; + GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; + return pipeStyle1 == null ? null : resFeature; + } } } diff --git a/FrmHotFuncStat.cs b/FrmHotFuncStat.cs index 84131ef..f313b20 100644 --- a/FrmHotFuncStat.cs +++ b/FrmHotFuncStat.cs @@ -58,14 +58,11 @@ DataTable table = OledbHelper.QueryTable(sql); - if (table != null) + if (table == null) return; + for (int i = 0; i < table.Rows.Count; i++) { - for (int i = 0; i < table.Rows.Count; i++) - { - userLists.Items.Add(table.Rows[i][0].ToString()); - } + userLists.Items.Add(table.Rows[i][0].ToString()); } - } //统计结果 private void statBtn_Click(object sender, EventArgs e) diff --git a/FrmLayerControl.cs b/FrmLayerControl.cs index 6ebb807..8fbce97 100644 --- a/FrmLayerControl.cs +++ b/FrmLayerControl.cs @@ -103,8 +103,8 @@ { layerTree1.Nodes.Clear(); layerTree2.Nodes.Clear(); - TreeUtils.InitTree(globeControl1, layerTree1, "实测数据"); - TreeUtils.InitTree(globeControl2, layerTree2, "施工数据"); + TreeUtils.InitLayerTree(globeControl1, layerTree1, "实测数据"); + TreeUtils.InitLayerTree(globeControl2, layerTree2, "施工数据"); } #region wxl重构树形结构代码 diff --git a/FrmMetadata.cs b/FrmMetadata.cs index e46fa2f..bb7c46c 100644 --- a/FrmMetadata.cs +++ b/FrmMetadata.cs @@ -29,7 +29,7 @@ // tv.ImageList = imageList1; tv.ShowLines = true; tv.CheckBoxes = false; - TreeUtils.InitTree(null, tv, null); + TreeUtils.InitLayerTree(null, tv, null); } /// /// 点击父节点则展开,点击子节点则编辑元数据 diff --git a/Cyberpipe.suo b/Cyberpipe.suo index e88befb..44957ec 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs index 53946c0..fe32265 100644 --- a/FeatureStatisticsService.cs +++ b/FeatureStatisticsService.cs @@ -4,7 +4,7 @@ using GeoScene.Globe; namespace Cyberpipe -{ +{ //本类作用为:辅助GlobalControl上Feature的统计分析工具类 class FeatureStatisticsService { /// @@ -60,8 +60,8 @@ /// /// /// - /// - /// + /// + /// /// /// public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName) @@ -74,6 +74,7 @@ for (int i = 0; i < features.Length; i++) { GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D; + if (line == null) continue; double length = line.GetSpaceLength(true, 6378137); totalLength += length; ncount += 1; @@ -114,7 +115,7 @@ for (int i = 0; i < feats.Length; i++) { double radius = feats[i].GetFieldAsDouble(fieldName); - if (radius >= min && radius <= max) + if (radius >= minValue && radius <= maxValue) { result.Add(feats[i]); } @@ -148,23 +149,22 @@ lstDiameter.Sort(); if (lstDiameter.Count > 0) { - for (int m = 0; m < lstDiameter.Count; m++) + foreach (float diameter in lstDiameter) { double totalLength = 0.00; int ncount = 0; for (int j = 0; j < feats.Length; j++) { - if (feats[j].GetFieldAsFloat("管径_毫米") == lstDiameter[m]) - { - GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; - double length = line.GetSpaceLength(true, 6378137); - totalLength += length; - ncount += 1; - } + if (Math.Abs(feats[j].GetFieldAsFloat("管径_毫米") - diameter) > 0.00001) continue; + GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; + if (line == null) continue; + double length = line.GetSpaceLength(true, 6378137); + totalLength += length; + ncount += 1; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); featuresClass.layerName = layer.Caption; - featuresClass.groupFieldValue = lstDiameter[m].ToString(); + featuresClass.groupFieldValue = diameter.ToString(); featuresClass.ncount = ncount; featuresClass.sum = Math.Round(totalLength, 2); @@ -191,13 +191,13 @@ //layer.Name是表名 string[] accessStrs = Utility.getAccStrsByLayer(layer.Name); - for (int j = 0; j < accessStrs.Length; j++) + foreach (string accssname in accessStrs) { - GSOFeatures feats = null; - int ncount = 0; + GSOFeatures feats; + int ncount; if (polygon == null) { - feats = flayer.GetFeatureByFieldValue("附属物名称", accessStrs[j], true); + feats = flayer.GetFeatureByFieldValue("附属物名称", accssname, true); ncount = feats.Length; } else @@ -207,14 +207,14 @@ //过滤 for (int n = 0; n < feats.Length; n++) { - if (feats[n].GetFieldAsString("附属物名称").Contains(accessStrs[j])) newfeats.Add(feats[n]); + if (feats[n].GetFieldAsString("附属物名称").Contains(accssname)) newfeats.Add(feats[n]); } ncount = newfeats.Length; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); - featuresClass.layerName = accessStrs[j]; + featuresClass.layerName = accssname; featuresClass.ncount = ncount; result.Add(featuresClass); @@ -303,6 +303,26 @@ if (layer == null) return null; GSOFeatureLayer flayer = layer as GSOFeatureLayer; return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false); - } + } + + + /// + /// 获取globeControl上选中的管线,如果返回空则没有选中的管线 + /// + /// 地球引擎 + /// 返回一根线 + public static GSOFeature GetSelectedPipeline(GSOGlobeControl globeControl) + { + GSOFeature resFeature; + if (globeControl.Globe.SelObjectCount < 1) return null; + GSOLayer resLayer; + globeControl.Globe.GetSelectObject(0, out resFeature, out resLayer); + if (resFeature == null) return null; + + GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; + if (line1 == null) return null; + GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; + return pipeStyle1 == null ? null : resFeature; + } } } diff --git a/FrmHotFuncStat.cs b/FrmHotFuncStat.cs index 84131ef..f313b20 100644 --- a/FrmHotFuncStat.cs +++ b/FrmHotFuncStat.cs @@ -58,14 +58,11 @@ DataTable table = OledbHelper.QueryTable(sql); - if (table != null) + if (table == null) return; + for (int i = 0; i < table.Rows.Count; i++) { - for (int i = 0; i < table.Rows.Count; i++) - { - userLists.Items.Add(table.Rows[i][0].ToString()); - } + userLists.Items.Add(table.Rows[i][0].ToString()); } - } //统计结果 private void statBtn_Click(object sender, EventArgs e) diff --git a/FrmLayerControl.cs b/FrmLayerControl.cs index 6ebb807..8fbce97 100644 --- a/FrmLayerControl.cs +++ b/FrmLayerControl.cs @@ -103,8 +103,8 @@ { layerTree1.Nodes.Clear(); layerTree2.Nodes.Clear(); - TreeUtils.InitTree(globeControl1, layerTree1, "实测数据"); - TreeUtils.InitTree(globeControl2, layerTree2, "施工数据"); + TreeUtils.InitLayerTree(globeControl1, layerTree1, "实测数据"); + TreeUtils.InitLayerTree(globeControl2, layerTree2, "施工数据"); } #region wxl重构树形结构代码 diff --git a/FrmMetadata.cs b/FrmMetadata.cs index e46fa2f..bb7c46c 100644 --- a/FrmMetadata.cs +++ b/FrmMetadata.cs @@ -29,7 +29,7 @@ // tv.ImageList = imageList1; tv.ShowLines = true; tv.CheckBoxes = false; - TreeUtils.InitTree(null, tv, null); + TreeUtils.InitLayerTree(null, tv, null); } /// /// 点击父节点则展开,点击子节点则编辑元数据 diff --git a/MainFrm.cs b/MainFrm.cs index c4a1292..61de352 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -1263,7 +1263,7 @@ layerManagerNode.Tag = layerTemp; layerTree.Nodes.Add(layerManagerNode); - TreeUtils.InitTree(globeControl1, layerTree, null); + TreeUtils.InitLayerTree(globeControl1, layerTree, null); } @@ -3183,7 +3183,6 @@ { TreeNode node = layerNodeContexMenu.Tag as TreeNode; - Int32 nIndex = node.Index; string layerCaption = node.Tag.ToString().Split('|')[1]; GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); layer.Dataset.Save(); @@ -3368,7 +3367,6 @@ return; GSOFeatureLayer flayer = layer as GSOFeatureLayer; - GSOFeatureDataset fdataset = flayer.Dataset as GSOFeatureDataset; GSOFeatures feats = flayer.GetAllFeatures(); for (int i = 0; i < feats.Length; i++) { @@ -3393,7 +3391,6 @@ return; GSOFeatureLayer flayer = layer as GSOFeatureLayer; - GSOFeatureDataset fdataset = flayer.Dataset as GSOFeatureDataset; GSOFeatures feats = flayer.GetAllFeatures(); for (int i = 0; i < feats.Length; i++) { @@ -5421,7 +5418,6 @@ private void addNodeToLayerManagerNode(GSOLayer layer) { if (layer == null) return; - GSODataset dataset = layer.Dataset; CheckDatasetGeoReference(layer.Dataset, ""); TreeNode node = new TreeNode(); @@ -5440,43 +5436,24 @@ /// /// /// - public int getLabelName(GSOLayer layer) - { - int nid = -1; - if (layer.GetAllFeatures().Length > 0) - { - string id = layer.GetAllFeatures()[layer.GetAllFeatures().Length - 1].Name; +// public int getLabelName(GSOLayer layer) +// { +// int nid = -1; +// if (layer.GetAllFeatures().Length > 0) +// { +// string id = layer.GetAllFeatures()[layer.GetAllFeatures().Length - 1].Name; +// +// int.TryParse(id, out nid); +// } +// else +// { +// nid = 0; +// } +// return nid; +// } - int.TryParse(id, out nid); - } - else - { - nid = 0; - } - return nid; - } /// - /// 判断选中的对象是否为管线 - /// - /// 被选中管线 - /// 返回一根线 - private GSOFeature IsPipeLineOfSelectedObj() - { - GSOFeature resFeature = null; - if (globeControl1.Globe.SelObjectCount < 1) return null; - GSOLayer resLayer = null; - globeControl1.Globe.GetSelectObject(0, out resFeature, out resLayer); - if (resFeature == null) return null; - - GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; - if (line1 == null) return null; - GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; - if (pipeStyle1 == null) return null; - - return resFeature; - } - /// /// 图层节点树中 节点 右键单击事件处理 /// /// @@ -5528,7 +5505,6 @@ { TreeNode node = contextMenuStrip2.Tag as TreeNode; TreeNode parentNode = node.Parent; - Int32 nIndex = node.Index; if (parentNode.Text == "标注管理" || parentNode.Text == "传感器管理") { @@ -5579,53 +5555,11 @@ { if (e.Action != TreeViewAction.Unknown) { - CheckTreeNode(e.Node, e.Node.Checked); + //wxl优化标注管理树形结构 + TreeUtils.TreeNodeCheckedChange(globeControl1,e.Node); } } - /// - /// 改变指定节点对应的复选框的选中状态 - /// - /// - /// - private void CheckTreeNode(TreeNode node, Boolean bChecked) - { - CheckChildTreeNode(node, bChecked); - globeControl1.Globe.Refresh(); - } - /// - /// 改变指定节点的子节点对应的复选框的选中状态 - /// - /// - /// - private void CheckChildTreeNode(TreeNode node, Boolean bChecked) - { - if (node == null) - return; - if (node.Tag != null) - { - if (node.Tag.GetType() == typeof(GSOFeatureFolder) || node.Tag.GetType() == typeof(GSOFeature)) - ((GSOFeature)node.Tag).SetVisibleDirectly(bChecked); - else - { - GSOLayer curLayer = node.Tag as GSOLayer; - GSOTerrain curTerrain = node.Tag as GSOTerrain; - if (curLayer != null) - { - curLayer.Visible = bChecked; - } - else if (curTerrain != null) - { - curTerrain.Visible = bChecked; - } - } - } - // 递归处理子节点 - for (int i = 0; i < node.Nodes.Count; i++) - { - node.Nodes[i].Checked = bChecked; - CheckChildTreeNode(node.Nodes[i], bChecked); - } - } + /// /// 标注管理、传感器管理 目录树中的feature节点的右键菜单中的 删除 菜单 /// @@ -5903,7 +5837,7 @@ frmModify = new FrmMnModify(globeControl1, shlayername, shresultLists); - if (boolfrmModify != false) return; + if (boolfrmModify) return; frmModify.Owner = this; frmModify.Location = new Point(Width - frmModify.Width - 10, Height - frmModify.Height - 50); frmModify.Show(); @@ -6445,8 +6379,8 @@ GSOFeatures selectFeatures = new GSOFeatures(); for (int i = 0; i < globeControl1.Globe.SelObjectCount; i++) { - GSOFeature feature = null; - GSOLayer layer = null; + GSOFeature feature; + GSOLayer layer; globeControl1.Globe.GetSelectObject(i, out feature, out layer); if (feature != null && feature.Geometry != null && feature.Geometry.Type == EnumGeometryType.GeoPolyline3D) { @@ -6454,11 +6388,9 @@ } } List feats = SectionAnalysisTool.ZDMAnalysis(selectFeatures); - if (feats != null && feats.Count >= 1) - { - FrmProfileAnalysis frm = new FrmProfileAnalysis(globeControl1, feats); - frm.Show(this); - } + if (feats == null || feats.Count < 1) return; + FrmProfileAnalysis frm = new FrmProfileAnalysis(globeControl1, feats); + frm.Show(this); } /// /// 道路断面分析 @@ -6975,14 +6907,14 @@ /// private void buttonItemSZ1_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -6993,17 +6925,17 @@ /// /// 管径标注 /// - GSOFeature radiusMarkerFeature; +// GSOFeature radiusMarkerFeature; private void buttonItemBZ2_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine==null||selLine[0].Count <= 1)//wxl增加为空判断,下面方法同理 + if (selLine == null || selLine[0].Count <= 1) //wxl增加为空判断,下面方法同理 { return; } @@ -7018,14 +6950,14 @@ /// private void buttonItemBZ3_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null||selLine[0].Count <= 1) { return; } @@ -7041,14 +6973,14 @@ /// private void buttonItemBZ4_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -7058,7 +6990,7 @@ /// /// 距离标注 /// - bool distanceMarker; +// bool distanceMarker; private void buttonItemBZ5_Click(object sender, EventArgs e) { //日志记录 @@ -7066,7 +6998,7 @@ globeControl1.Globe.Action = EnumAction3D.TrackPolyline; //globeControl1.Globe.DistanceRuler.MeasureMode = EnumDistanceMeasureMode.HVSLineMeasure; - distanceMarker = true; +// distanceMarker = true; } /// /// 自定义标注 @@ -7105,14 +7037,14 @@ /// private void buttonItemBZ8_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -7688,11 +7620,9 @@ if (frm.ShowDialog() == DialogResult.OK) { GSOLayer featureAddLayer = TreeNodeFeatureLayer(); - if (featureAddLayer != null) - { - FrmAddInstrument dlg = new FrmAddInstrument(globeControl1, featureAddLayer); - dlg.Show(this); - } + if (featureAddLayer == null) return; + FrmAddInstrument dlg = new FrmAddInstrument(globeControl1, featureAddLayer); + dlg.Show(this); } } /// @@ -7735,11 +7665,9 @@ frm.citySevenLineType); globeControl1.Tag = citySevenLine; GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(frm.citySevenLineType); - if (layer != null) - { - globeControl1.Globe.DestLayerFeatureAdd = layer; - layer.Editable = true; - } + if (layer == null) return; + globeControl1.Globe.DestLayerFeatureAdd = layer; + layer.Editable = true; } } #endregion @@ -7899,44 +7827,45 @@ LogManager.saveLog(Utility.userName, buttonItemBJ10_2.Text); List listVectorNames = new List(); - for (int i = 0; i < Utility.m_PipelineLayerNames.Count; i++) + foreach (string pipeline in Utility.m_PipelineLayerNames) { - if (!listVectorNames.Contains(Utility.m_PipelineLayerNames[i])) + if (!listVectorNames.Contains(pipeline)) { - listVectorNames.Add(Utility.m_PipelineLayerNames[i]); + listVectorNames.Add(pipeline); } } - for (int i = 0; i < Utility.valueLayerNames.Count; i++) + foreach (string valve in Utility.valueLayerNames) { - if (!listVectorNames.Contains(Utility.valueLayerNames[i])) + if (!listVectorNames.Contains(valve)) { - listVectorNames.Add(Utility.valueLayerNames[i]); + listVectorNames.Add(valve); } } - for (int i = 0; i < Utility.workwellLayerNames.Count; i++) + foreach (string workwell in Utility.workwellLayerNames) { - if (!listVectorNames.Contains(Utility.workwellLayerNames[i])) + if (!listVectorNames.Contains(workwell)) { - listVectorNames.Add(Utility.workwellLayerNames[i]); + listVectorNames.Add(workwell); } } - for (int i = 0; i < Utility.instrumenLayerNames.Count; i++) + foreach (string instrument in Utility.instrumenLayerNames) { - if (!listVectorNames.Contains(Utility.instrumenLayerNames[i])) + if (!listVectorNames.Contains(instrument)) { - listVectorNames.Add(Utility.instrumenLayerNames[i]); + listVectorNames.Add(instrument); } } - for (int i = 0; i < Utility.pipefittingLayerNames.Count; i++) + foreach (string pipefitting in Utility.pipefittingLayerNames) { - if (!listVectorNames.Contains(Utility.pipefittingLayerNames[i])) + if (!listVectorNames.Contains(pipefitting)) { - listVectorNames.Add(Utility.pipefittingLayerNames[i]); + listVectorNames.Add(pipefitting); } } FrmExportVector frm = new FrmExportVector(globeControl1, listVectorNames); frm.ShowDialog(); } + /// /// 删除模型 /// @@ -7945,27 +7874,25 @@ private void buttonItemBJ13_Click(object sender, EventArgs e) { LogManager.saveLog(Utility.userName, buttonItemBJ13.Text); - if (globeControl1.Globe.SelObjectCount > 0) - { - for (int i = 0; i < globeControl1.Globe.SelObjectCount; i++) - { - GSOFeature f = null; - GSOLayer layer = null; - globeControl1.Globe.GetSelectObject(i, out f, out layer); - if (f == null) continue; - f.Delete(); - if (layer != null) - globeControl1.Globe.AddToEditHistroy(layer, f, EnumEditType.Delete); - globeControl1.Refresh(); - - } - MessageBox.Show("删除成功!", "提示"); - } - else + var selObjCount = globeControl1.Globe.SelObjectCount; + if (selObjCount == 0) { MessageBox.Show("请选中要删除的模型!", "提示"); + return; } + for (int i = 0; i < selObjCount; i++) + { + GSOFeature f; + GSOLayer layer; + globeControl1.Globe.GetSelectObject(i, out f, out layer); + if (f == null) continue; + f.Delete(); + if (layer != null) + globeControl1.Globe.AddToEditHistroy(layer, f, EnumEditType.Delete); + globeControl1.Refresh(); + } + MessageBox.Show("删除成功!", "提示"); globeControl1.Globe.Action = EnumAction3D.ActionNull; } @@ -8031,6 +7958,7 @@ toolStripNumbers.Text = "红线审核 |共有:" + table.Rows.Count + "条"; toolStripDropDownButton3.Visible = true; } + /// /// 主窗体 下方的工具条中的 导出.xls文件 按钮事件处理 /// @@ -8040,24 +7968,28 @@ { if (dataGridViewX1.Rows.Count != 0) { - string strSaveFile = string.Empty; - SaveFileDialog savefiledialog = new SaveFileDialog(); - savefiledialog.Filter = "Excel文件|*.xls,*.xlsx"; - savefiledialog.AddExtension = true; - savefiledialog.FileName = "红线审核"; - if (savefiledialog.ShowDialog() == DialogResult.OK) - strSaveFile = savefiledialog.FileName; - else return; - - ExpEXCEL.ExpToExcel(dataGridViewX1, strSaveFile, "红线审核", lineStruct, featsList); - MessageBox.Show("导出成功!"); - } - else - { MessageBox.Show("表格内容为空!", "提示"); + return; } + string strSaveFile; + SaveFileDialog savefiledialog = new SaveFileDialog(); + savefiledialog.Filter = "Excel文件|*.xls,*.xlsx"; + savefiledialog.AddExtension = true; + savefiledialog.FileName = "红线审核"; + if (savefiledialog.ShowDialog() == DialogResult.OK) + strSaveFile = savefiledialog.FileName; + else return; + + ExpEXCEL.ExpToExcel(dataGridViewX1, strSaveFile, "红线审核", lineStruct, featsList); + MessageBox.Show("导出成功!"); + } + /// + /// 双屏对比的地面透明度设置 + /// + /// + /// private void sliderItem2_ValueChanged(object sender, EventArgs e) { LogManager.saveLog(Utility.userName, sliderItem2.Text); @@ -8068,7 +8000,7 @@ { layer.Opaque = 100 - sliderItem2.Value; } - layer = globeControl2.Globe.Layers.GetLayerByCaption("180fd");//("180fd"); + layer = globeControl2.Globe.Layers.GetLayerByCaption(Utility.roadLayerName);//("180fd"); if (layer != null) { layer.Opaque = 100 - sliderItem2.Value; @@ -8832,11 +8764,9 @@ } private void pictureBox1_Paint(object sender, PaintEventArgs e) - { - int Width = this.Width; + { string welcomeUser = "欢迎您:" + Utility.userName; - Graphics g = e.Graphics; - g.DrawString(welcomeUser, new Font("宋体", 12), new SolidBrush(Color.Black), Width - 180, 50); + e.Graphics.DrawString(welcomeUser, new Font("宋体", 12), new SolidBrush(Color.Black), Width - 180, 50); } } diff --git a/Cyberpipe.suo b/Cyberpipe.suo index e88befb..44957ec 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs index 53946c0..fe32265 100644 --- a/FeatureStatisticsService.cs +++ b/FeatureStatisticsService.cs @@ -4,7 +4,7 @@ using GeoScene.Globe; namespace Cyberpipe -{ +{ //本类作用为:辅助GlobalControl上Feature的统计分析工具类 class FeatureStatisticsService { /// @@ -60,8 +60,8 @@ /// /// /// - /// - /// + /// + /// /// /// public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName) @@ -74,6 +74,7 @@ for (int i = 0; i < features.Length; i++) { GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D; + if (line == null) continue; double length = line.GetSpaceLength(true, 6378137); totalLength += length; ncount += 1; @@ -114,7 +115,7 @@ for (int i = 0; i < feats.Length; i++) { double radius = feats[i].GetFieldAsDouble(fieldName); - if (radius >= min && radius <= max) + if (radius >= minValue && radius <= maxValue) { result.Add(feats[i]); } @@ -148,23 +149,22 @@ lstDiameter.Sort(); if (lstDiameter.Count > 0) { - for (int m = 0; m < lstDiameter.Count; m++) + foreach (float diameter in lstDiameter) { double totalLength = 0.00; int ncount = 0; for (int j = 0; j < feats.Length; j++) { - if (feats[j].GetFieldAsFloat("管径_毫米") == lstDiameter[m]) - { - GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; - double length = line.GetSpaceLength(true, 6378137); - totalLength += length; - ncount += 1; - } + if (Math.Abs(feats[j].GetFieldAsFloat("管径_毫米") - diameter) > 0.00001) continue; + GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; + if (line == null) continue; + double length = line.GetSpaceLength(true, 6378137); + totalLength += length; + ncount += 1; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); featuresClass.layerName = layer.Caption; - featuresClass.groupFieldValue = lstDiameter[m].ToString(); + featuresClass.groupFieldValue = diameter.ToString(); featuresClass.ncount = ncount; featuresClass.sum = Math.Round(totalLength, 2); @@ -191,13 +191,13 @@ //layer.Name是表名 string[] accessStrs = Utility.getAccStrsByLayer(layer.Name); - for (int j = 0; j < accessStrs.Length; j++) + foreach (string accssname in accessStrs) { - GSOFeatures feats = null; - int ncount = 0; + GSOFeatures feats; + int ncount; if (polygon == null) { - feats = flayer.GetFeatureByFieldValue("附属物名称", accessStrs[j], true); + feats = flayer.GetFeatureByFieldValue("附属物名称", accssname, true); ncount = feats.Length; } else @@ -207,14 +207,14 @@ //过滤 for (int n = 0; n < feats.Length; n++) { - if (feats[n].GetFieldAsString("附属物名称").Contains(accessStrs[j])) newfeats.Add(feats[n]); + if (feats[n].GetFieldAsString("附属物名称").Contains(accssname)) newfeats.Add(feats[n]); } ncount = newfeats.Length; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); - featuresClass.layerName = accessStrs[j]; + featuresClass.layerName = accssname; featuresClass.ncount = ncount; result.Add(featuresClass); @@ -303,6 +303,26 @@ if (layer == null) return null; GSOFeatureLayer flayer = layer as GSOFeatureLayer; return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false); - } + } + + + /// + /// 获取globeControl上选中的管线,如果返回空则没有选中的管线 + /// + /// 地球引擎 + /// 返回一根线 + public static GSOFeature GetSelectedPipeline(GSOGlobeControl globeControl) + { + GSOFeature resFeature; + if (globeControl.Globe.SelObjectCount < 1) return null; + GSOLayer resLayer; + globeControl.Globe.GetSelectObject(0, out resFeature, out resLayer); + if (resFeature == null) return null; + + GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; + if (line1 == null) return null; + GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; + return pipeStyle1 == null ? null : resFeature; + } } } diff --git a/FrmHotFuncStat.cs b/FrmHotFuncStat.cs index 84131ef..f313b20 100644 --- a/FrmHotFuncStat.cs +++ b/FrmHotFuncStat.cs @@ -58,14 +58,11 @@ DataTable table = OledbHelper.QueryTable(sql); - if (table != null) + if (table == null) return; + for (int i = 0; i < table.Rows.Count; i++) { - for (int i = 0; i < table.Rows.Count; i++) - { - userLists.Items.Add(table.Rows[i][0].ToString()); - } + userLists.Items.Add(table.Rows[i][0].ToString()); } - } //统计结果 private void statBtn_Click(object sender, EventArgs e) diff --git a/FrmLayerControl.cs b/FrmLayerControl.cs index 6ebb807..8fbce97 100644 --- a/FrmLayerControl.cs +++ b/FrmLayerControl.cs @@ -103,8 +103,8 @@ { layerTree1.Nodes.Clear(); layerTree2.Nodes.Clear(); - TreeUtils.InitTree(globeControl1, layerTree1, "实测数据"); - TreeUtils.InitTree(globeControl2, layerTree2, "施工数据"); + TreeUtils.InitLayerTree(globeControl1, layerTree1, "实测数据"); + TreeUtils.InitLayerTree(globeControl2, layerTree2, "施工数据"); } #region wxl重构树形结构代码 diff --git a/FrmMetadata.cs b/FrmMetadata.cs index e46fa2f..bb7c46c 100644 --- a/FrmMetadata.cs +++ b/FrmMetadata.cs @@ -29,7 +29,7 @@ // tv.ImageList = imageList1; tv.ShowLines = true; tv.CheckBoxes = false; - TreeUtils.InitTree(null, tv, null); + TreeUtils.InitLayerTree(null, tv, null); } /// /// 点击父节点则展开,点击子节点则编辑元数据 diff --git a/MainFrm.cs b/MainFrm.cs index c4a1292..61de352 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -1263,7 +1263,7 @@ layerManagerNode.Tag = layerTemp; layerTree.Nodes.Add(layerManagerNode); - TreeUtils.InitTree(globeControl1, layerTree, null); + TreeUtils.InitLayerTree(globeControl1, layerTree, null); } @@ -3183,7 +3183,6 @@ { TreeNode node = layerNodeContexMenu.Tag as TreeNode; - Int32 nIndex = node.Index; string layerCaption = node.Tag.ToString().Split('|')[1]; GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); layer.Dataset.Save(); @@ -3368,7 +3367,6 @@ return; GSOFeatureLayer flayer = layer as GSOFeatureLayer; - GSOFeatureDataset fdataset = flayer.Dataset as GSOFeatureDataset; GSOFeatures feats = flayer.GetAllFeatures(); for (int i = 0; i < feats.Length; i++) { @@ -3393,7 +3391,6 @@ return; GSOFeatureLayer flayer = layer as GSOFeatureLayer; - GSOFeatureDataset fdataset = flayer.Dataset as GSOFeatureDataset; GSOFeatures feats = flayer.GetAllFeatures(); for (int i = 0; i < feats.Length; i++) { @@ -5421,7 +5418,6 @@ private void addNodeToLayerManagerNode(GSOLayer layer) { if (layer == null) return; - GSODataset dataset = layer.Dataset; CheckDatasetGeoReference(layer.Dataset, ""); TreeNode node = new TreeNode(); @@ -5440,43 +5436,24 @@ /// /// /// - public int getLabelName(GSOLayer layer) - { - int nid = -1; - if (layer.GetAllFeatures().Length > 0) - { - string id = layer.GetAllFeatures()[layer.GetAllFeatures().Length - 1].Name; +// public int getLabelName(GSOLayer layer) +// { +// int nid = -1; +// if (layer.GetAllFeatures().Length > 0) +// { +// string id = layer.GetAllFeatures()[layer.GetAllFeatures().Length - 1].Name; +// +// int.TryParse(id, out nid); +// } +// else +// { +// nid = 0; +// } +// return nid; +// } - int.TryParse(id, out nid); - } - else - { - nid = 0; - } - return nid; - } /// - /// 判断选中的对象是否为管线 - /// - /// 被选中管线 - /// 返回一根线 - private GSOFeature IsPipeLineOfSelectedObj() - { - GSOFeature resFeature = null; - if (globeControl1.Globe.SelObjectCount < 1) return null; - GSOLayer resLayer = null; - globeControl1.Globe.GetSelectObject(0, out resFeature, out resLayer); - if (resFeature == null) return null; - - GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; - if (line1 == null) return null; - GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; - if (pipeStyle1 == null) return null; - - return resFeature; - } - /// /// 图层节点树中 节点 右键单击事件处理 /// /// @@ -5528,7 +5505,6 @@ { TreeNode node = contextMenuStrip2.Tag as TreeNode; TreeNode parentNode = node.Parent; - Int32 nIndex = node.Index; if (parentNode.Text == "标注管理" || parentNode.Text == "传感器管理") { @@ -5579,53 +5555,11 @@ { if (e.Action != TreeViewAction.Unknown) { - CheckTreeNode(e.Node, e.Node.Checked); + //wxl优化标注管理树形结构 + TreeUtils.TreeNodeCheckedChange(globeControl1,e.Node); } } - /// - /// 改变指定节点对应的复选框的选中状态 - /// - /// - /// - private void CheckTreeNode(TreeNode node, Boolean bChecked) - { - CheckChildTreeNode(node, bChecked); - globeControl1.Globe.Refresh(); - } - /// - /// 改变指定节点的子节点对应的复选框的选中状态 - /// - /// - /// - private void CheckChildTreeNode(TreeNode node, Boolean bChecked) - { - if (node == null) - return; - if (node.Tag != null) - { - if (node.Tag.GetType() == typeof(GSOFeatureFolder) || node.Tag.GetType() == typeof(GSOFeature)) - ((GSOFeature)node.Tag).SetVisibleDirectly(bChecked); - else - { - GSOLayer curLayer = node.Tag as GSOLayer; - GSOTerrain curTerrain = node.Tag as GSOTerrain; - if (curLayer != null) - { - curLayer.Visible = bChecked; - } - else if (curTerrain != null) - { - curTerrain.Visible = bChecked; - } - } - } - // 递归处理子节点 - for (int i = 0; i < node.Nodes.Count; i++) - { - node.Nodes[i].Checked = bChecked; - CheckChildTreeNode(node.Nodes[i], bChecked); - } - } + /// /// 标注管理、传感器管理 目录树中的feature节点的右键菜单中的 删除 菜单 /// @@ -5903,7 +5837,7 @@ frmModify = new FrmMnModify(globeControl1, shlayername, shresultLists); - if (boolfrmModify != false) return; + if (boolfrmModify) return; frmModify.Owner = this; frmModify.Location = new Point(Width - frmModify.Width - 10, Height - frmModify.Height - 50); frmModify.Show(); @@ -6445,8 +6379,8 @@ GSOFeatures selectFeatures = new GSOFeatures(); for (int i = 0; i < globeControl1.Globe.SelObjectCount; i++) { - GSOFeature feature = null; - GSOLayer layer = null; + GSOFeature feature; + GSOLayer layer; globeControl1.Globe.GetSelectObject(i, out feature, out layer); if (feature != null && feature.Geometry != null && feature.Geometry.Type == EnumGeometryType.GeoPolyline3D) { @@ -6454,11 +6388,9 @@ } } List feats = SectionAnalysisTool.ZDMAnalysis(selectFeatures); - if (feats != null && feats.Count >= 1) - { - FrmProfileAnalysis frm = new FrmProfileAnalysis(globeControl1, feats); - frm.Show(this); - } + if (feats == null || feats.Count < 1) return; + FrmProfileAnalysis frm = new FrmProfileAnalysis(globeControl1, feats); + frm.Show(this); } /// /// 道路断面分析 @@ -6975,14 +6907,14 @@ /// private void buttonItemSZ1_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -6993,17 +6925,17 @@ /// /// 管径标注 /// - GSOFeature radiusMarkerFeature; +// GSOFeature radiusMarkerFeature; private void buttonItemBZ2_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine==null||selLine[0].Count <= 1)//wxl增加为空判断,下面方法同理 + if (selLine == null || selLine[0].Count <= 1) //wxl增加为空判断,下面方法同理 { return; } @@ -7018,14 +6950,14 @@ /// private void buttonItemBZ3_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null||selLine[0].Count <= 1) { return; } @@ -7041,14 +6973,14 @@ /// private void buttonItemBZ4_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -7058,7 +6990,7 @@ /// /// 距离标注 /// - bool distanceMarker; +// bool distanceMarker; private void buttonItemBZ5_Click(object sender, EventArgs e) { //日志记录 @@ -7066,7 +6998,7 @@ globeControl1.Globe.Action = EnumAction3D.TrackPolyline; //globeControl1.Globe.DistanceRuler.MeasureMode = EnumDistanceMeasureMode.HVSLineMeasure; - distanceMarker = true; +// distanceMarker = true; } /// /// 自定义标注 @@ -7105,14 +7037,14 @@ /// private void buttonItemBZ8_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -7688,11 +7620,9 @@ if (frm.ShowDialog() == DialogResult.OK) { GSOLayer featureAddLayer = TreeNodeFeatureLayer(); - if (featureAddLayer != null) - { - FrmAddInstrument dlg = new FrmAddInstrument(globeControl1, featureAddLayer); - dlg.Show(this); - } + if (featureAddLayer == null) return; + FrmAddInstrument dlg = new FrmAddInstrument(globeControl1, featureAddLayer); + dlg.Show(this); } } /// @@ -7735,11 +7665,9 @@ frm.citySevenLineType); globeControl1.Tag = citySevenLine; GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(frm.citySevenLineType); - if (layer != null) - { - globeControl1.Globe.DestLayerFeatureAdd = layer; - layer.Editable = true; - } + if (layer == null) return; + globeControl1.Globe.DestLayerFeatureAdd = layer; + layer.Editable = true; } } #endregion @@ -7899,44 +7827,45 @@ LogManager.saveLog(Utility.userName, buttonItemBJ10_2.Text); List listVectorNames = new List(); - for (int i = 0; i < Utility.m_PipelineLayerNames.Count; i++) + foreach (string pipeline in Utility.m_PipelineLayerNames) { - if (!listVectorNames.Contains(Utility.m_PipelineLayerNames[i])) + if (!listVectorNames.Contains(pipeline)) { - listVectorNames.Add(Utility.m_PipelineLayerNames[i]); + listVectorNames.Add(pipeline); } } - for (int i = 0; i < Utility.valueLayerNames.Count; i++) + foreach (string valve in Utility.valueLayerNames) { - if (!listVectorNames.Contains(Utility.valueLayerNames[i])) + if (!listVectorNames.Contains(valve)) { - listVectorNames.Add(Utility.valueLayerNames[i]); + listVectorNames.Add(valve); } } - for (int i = 0; i < Utility.workwellLayerNames.Count; i++) + foreach (string workwell in Utility.workwellLayerNames) { - if (!listVectorNames.Contains(Utility.workwellLayerNames[i])) + if (!listVectorNames.Contains(workwell)) { - listVectorNames.Add(Utility.workwellLayerNames[i]); + listVectorNames.Add(workwell); } } - for (int i = 0; i < Utility.instrumenLayerNames.Count; i++) + foreach (string instrument in Utility.instrumenLayerNames) { - if (!listVectorNames.Contains(Utility.instrumenLayerNames[i])) + if (!listVectorNames.Contains(instrument)) { - listVectorNames.Add(Utility.instrumenLayerNames[i]); + listVectorNames.Add(instrument); } } - for (int i = 0; i < Utility.pipefittingLayerNames.Count; i++) + foreach (string pipefitting in Utility.pipefittingLayerNames) { - if (!listVectorNames.Contains(Utility.pipefittingLayerNames[i])) + if (!listVectorNames.Contains(pipefitting)) { - listVectorNames.Add(Utility.pipefittingLayerNames[i]); + listVectorNames.Add(pipefitting); } } FrmExportVector frm = new FrmExportVector(globeControl1, listVectorNames); frm.ShowDialog(); } + /// /// 删除模型 /// @@ -7945,27 +7874,25 @@ private void buttonItemBJ13_Click(object sender, EventArgs e) { LogManager.saveLog(Utility.userName, buttonItemBJ13.Text); - if (globeControl1.Globe.SelObjectCount > 0) - { - for (int i = 0; i < globeControl1.Globe.SelObjectCount; i++) - { - GSOFeature f = null; - GSOLayer layer = null; - globeControl1.Globe.GetSelectObject(i, out f, out layer); - if (f == null) continue; - f.Delete(); - if (layer != null) - globeControl1.Globe.AddToEditHistroy(layer, f, EnumEditType.Delete); - globeControl1.Refresh(); - - } - MessageBox.Show("删除成功!", "提示"); - } - else + var selObjCount = globeControl1.Globe.SelObjectCount; + if (selObjCount == 0) { MessageBox.Show("请选中要删除的模型!", "提示"); + return; } + for (int i = 0; i < selObjCount; i++) + { + GSOFeature f; + GSOLayer layer; + globeControl1.Globe.GetSelectObject(i, out f, out layer); + if (f == null) continue; + f.Delete(); + if (layer != null) + globeControl1.Globe.AddToEditHistroy(layer, f, EnumEditType.Delete); + globeControl1.Refresh(); + } + MessageBox.Show("删除成功!", "提示"); globeControl1.Globe.Action = EnumAction3D.ActionNull; } @@ -8031,6 +7958,7 @@ toolStripNumbers.Text = "红线审核 |共有:" + table.Rows.Count + "条"; toolStripDropDownButton3.Visible = true; } + /// /// 主窗体 下方的工具条中的 导出.xls文件 按钮事件处理 /// @@ -8040,24 +7968,28 @@ { if (dataGridViewX1.Rows.Count != 0) { - string strSaveFile = string.Empty; - SaveFileDialog savefiledialog = new SaveFileDialog(); - savefiledialog.Filter = "Excel文件|*.xls,*.xlsx"; - savefiledialog.AddExtension = true; - savefiledialog.FileName = "红线审核"; - if (savefiledialog.ShowDialog() == DialogResult.OK) - strSaveFile = savefiledialog.FileName; - else return; - - ExpEXCEL.ExpToExcel(dataGridViewX1, strSaveFile, "红线审核", lineStruct, featsList); - MessageBox.Show("导出成功!"); - } - else - { MessageBox.Show("表格内容为空!", "提示"); + return; } + string strSaveFile; + SaveFileDialog savefiledialog = new SaveFileDialog(); + savefiledialog.Filter = "Excel文件|*.xls,*.xlsx"; + savefiledialog.AddExtension = true; + savefiledialog.FileName = "红线审核"; + if (savefiledialog.ShowDialog() == DialogResult.OK) + strSaveFile = savefiledialog.FileName; + else return; + + ExpEXCEL.ExpToExcel(dataGridViewX1, strSaveFile, "红线审核", lineStruct, featsList); + MessageBox.Show("导出成功!"); + } + /// + /// 双屏对比的地面透明度设置 + /// + /// + /// private void sliderItem2_ValueChanged(object sender, EventArgs e) { LogManager.saveLog(Utility.userName, sliderItem2.Text); @@ -8068,7 +8000,7 @@ { layer.Opaque = 100 - sliderItem2.Value; } - layer = globeControl2.Globe.Layers.GetLayerByCaption("180fd");//("180fd"); + layer = globeControl2.Globe.Layers.GetLayerByCaption(Utility.roadLayerName);//("180fd"); if (layer != null) { layer.Opaque = 100 - sliderItem2.Value; @@ -8832,11 +8764,9 @@ } private void pictureBox1_Paint(object sender, PaintEventArgs e) - { - int Width = this.Width; + { string welcomeUser = "欢迎您:" + Utility.userName; - Graphics g = e.Graphics; - g.DrawString(welcomeUser, new Font("宋体", 12), new SolidBrush(Color.Black), Width - 180, 50); + e.Graphics.DrawString(welcomeUser, new Font("宋体", 12), new SolidBrush(Color.Black), Width - 180, 50); } } diff --git a/TreeUtils.cs b/TreeUtils.cs index 9f4f744..68c8b1d 100644 --- a/TreeUtils.cs +++ b/TreeUtils.cs @@ -10,12 +10,12 @@ public class TreeUtils { /// - /// 构造tree,最多解析三层,若地球存在,则只构造指定地球上图层已存在的树节点,若地球不存在,则构造全部 + /// 构造图层tree,最多解析三层,若地球存在,则只构造指定地球上图层已存在的树节点,若地球不存在,则构造全部 /// /// 所属地球 /// 要加载的树 /// 数据来源,实测数据/施工数据/规划数据/红线数据,为空则展示全部 - public static void InitTree(GSOGlobeControl gsoGlobeControl, TreeView treeView, string viewDatasrc) + public static void InitLayerTree(GSOGlobeControl gsoGlobeControl, TreeView treeView, string viewDatasrc) { // treeView.Nodes.Clear(); LayerConfig layerConfig = Utility.layerConfig; diff --git a/Cyberpipe.suo b/Cyberpipe.suo index e88befb..44957ec 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs index 53946c0..fe32265 100644 --- a/FeatureStatisticsService.cs +++ b/FeatureStatisticsService.cs @@ -4,7 +4,7 @@ using GeoScene.Globe; namespace Cyberpipe -{ +{ //本类作用为:辅助GlobalControl上Feature的统计分析工具类 class FeatureStatisticsService { /// @@ -60,8 +60,8 @@ /// /// /// - /// - /// + /// + /// /// /// public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName) @@ -74,6 +74,7 @@ for (int i = 0; i < features.Length; i++) { GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D; + if (line == null) continue; double length = line.GetSpaceLength(true, 6378137); totalLength += length; ncount += 1; @@ -114,7 +115,7 @@ for (int i = 0; i < feats.Length; i++) { double radius = feats[i].GetFieldAsDouble(fieldName); - if (radius >= min && radius <= max) + if (radius >= minValue && radius <= maxValue) { result.Add(feats[i]); } @@ -148,23 +149,22 @@ lstDiameter.Sort(); if (lstDiameter.Count > 0) { - for (int m = 0; m < lstDiameter.Count; m++) + foreach (float diameter in lstDiameter) { double totalLength = 0.00; int ncount = 0; for (int j = 0; j < feats.Length; j++) { - if (feats[j].GetFieldAsFloat("管径_毫米") == lstDiameter[m]) - { - GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; - double length = line.GetSpaceLength(true, 6378137); - totalLength += length; - ncount += 1; - } + if (Math.Abs(feats[j].GetFieldAsFloat("管径_毫米") - diameter) > 0.00001) continue; + GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; + if (line == null) continue; + double length = line.GetSpaceLength(true, 6378137); + totalLength += length; + ncount += 1; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); featuresClass.layerName = layer.Caption; - featuresClass.groupFieldValue = lstDiameter[m].ToString(); + featuresClass.groupFieldValue = diameter.ToString(); featuresClass.ncount = ncount; featuresClass.sum = Math.Round(totalLength, 2); @@ -191,13 +191,13 @@ //layer.Name是表名 string[] accessStrs = Utility.getAccStrsByLayer(layer.Name); - for (int j = 0; j < accessStrs.Length; j++) + foreach (string accssname in accessStrs) { - GSOFeatures feats = null; - int ncount = 0; + GSOFeatures feats; + int ncount; if (polygon == null) { - feats = flayer.GetFeatureByFieldValue("附属物名称", accessStrs[j], true); + feats = flayer.GetFeatureByFieldValue("附属物名称", accssname, true); ncount = feats.Length; } else @@ -207,14 +207,14 @@ //过滤 for (int n = 0; n < feats.Length; n++) { - if (feats[n].GetFieldAsString("附属物名称").Contains(accessStrs[j])) newfeats.Add(feats[n]); + if (feats[n].GetFieldAsString("附属物名称").Contains(accssname)) newfeats.Add(feats[n]); } ncount = newfeats.Length; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); - featuresClass.layerName = accessStrs[j]; + featuresClass.layerName = accssname; featuresClass.ncount = ncount; result.Add(featuresClass); @@ -303,6 +303,26 @@ if (layer == null) return null; GSOFeatureLayer flayer = layer as GSOFeatureLayer; return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false); - } + } + + + /// + /// 获取globeControl上选中的管线,如果返回空则没有选中的管线 + /// + /// 地球引擎 + /// 返回一根线 + public static GSOFeature GetSelectedPipeline(GSOGlobeControl globeControl) + { + GSOFeature resFeature; + if (globeControl.Globe.SelObjectCount < 1) return null; + GSOLayer resLayer; + globeControl.Globe.GetSelectObject(0, out resFeature, out resLayer); + if (resFeature == null) return null; + + GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; + if (line1 == null) return null; + GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; + return pipeStyle1 == null ? null : resFeature; + } } } diff --git a/FrmHotFuncStat.cs b/FrmHotFuncStat.cs index 84131ef..f313b20 100644 --- a/FrmHotFuncStat.cs +++ b/FrmHotFuncStat.cs @@ -58,14 +58,11 @@ DataTable table = OledbHelper.QueryTable(sql); - if (table != null) + if (table == null) return; + for (int i = 0; i < table.Rows.Count; i++) { - for (int i = 0; i < table.Rows.Count; i++) - { - userLists.Items.Add(table.Rows[i][0].ToString()); - } + userLists.Items.Add(table.Rows[i][0].ToString()); } - } //统计结果 private void statBtn_Click(object sender, EventArgs e) diff --git a/FrmLayerControl.cs b/FrmLayerControl.cs index 6ebb807..8fbce97 100644 --- a/FrmLayerControl.cs +++ b/FrmLayerControl.cs @@ -103,8 +103,8 @@ { layerTree1.Nodes.Clear(); layerTree2.Nodes.Clear(); - TreeUtils.InitTree(globeControl1, layerTree1, "实测数据"); - TreeUtils.InitTree(globeControl2, layerTree2, "施工数据"); + TreeUtils.InitLayerTree(globeControl1, layerTree1, "实测数据"); + TreeUtils.InitLayerTree(globeControl2, layerTree2, "施工数据"); } #region wxl重构树形结构代码 diff --git a/FrmMetadata.cs b/FrmMetadata.cs index e46fa2f..bb7c46c 100644 --- a/FrmMetadata.cs +++ b/FrmMetadata.cs @@ -29,7 +29,7 @@ // tv.ImageList = imageList1; tv.ShowLines = true; tv.CheckBoxes = false; - TreeUtils.InitTree(null, tv, null); + TreeUtils.InitLayerTree(null, tv, null); } /// /// 点击父节点则展开,点击子节点则编辑元数据 diff --git a/MainFrm.cs b/MainFrm.cs index c4a1292..61de352 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -1263,7 +1263,7 @@ layerManagerNode.Tag = layerTemp; layerTree.Nodes.Add(layerManagerNode); - TreeUtils.InitTree(globeControl1, layerTree, null); + TreeUtils.InitLayerTree(globeControl1, layerTree, null); } @@ -3183,7 +3183,6 @@ { TreeNode node = layerNodeContexMenu.Tag as TreeNode; - Int32 nIndex = node.Index; string layerCaption = node.Tag.ToString().Split('|')[1]; GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); layer.Dataset.Save(); @@ -3368,7 +3367,6 @@ return; GSOFeatureLayer flayer = layer as GSOFeatureLayer; - GSOFeatureDataset fdataset = flayer.Dataset as GSOFeatureDataset; GSOFeatures feats = flayer.GetAllFeatures(); for (int i = 0; i < feats.Length; i++) { @@ -3393,7 +3391,6 @@ return; GSOFeatureLayer flayer = layer as GSOFeatureLayer; - GSOFeatureDataset fdataset = flayer.Dataset as GSOFeatureDataset; GSOFeatures feats = flayer.GetAllFeatures(); for (int i = 0; i < feats.Length; i++) { @@ -5421,7 +5418,6 @@ private void addNodeToLayerManagerNode(GSOLayer layer) { if (layer == null) return; - GSODataset dataset = layer.Dataset; CheckDatasetGeoReference(layer.Dataset, ""); TreeNode node = new TreeNode(); @@ -5440,43 +5436,24 @@ /// /// /// - public int getLabelName(GSOLayer layer) - { - int nid = -1; - if (layer.GetAllFeatures().Length > 0) - { - string id = layer.GetAllFeatures()[layer.GetAllFeatures().Length - 1].Name; +// public int getLabelName(GSOLayer layer) +// { +// int nid = -1; +// if (layer.GetAllFeatures().Length > 0) +// { +// string id = layer.GetAllFeatures()[layer.GetAllFeatures().Length - 1].Name; +// +// int.TryParse(id, out nid); +// } +// else +// { +// nid = 0; +// } +// return nid; +// } - int.TryParse(id, out nid); - } - else - { - nid = 0; - } - return nid; - } /// - /// 判断选中的对象是否为管线 - /// - /// 被选中管线 - /// 返回一根线 - private GSOFeature IsPipeLineOfSelectedObj() - { - GSOFeature resFeature = null; - if (globeControl1.Globe.SelObjectCount < 1) return null; - GSOLayer resLayer = null; - globeControl1.Globe.GetSelectObject(0, out resFeature, out resLayer); - if (resFeature == null) return null; - - GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; - if (line1 == null) return null; - GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; - if (pipeStyle1 == null) return null; - - return resFeature; - } - /// /// 图层节点树中 节点 右键单击事件处理 /// /// @@ -5528,7 +5505,6 @@ { TreeNode node = contextMenuStrip2.Tag as TreeNode; TreeNode parentNode = node.Parent; - Int32 nIndex = node.Index; if (parentNode.Text == "标注管理" || parentNode.Text == "传感器管理") { @@ -5579,53 +5555,11 @@ { if (e.Action != TreeViewAction.Unknown) { - CheckTreeNode(e.Node, e.Node.Checked); + //wxl优化标注管理树形结构 + TreeUtils.TreeNodeCheckedChange(globeControl1,e.Node); } } - /// - /// 改变指定节点对应的复选框的选中状态 - /// - /// - /// - private void CheckTreeNode(TreeNode node, Boolean bChecked) - { - CheckChildTreeNode(node, bChecked); - globeControl1.Globe.Refresh(); - } - /// - /// 改变指定节点的子节点对应的复选框的选中状态 - /// - /// - /// - private void CheckChildTreeNode(TreeNode node, Boolean bChecked) - { - if (node == null) - return; - if (node.Tag != null) - { - if (node.Tag.GetType() == typeof(GSOFeatureFolder) || node.Tag.GetType() == typeof(GSOFeature)) - ((GSOFeature)node.Tag).SetVisibleDirectly(bChecked); - else - { - GSOLayer curLayer = node.Tag as GSOLayer; - GSOTerrain curTerrain = node.Tag as GSOTerrain; - if (curLayer != null) - { - curLayer.Visible = bChecked; - } - else if (curTerrain != null) - { - curTerrain.Visible = bChecked; - } - } - } - // 递归处理子节点 - for (int i = 0; i < node.Nodes.Count; i++) - { - node.Nodes[i].Checked = bChecked; - CheckChildTreeNode(node.Nodes[i], bChecked); - } - } + /// /// 标注管理、传感器管理 目录树中的feature节点的右键菜单中的 删除 菜单 /// @@ -5903,7 +5837,7 @@ frmModify = new FrmMnModify(globeControl1, shlayername, shresultLists); - if (boolfrmModify != false) return; + if (boolfrmModify) return; frmModify.Owner = this; frmModify.Location = new Point(Width - frmModify.Width - 10, Height - frmModify.Height - 50); frmModify.Show(); @@ -6445,8 +6379,8 @@ GSOFeatures selectFeatures = new GSOFeatures(); for (int i = 0; i < globeControl1.Globe.SelObjectCount; i++) { - GSOFeature feature = null; - GSOLayer layer = null; + GSOFeature feature; + GSOLayer layer; globeControl1.Globe.GetSelectObject(i, out feature, out layer); if (feature != null && feature.Geometry != null && feature.Geometry.Type == EnumGeometryType.GeoPolyline3D) { @@ -6454,11 +6388,9 @@ } } List feats = SectionAnalysisTool.ZDMAnalysis(selectFeatures); - if (feats != null && feats.Count >= 1) - { - FrmProfileAnalysis frm = new FrmProfileAnalysis(globeControl1, feats); - frm.Show(this); - } + if (feats == null || feats.Count < 1) return; + FrmProfileAnalysis frm = new FrmProfileAnalysis(globeControl1, feats); + frm.Show(this); } /// /// 道路断面分析 @@ -6975,14 +6907,14 @@ /// private void buttonItemSZ1_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -6993,17 +6925,17 @@ /// /// 管径标注 /// - GSOFeature radiusMarkerFeature; +// GSOFeature radiusMarkerFeature; private void buttonItemBZ2_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine==null||selLine[0].Count <= 1)//wxl增加为空判断,下面方法同理 + if (selLine == null || selLine[0].Count <= 1) //wxl增加为空判断,下面方法同理 { return; } @@ -7018,14 +6950,14 @@ /// private void buttonItemBZ3_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null||selLine[0].Count <= 1) { return; } @@ -7041,14 +6973,14 @@ /// private void buttonItemBZ4_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -7058,7 +6990,7 @@ /// /// 距离标注 /// - bool distanceMarker; +// bool distanceMarker; private void buttonItemBZ5_Click(object sender, EventArgs e) { //日志记录 @@ -7066,7 +6998,7 @@ globeControl1.Globe.Action = EnumAction3D.TrackPolyline; //globeControl1.Globe.DistanceRuler.MeasureMode = EnumDistanceMeasureMode.HVSLineMeasure; - distanceMarker = true; +// distanceMarker = true; } /// /// 自定义标注 @@ -7105,14 +7037,14 @@ /// private void buttonItemBZ8_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -7688,11 +7620,9 @@ if (frm.ShowDialog() == DialogResult.OK) { GSOLayer featureAddLayer = TreeNodeFeatureLayer(); - if (featureAddLayer != null) - { - FrmAddInstrument dlg = new FrmAddInstrument(globeControl1, featureAddLayer); - dlg.Show(this); - } + if (featureAddLayer == null) return; + FrmAddInstrument dlg = new FrmAddInstrument(globeControl1, featureAddLayer); + dlg.Show(this); } } /// @@ -7735,11 +7665,9 @@ frm.citySevenLineType); globeControl1.Tag = citySevenLine; GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(frm.citySevenLineType); - if (layer != null) - { - globeControl1.Globe.DestLayerFeatureAdd = layer; - layer.Editable = true; - } + if (layer == null) return; + globeControl1.Globe.DestLayerFeatureAdd = layer; + layer.Editable = true; } } #endregion @@ -7899,44 +7827,45 @@ LogManager.saveLog(Utility.userName, buttonItemBJ10_2.Text); List listVectorNames = new List(); - for (int i = 0; i < Utility.m_PipelineLayerNames.Count; i++) + foreach (string pipeline in Utility.m_PipelineLayerNames) { - if (!listVectorNames.Contains(Utility.m_PipelineLayerNames[i])) + if (!listVectorNames.Contains(pipeline)) { - listVectorNames.Add(Utility.m_PipelineLayerNames[i]); + listVectorNames.Add(pipeline); } } - for (int i = 0; i < Utility.valueLayerNames.Count; i++) + foreach (string valve in Utility.valueLayerNames) { - if (!listVectorNames.Contains(Utility.valueLayerNames[i])) + if (!listVectorNames.Contains(valve)) { - listVectorNames.Add(Utility.valueLayerNames[i]); + listVectorNames.Add(valve); } } - for (int i = 0; i < Utility.workwellLayerNames.Count; i++) + foreach (string workwell in Utility.workwellLayerNames) { - if (!listVectorNames.Contains(Utility.workwellLayerNames[i])) + if (!listVectorNames.Contains(workwell)) { - listVectorNames.Add(Utility.workwellLayerNames[i]); + listVectorNames.Add(workwell); } } - for (int i = 0; i < Utility.instrumenLayerNames.Count; i++) + foreach (string instrument in Utility.instrumenLayerNames) { - if (!listVectorNames.Contains(Utility.instrumenLayerNames[i])) + if (!listVectorNames.Contains(instrument)) { - listVectorNames.Add(Utility.instrumenLayerNames[i]); + listVectorNames.Add(instrument); } } - for (int i = 0; i < Utility.pipefittingLayerNames.Count; i++) + foreach (string pipefitting in Utility.pipefittingLayerNames) { - if (!listVectorNames.Contains(Utility.pipefittingLayerNames[i])) + if (!listVectorNames.Contains(pipefitting)) { - listVectorNames.Add(Utility.pipefittingLayerNames[i]); + listVectorNames.Add(pipefitting); } } FrmExportVector frm = new FrmExportVector(globeControl1, listVectorNames); frm.ShowDialog(); } + /// /// 删除模型 /// @@ -7945,27 +7874,25 @@ private void buttonItemBJ13_Click(object sender, EventArgs e) { LogManager.saveLog(Utility.userName, buttonItemBJ13.Text); - if (globeControl1.Globe.SelObjectCount > 0) - { - for (int i = 0; i < globeControl1.Globe.SelObjectCount; i++) - { - GSOFeature f = null; - GSOLayer layer = null; - globeControl1.Globe.GetSelectObject(i, out f, out layer); - if (f == null) continue; - f.Delete(); - if (layer != null) - globeControl1.Globe.AddToEditHistroy(layer, f, EnumEditType.Delete); - globeControl1.Refresh(); - - } - MessageBox.Show("删除成功!", "提示"); - } - else + var selObjCount = globeControl1.Globe.SelObjectCount; + if (selObjCount == 0) { MessageBox.Show("请选中要删除的模型!", "提示"); + return; } + for (int i = 0; i < selObjCount; i++) + { + GSOFeature f; + GSOLayer layer; + globeControl1.Globe.GetSelectObject(i, out f, out layer); + if (f == null) continue; + f.Delete(); + if (layer != null) + globeControl1.Globe.AddToEditHistroy(layer, f, EnumEditType.Delete); + globeControl1.Refresh(); + } + MessageBox.Show("删除成功!", "提示"); globeControl1.Globe.Action = EnumAction3D.ActionNull; } @@ -8031,6 +7958,7 @@ toolStripNumbers.Text = "红线审核 |共有:" + table.Rows.Count + "条"; toolStripDropDownButton3.Visible = true; } + /// /// 主窗体 下方的工具条中的 导出.xls文件 按钮事件处理 /// @@ -8040,24 +7968,28 @@ { if (dataGridViewX1.Rows.Count != 0) { - string strSaveFile = string.Empty; - SaveFileDialog savefiledialog = new SaveFileDialog(); - savefiledialog.Filter = "Excel文件|*.xls,*.xlsx"; - savefiledialog.AddExtension = true; - savefiledialog.FileName = "红线审核"; - if (savefiledialog.ShowDialog() == DialogResult.OK) - strSaveFile = savefiledialog.FileName; - else return; - - ExpEXCEL.ExpToExcel(dataGridViewX1, strSaveFile, "红线审核", lineStruct, featsList); - MessageBox.Show("导出成功!"); - } - else - { MessageBox.Show("表格内容为空!", "提示"); + return; } + string strSaveFile; + SaveFileDialog savefiledialog = new SaveFileDialog(); + savefiledialog.Filter = "Excel文件|*.xls,*.xlsx"; + savefiledialog.AddExtension = true; + savefiledialog.FileName = "红线审核"; + if (savefiledialog.ShowDialog() == DialogResult.OK) + strSaveFile = savefiledialog.FileName; + else return; + + ExpEXCEL.ExpToExcel(dataGridViewX1, strSaveFile, "红线审核", lineStruct, featsList); + MessageBox.Show("导出成功!"); + } + /// + /// 双屏对比的地面透明度设置 + /// + /// + /// private void sliderItem2_ValueChanged(object sender, EventArgs e) { LogManager.saveLog(Utility.userName, sliderItem2.Text); @@ -8068,7 +8000,7 @@ { layer.Opaque = 100 - sliderItem2.Value; } - layer = globeControl2.Globe.Layers.GetLayerByCaption("180fd");//("180fd"); + layer = globeControl2.Globe.Layers.GetLayerByCaption(Utility.roadLayerName);//("180fd"); if (layer != null) { layer.Opaque = 100 - sliderItem2.Value; @@ -8832,11 +8764,9 @@ } private void pictureBox1_Paint(object sender, PaintEventArgs e) - { - int Width = this.Width; + { string welcomeUser = "欢迎您:" + Utility.userName; - Graphics g = e.Graphics; - g.DrawString(welcomeUser, new Font("宋体", 12), new SolidBrush(Color.Black), Width - 180, 50); + e.Graphics.DrawString(welcomeUser, new Font("宋体", 12), new SolidBrush(Color.Black), Width - 180, 50); } } diff --git a/TreeUtils.cs b/TreeUtils.cs index 9f4f744..68c8b1d 100644 --- a/TreeUtils.cs +++ b/TreeUtils.cs @@ -10,12 +10,12 @@ public class TreeUtils { /// - /// 构造tree,最多解析三层,若地球存在,则只构造指定地球上图层已存在的树节点,若地球不存在,则构造全部 + /// 构造图层tree,最多解析三层,若地球存在,则只构造指定地球上图层已存在的树节点,若地球不存在,则构造全部 /// /// 所属地球 /// 要加载的树 /// 数据来源,实测数据/施工数据/规划数据/红线数据,为空则展示全部 - public static void InitTree(GSOGlobeControl gsoGlobeControl, TreeView treeView, string viewDatasrc) + public static void InitLayerTree(GSOGlobeControl gsoGlobeControl, TreeView treeView, string viewDatasrc) { // treeView.Nodes.Clear(); LayerConfig layerConfig = Utility.layerConfig; diff --git a/Utility.cs b/Utility.cs index 68c90d1..f7aa6b7 100644 --- a/Utility.cs +++ b/Utility.cs @@ -228,30 +228,30 @@ LayerLabel_LayerIDs = new Hashtable(); if (File.Exists(filename)) { - XmlTextReader XmlReader = new XmlTextReader(filename); + XmlTextReader xmlReader = new XmlTextReader(filename); try { - while (XmlReader.Read()) + while (xmlReader.Read()) { - if (XmlReader.Name == "database") + if (xmlReader.Name == "database") { - dbdatabase = XmlReader.ReadElementString(); + dbdatabase = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "dbpassword") + else if (xmlReader.Name == "dbpassword") { - DBPassword = XmlReader.ReadElementString(); + DBPassword = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "user") + else if (xmlReader.Name == "user") { - userID = XmlReader.ReadElementString(); + userID = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "locaserverip") + else if (xmlReader.Name == "locaserverip") { - serverip = XmlReader.ReadElementString(); + serverip = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "locaserverport") + else if (xmlReader.Name == "locaserverport") { - serverport = Convert.ToInt32(XmlReader.ReadElementString()); + serverport = Convert.ToInt32(xmlReader.ReadElementString()); } //else if (XmlReader.Name == "localicenseserverip") //{ @@ -261,102 +261,51 @@ //{ // Utility.localicenseserverport = Convert.ToInt32(XmlReader.ReadElementString()); //} - else if (XmlReader.Name == "dbbackuppath") + else if (xmlReader.Name == "dbbackuppath") { - DBBackUp = XmlReader.ReadElementString(); + DBBackUp = xmlReader.ReadElementString(); } -// else if (XmlReader.Name == "layerchild") -// { -// var layername = XmlReader["layer"].Trim(); -// var label = XmlReader["label"].Trim(); -// var type = XmlReader["type"].Trim(); -// -// LayerChild child = new LayerChild(); -// child.attriLabel = label; -// child.attriLayer =layername; -// child.attriType = type; -// LayerChilds.Add(child); -// LayerLabels.Add(label); -// LayerNames.Add(layername); -// -// dictionaryNetLayerNameAndCaption.Add(layername, label); -// -// if (layername.EndsWith("管线")) -// { -// LayerNamesList.Add(layername.Substring(0, layername.Length - 2)); -// } -// if (!type.Equals("db")) -// { -// if (XmlReader["isRoad"] != null) -// { -// roadLayerName = label; -// } -// }else if (XmlReader["isPipeLine"] != null) -// { -// m_PipelineLayerNames.Add(label); -// } -// else if (XmlReader["isWorkWell"] != null) -// { -// workwellLayerNames.Add(label); -// } -// else if (XmlReader["isValve"] != null) -// { -// valueLayerNames.Add(label); -// } -// else if (XmlReader["isAccess"] != null) -// { -// instrumenLayerNames.Add(label); -// } -// else if (XmlReader["isCharacter"] != null) -// { -// pipefittingLayerNames.Add(label); -// } -// else if (XmlReader["isSgData"] != null) -// { -// sgPipeLayersNames.Add(label); -// } -// } - else if (XmlReader.Name == "Terrain") + else if (xmlReader.Name == "Terrain") { - TerrainsName.Add(XmlReader.ReadElementString()); + TerrainsName.Add(xmlReader.ReadElementString()); } - else if (XmlReader.Name == "dbserver") + else if (xmlReader.Name == "dbserver") { - DBServer = XmlReader.ReadElementString(); + DBServer = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "rooturl") + else if (xmlReader.Name == "rooturl") { - PicRootURL = XmlReader.ReadElementString(); + PicRootURL = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "defaultimgurl") + else if (xmlReader.Name == "defaultimgurl") { - PicDefaultURL = XmlReader.ReadElementString(); + PicDefaultURL = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "queryfield") + else if (xmlReader.Name == "queryfield") { - Query_Fields.Add(XmlReader["label"], XmlReader.ReadElementString()); + Query_Fields.Add(xmlReader["label"], xmlReader.ReadElementString()); } - else if (XmlReader.Name == "location") + else if (xmlReader.Name == "location") { - Query_Roads.Add(XmlReader["label"], XmlReader.ReadElementString()); + Query_Roads.Add(xmlReader["label"], xmlReader.ReadElementString()); } - else if (XmlReader.Name == "pipelineCode") + else if (xmlReader.Name == "pipelineCode") { - Pipe_Code.Add(XmlReader["label"], XmlReader.ReadElementString()); + Pipe_Code.Add(xmlReader["label"], xmlReader.ReadElementString()); } - else if (XmlReader.Name == "projectStr") + else if (xmlReader.Name == "projectStr") { - projectStr = XmlReader.ReadElementString(); + projectStr = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "backupserverurl") + else if (xmlReader.Name == "backupserverurl") { - backupurl = XmlReader.ReadElementString(); + backupurl = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "backuppath") + else if (xmlReader.Name == "backuppath") { - backuppath = XmlReader.ReadElementString(); + backuppath = xmlReader.ReadElementString(); } //else if (XmlReader.Name == "uploadpath") //{ @@ -366,41 +315,41 @@ //{ // Utility.udserviceurl = XmlReader.ReadElementString(); //} - else if (XmlReader.Name == "pipelinetype") + else if (xmlReader.Name == "pipelinetype") { - pipelinetype = XmlReader.ReadElementString(); + pipelinetype = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbip") + else if (xmlReader.Name == "shdbip") { - sgdbip = XmlReader.ReadElementString(); + sgdbip = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbname") + else if (xmlReader.Name == "shdbname") { - sgdbname = XmlReader.ReadElementString(); + sgdbname = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbuser") + else if (xmlReader.Name == "shdbuser") { - sgdbuser = XmlReader.ReadElementString(); + sgdbuser = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbpwd") + else if (xmlReader.Name == "shdbpwd") { - sgdbpwd = XmlReader.ReadElementString(); + sgdbpwd = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbip") + else if (xmlReader.Name == "ghdbip") { - ghdbip = XmlReader.ReadElementString(); + ghdbip = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbname") + else if (xmlReader.Name == "ghdbname") { - ghdbname = XmlReader.ReadElementString(); + ghdbname = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbuser") + else if (xmlReader.Name == "ghdbuser") { - ghdbuser = XmlReader.ReadElementString(); + ghdbuser = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbpwd") + else if (xmlReader.Name == "ghdbpwd") { - ghdbpwd = XmlReader.ReadElementString(); + ghdbpwd = xmlReader.ReadElementString(); } } } @@ -410,7 +359,7 @@ } finally { - XmlReader.Close(); + xmlReader.Close(); } } else @@ -458,11 +407,12 @@ { sgPipeLayersNames.Add(layer.label); } -// else if (layer.flag.Equals("")) + //配置文件中不存在workwell和valve的,不起作用 +// else if (layer.flag.Equals("workwell")) // { // workwellLayerNames.Add(layer.label); // } -// else if (layer.flag.Equals("")) +// else if (layer.flag.Equals("valve")) // { // valueLayerNames.Add(layer.label); // } diff --git a/Cyberpipe.suo b/Cyberpipe.suo index e88befb..44957ec 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs index 53946c0..fe32265 100644 --- a/FeatureStatisticsService.cs +++ b/FeatureStatisticsService.cs @@ -4,7 +4,7 @@ using GeoScene.Globe; namespace Cyberpipe -{ +{ //本类作用为:辅助GlobalControl上Feature的统计分析工具类 class FeatureStatisticsService { /// @@ -60,8 +60,8 @@ /// /// /// - /// - /// + /// + /// /// /// public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName) @@ -74,6 +74,7 @@ for (int i = 0; i < features.Length; i++) { GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D; + if (line == null) continue; double length = line.GetSpaceLength(true, 6378137); totalLength += length; ncount += 1; @@ -114,7 +115,7 @@ for (int i = 0; i < feats.Length; i++) { double radius = feats[i].GetFieldAsDouble(fieldName); - if (radius >= min && radius <= max) + if (radius >= minValue && radius <= maxValue) { result.Add(feats[i]); } @@ -148,23 +149,22 @@ lstDiameter.Sort(); if (lstDiameter.Count > 0) { - for (int m = 0; m < lstDiameter.Count; m++) + foreach (float diameter in lstDiameter) { double totalLength = 0.00; int ncount = 0; for (int j = 0; j < feats.Length; j++) { - if (feats[j].GetFieldAsFloat("管径_毫米") == lstDiameter[m]) - { - GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; - double length = line.GetSpaceLength(true, 6378137); - totalLength += length; - ncount += 1; - } + if (Math.Abs(feats[j].GetFieldAsFloat("管径_毫米") - diameter) > 0.00001) continue; + GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; + if (line == null) continue; + double length = line.GetSpaceLength(true, 6378137); + totalLength += length; + ncount += 1; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); featuresClass.layerName = layer.Caption; - featuresClass.groupFieldValue = lstDiameter[m].ToString(); + featuresClass.groupFieldValue = diameter.ToString(); featuresClass.ncount = ncount; featuresClass.sum = Math.Round(totalLength, 2); @@ -191,13 +191,13 @@ //layer.Name是表名 string[] accessStrs = Utility.getAccStrsByLayer(layer.Name); - for (int j = 0; j < accessStrs.Length; j++) + foreach (string accssname in accessStrs) { - GSOFeatures feats = null; - int ncount = 0; + GSOFeatures feats; + int ncount; if (polygon == null) { - feats = flayer.GetFeatureByFieldValue("附属物名称", accessStrs[j], true); + feats = flayer.GetFeatureByFieldValue("附属物名称", accssname, true); ncount = feats.Length; } else @@ -207,14 +207,14 @@ //过滤 for (int n = 0; n < feats.Length; n++) { - if (feats[n].GetFieldAsString("附属物名称").Contains(accessStrs[j])) newfeats.Add(feats[n]); + if (feats[n].GetFieldAsString("附属物名称").Contains(accssname)) newfeats.Add(feats[n]); } ncount = newfeats.Length; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); - featuresClass.layerName = accessStrs[j]; + featuresClass.layerName = accssname; featuresClass.ncount = ncount; result.Add(featuresClass); @@ -303,6 +303,26 @@ if (layer == null) return null; GSOFeatureLayer flayer = layer as GSOFeatureLayer; return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false); - } + } + + + /// + /// 获取globeControl上选中的管线,如果返回空则没有选中的管线 + /// + /// 地球引擎 + /// 返回一根线 + public static GSOFeature GetSelectedPipeline(GSOGlobeControl globeControl) + { + GSOFeature resFeature; + if (globeControl.Globe.SelObjectCount < 1) return null; + GSOLayer resLayer; + globeControl.Globe.GetSelectObject(0, out resFeature, out resLayer); + if (resFeature == null) return null; + + GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; + if (line1 == null) return null; + GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; + return pipeStyle1 == null ? null : resFeature; + } } } diff --git a/FrmHotFuncStat.cs b/FrmHotFuncStat.cs index 84131ef..f313b20 100644 --- a/FrmHotFuncStat.cs +++ b/FrmHotFuncStat.cs @@ -58,14 +58,11 @@ DataTable table = OledbHelper.QueryTable(sql); - if (table != null) + if (table == null) return; + for (int i = 0; i < table.Rows.Count; i++) { - for (int i = 0; i < table.Rows.Count; i++) - { - userLists.Items.Add(table.Rows[i][0].ToString()); - } + userLists.Items.Add(table.Rows[i][0].ToString()); } - } //统计结果 private void statBtn_Click(object sender, EventArgs e) diff --git a/FrmLayerControl.cs b/FrmLayerControl.cs index 6ebb807..8fbce97 100644 --- a/FrmLayerControl.cs +++ b/FrmLayerControl.cs @@ -103,8 +103,8 @@ { layerTree1.Nodes.Clear(); layerTree2.Nodes.Clear(); - TreeUtils.InitTree(globeControl1, layerTree1, "实测数据"); - TreeUtils.InitTree(globeControl2, layerTree2, "施工数据"); + TreeUtils.InitLayerTree(globeControl1, layerTree1, "实测数据"); + TreeUtils.InitLayerTree(globeControl2, layerTree2, "施工数据"); } #region wxl重构树形结构代码 diff --git a/FrmMetadata.cs b/FrmMetadata.cs index e46fa2f..bb7c46c 100644 --- a/FrmMetadata.cs +++ b/FrmMetadata.cs @@ -29,7 +29,7 @@ // tv.ImageList = imageList1; tv.ShowLines = true; tv.CheckBoxes = false; - TreeUtils.InitTree(null, tv, null); + TreeUtils.InitLayerTree(null, tv, null); } /// /// 点击父节点则展开,点击子节点则编辑元数据 diff --git a/MainFrm.cs b/MainFrm.cs index c4a1292..61de352 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -1263,7 +1263,7 @@ layerManagerNode.Tag = layerTemp; layerTree.Nodes.Add(layerManagerNode); - TreeUtils.InitTree(globeControl1, layerTree, null); + TreeUtils.InitLayerTree(globeControl1, layerTree, null); } @@ -3183,7 +3183,6 @@ { TreeNode node = layerNodeContexMenu.Tag as TreeNode; - Int32 nIndex = node.Index; string layerCaption = node.Tag.ToString().Split('|')[1]; GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); layer.Dataset.Save(); @@ -3368,7 +3367,6 @@ return; GSOFeatureLayer flayer = layer as GSOFeatureLayer; - GSOFeatureDataset fdataset = flayer.Dataset as GSOFeatureDataset; GSOFeatures feats = flayer.GetAllFeatures(); for (int i = 0; i < feats.Length; i++) { @@ -3393,7 +3391,6 @@ return; GSOFeatureLayer flayer = layer as GSOFeatureLayer; - GSOFeatureDataset fdataset = flayer.Dataset as GSOFeatureDataset; GSOFeatures feats = flayer.GetAllFeatures(); for (int i = 0; i < feats.Length; i++) { @@ -5421,7 +5418,6 @@ private void addNodeToLayerManagerNode(GSOLayer layer) { if (layer == null) return; - GSODataset dataset = layer.Dataset; CheckDatasetGeoReference(layer.Dataset, ""); TreeNode node = new TreeNode(); @@ -5440,43 +5436,24 @@ /// /// /// - public int getLabelName(GSOLayer layer) - { - int nid = -1; - if (layer.GetAllFeatures().Length > 0) - { - string id = layer.GetAllFeatures()[layer.GetAllFeatures().Length - 1].Name; +// public int getLabelName(GSOLayer layer) +// { +// int nid = -1; +// if (layer.GetAllFeatures().Length > 0) +// { +// string id = layer.GetAllFeatures()[layer.GetAllFeatures().Length - 1].Name; +// +// int.TryParse(id, out nid); +// } +// else +// { +// nid = 0; +// } +// return nid; +// } - int.TryParse(id, out nid); - } - else - { - nid = 0; - } - return nid; - } /// - /// 判断选中的对象是否为管线 - /// - /// 被选中管线 - /// 返回一根线 - private GSOFeature IsPipeLineOfSelectedObj() - { - GSOFeature resFeature = null; - if (globeControl1.Globe.SelObjectCount < 1) return null; - GSOLayer resLayer = null; - globeControl1.Globe.GetSelectObject(0, out resFeature, out resLayer); - if (resFeature == null) return null; - - GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; - if (line1 == null) return null; - GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; - if (pipeStyle1 == null) return null; - - return resFeature; - } - /// /// 图层节点树中 节点 右键单击事件处理 /// /// @@ -5528,7 +5505,6 @@ { TreeNode node = contextMenuStrip2.Tag as TreeNode; TreeNode parentNode = node.Parent; - Int32 nIndex = node.Index; if (parentNode.Text == "标注管理" || parentNode.Text == "传感器管理") { @@ -5579,53 +5555,11 @@ { if (e.Action != TreeViewAction.Unknown) { - CheckTreeNode(e.Node, e.Node.Checked); + //wxl优化标注管理树形结构 + TreeUtils.TreeNodeCheckedChange(globeControl1,e.Node); } } - /// - /// 改变指定节点对应的复选框的选中状态 - /// - /// - /// - private void CheckTreeNode(TreeNode node, Boolean bChecked) - { - CheckChildTreeNode(node, bChecked); - globeControl1.Globe.Refresh(); - } - /// - /// 改变指定节点的子节点对应的复选框的选中状态 - /// - /// - /// - private void CheckChildTreeNode(TreeNode node, Boolean bChecked) - { - if (node == null) - return; - if (node.Tag != null) - { - if (node.Tag.GetType() == typeof(GSOFeatureFolder) || node.Tag.GetType() == typeof(GSOFeature)) - ((GSOFeature)node.Tag).SetVisibleDirectly(bChecked); - else - { - GSOLayer curLayer = node.Tag as GSOLayer; - GSOTerrain curTerrain = node.Tag as GSOTerrain; - if (curLayer != null) - { - curLayer.Visible = bChecked; - } - else if (curTerrain != null) - { - curTerrain.Visible = bChecked; - } - } - } - // 递归处理子节点 - for (int i = 0; i < node.Nodes.Count; i++) - { - node.Nodes[i].Checked = bChecked; - CheckChildTreeNode(node.Nodes[i], bChecked); - } - } + /// /// 标注管理、传感器管理 目录树中的feature节点的右键菜单中的 删除 菜单 /// @@ -5903,7 +5837,7 @@ frmModify = new FrmMnModify(globeControl1, shlayername, shresultLists); - if (boolfrmModify != false) return; + if (boolfrmModify) return; frmModify.Owner = this; frmModify.Location = new Point(Width - frmModify.Width - 10, Height - frmModify.Height - 50); frmModify.Show(); @@ -6445,8 +6379,8 @@ GSOFeatures selectFeatures = new GSOFeatures(); for (int i = 0; i < globeControl1.Globe.SelObjectCount; i++) { - GSOFeature feature = null; - GSOLayer layer = null; + GSOFeature feature; + GSOLayer layer; globeControl1.Globe.GetSelectObject(i, out feature, out layer); if (feature != null && feature.Geometry != null && feature.Geometry.Type == EnumGeometryType.GeoPolyline3D) { @@ -6454,11 +6388,9 @@ } } List feats = SectionAnalysisTool.ZDMAnalysis(selectFeatures); - if (feats != null && feats.Count >= 1) - { - FrmProfileAnalysis frm = new FrmProfileAnalysis(globeControl1, feats); - frm.Show(this); - } + if (feats == null || feats.Count < 1) return; + FrmProfileAnalysis frm = new FrmProfileAnalysis(globeControl1, feats); + frm.Show(this); } /// /// 道路断面分析 @@ -6975,14 +6907,14 @@ /// private void buttonItemSZ1_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -6993,17 +6925,17 @@ /// /// 管径标注 /// - GSOFeature radiusMarkerFeature; +// GSOFeature radiusMarkerFeature; private void buttonItemBZ2_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine==null||selLine[0].Count <= 1)//wxl增加为空判断,下面方法同理 + if (selLine == null || selLine[0].Count <= 1) //wxl增加为空判断,下面方法同理 { return; } @@ -7018,14 +6950,14 @@ /// private void buttonItemBZ3_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null||selLine[0].Count <= 1) { return; } @@ -7041,14 +6973,14 @@ /// private void buttonItemBZ4_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -7058,7 +6990,7 @@ /// /// 距离标注 /// - bool distanceMarker; +// bool distanceMarker; private void buttonItemBZ5_Click(object sender, EventArgs e) { //日志记录 @@ -7066,7 +6998,7 @@ globeControl1.Globe.Action = EnumAction3D.TrackPolyline; //globeControl1.Globe.DistanceRuler.MeasureMode = EnumDistanceMeasureMode.HVSLineMeasure; - distanceMarker = true; +// distanceMarker = true; } /// /// 自定义标注 @@ -7105,14 +7037,14 @@ /// private void buttonItemBZ8_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -7688,11 +7620,9 @@ if (frm.ShowDialog() == DialogResult.OK) { GSOLayer featureAddLayer = TreeNodeFeatureLayer(); - if (featureAddLayer != null) - { - FrmAddInstrument dlg = new FrmAddInstrument(globeControl1, featureAddLayer); - dlg.Show(this); - } + if (featureAddLayer == null) return; + FrmAddInstrument dlg = new FrmAddInstrument(globeControl1, featureAddLayer); + dlg.Show(this); } } /// @@ -7735,11 +7665,9 @@ frm.citySevenLineType); globeControl1.Tag = citySevenLine; GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(frm.citySevenLineType); - if (layer != null) - { - globeControl1.Globe.DestLayerFeatureAdd = layer; - layer.Editable = true; - } + if (layer == null) return; + globeControl1.Globe.DestLayerFeatureAdd = layer; + layer.Editable = true; } } #endregion @@ -7899,44 +7827,45 @@ LogManager.saveLog(Utility.userName, buttonItemBJ10_2.Text); List listVectorNames = new List(); - for (int i = 0; i < Utility.m_PipelineLayerNames.Count; i++) + foreach (string pipeline in Utility.m_PipelineLayerNames) { - if (!listVectorNames.Contains(Utility.m_PipelineLayerNames[i])) + if (!listVectorNames.Contains(pipeline)) { - listVectorNames.Add(Utility.m_PipelineLayerNames[i]); + listVectorNames.Add(pipeline); } } - for (int i = 0; i < Utility.valueLayerNames.Count; i++) + foreach (string valve in Utility.valueLayerNames) { - if (!listVectorNames.Contains(Utility.valueLayerNames[i])) + if (!listVectorNames.Contains(valve)) { - listVectorNames.Add(Utility.valueLayerNames[i]); + listVectorNames.Add(valve); } } - for (int i = 0; i < Utility.workwellLayerNames.Count; i++) + foreach (string workwell in Utility.workwellLayerNames) { - if (!listVectorNames.Contains(Utility.workwellLayerNames[i])) + if (!listVectorNames.Contains(workwell)) { - listVectorNames.Add(Utility.workwellLayerNames[i]); + listVectorNames.Add(workwell); } } - for (int i = 0; i < Utility.instrumenLayerNames.Count; i++) + foreach (string instrument in Utility.instrumenLayerNames) { - if (!listVectorNames.Contains(Utility.instrumenLayerNames[i])) + if (!listVectorNames.Contains(instrument)) { - listVectorNames.Add(Utility.instrumenLayerNames[i]); + listVectorNames.Add(instrument); } } - for (int i = 0; i < Utility.pipefittingLayerNames.Count; i++) + foreach (string pipefitting in Utility.pipefittingLayerNames) { - if (!listVectorNames.Contains(Utility.pipefittingLayerNames[i])) + if (!listVectorNames.Contains(pipefitting)) { - listVectorNames.Add(Utility.pipefittingLayerNames[i]); + listVectorNames.Add(pipefitting); } } FrmExportVector frm = new FrmExportVector(globeControl1, listVectorNames); frm.ShowDialog(); } + /// /// 删除模型 /// @@ -7945,27 +7874,25 @@ private void buttonItemBJ13_Click(object sender, EventArgs e) { LogManager.saveLog(Utility.userName, buttonItemBJ13.Text); - if (globeControl1.Globe.SelObjectCount > 0) - { - for (int i = 0; i < globeControl1.Globe.SelObjectCount; i++) - { - GSOFeature f = null; - GSOLayer layer = null; - globeControl1.Globe.GetSelectObject(i, out f, out layer); - if (f == null) continue; - f.Delete(); - if (layer != null) - globeControl1.Globe.AddToEditHistroy(layer, f, EnumEditType.Delete); - globeControl1.Refresh(); - - } - MessageBox.Show("删除成功!", "提示"); - } - else + var selObjCount = globeControl1.Globe.SelObjectCount; + if (selObjCount == 0) { MessageBox.Show("请选中要删除的模型!", "提示"); + return; } + for (int i = 0; i < selObjCount; i++) + { + GSOFeature f; + GSOLayer layer; + globeControl1.Globe.GetSelectObject(i, out f, out layer); + if (f == null) continue; + f.Delete(); + if (layer != null) + globeControl1.Globe.AddToEditHistroy(layer, f, EnumEditType.Delete); + globeControl1.Refresh(); + } + MessageBox.Show("删除成功!", "提示"); globeControl1.Globe.Action = EnumAction3D.ActionNull; } @@ -8031,6 +7958,7 @@ toolStripNumbers.Text = "红线审核 |共有:" + table.Rows.Count + "条"; toolStripDropDownButton3.Visible = true; } + /// /// 主窗体 下方的工具条中的 导出.xls文件 按钮事件处理 /// @@ -8040,24 +7968,28 @@ { if (dataGridViewX1.Rows.Count != 0) { - string strSaveFile = string.Empty; - SaveFileDialog savefiledialog = new SaveFileDialog(); - savefiledialog.Filter = "Excel文件|*.xls,*.xlsx"; - savefiledialog.AddExtension = true; - savefiledialog.FileName = "红线审核"; - if (savefiledialog.ShowDialog() == DialogResult.OK) - strSaveFile = savefiledialog.FileName; - else return; - - ExpEXCEL.ExpToExcel(dataGridViewX1, strSaveFile, "红线审核", lineStruct, featsList); - MessageBox.Show("导出成功!"); - } - else - { MessageBox.Show("表格内容为空!", "提示"); + return; } + string strSaveFile; + SaveFileDialog savefiledialog = new SaveFileDialog(); + savefiledialog.Filter = "Excel文件|*.xls,*.xlsx"; + savefiledialog.AddExtension = true; + savefiledialog.FileName = "红线审核"; + if (savefiledialog.ShowDialog() == DialogResult.OK) + strSaveFile = savefiledialog.FileName; + else return; + + ExpEXCEL.ExpToExcel(dataGridViewX1, strSaveFile, "红线审核", lineStruct, featsList); + MessageBox.Show("导出成功!"); + } + /// + /// 双屏对比的地面透明度设置 + /// + /// + /// private void sliderItem2_ValueChanged(object sender, EventArgs e) { LogManager.saveLog(Utility.userName, sliderItem2.Text); @@ -8068,7 +8000,7 @@ { layer.Opaque = 100 - sliderItem2.Value; } - layer = globeControl2.Globe.Layers.GetLayerByCaption("180fd");//("180fd"); + layer = globeControl2.Globe.Layers.GetLayerByCaption(Utility.roadLayerName);//("180fd"); if (layer != null) { layer.Opaque = 100 - sliderItem2.Value; @@ -8832,11 +8764,9 @@ } private void pictureBox1_Paint(object sender, PaintEventArgs e) - { - int Width = this.Width; + { string welcomeUser = "欢迎您:" + Utility.userName; - Graphics g = e.Graphics; - g.DrawString(welcomeUser, new Font("宋体", 12), new SolidBrush(Color.Black), Width - 180, 50); + e.Graphics.DrawString(welcomeUser, new Font("宋体", 12), new SolidBrush(Color.Black), Width - 180, 50); } } diff --git a/TreeUtils.cs b/TreeUtils.cs index 9f4f744..68c8b1d 100644 --- a/TreeUtils.cs +++ b/TreeUtils.cs @@ -10,12 +10,12 @@ public class TreeUtils { /// - /// 构造tree,最多解析三层,若地球存在,则只构造指定地球上图层已存在的树节点,若地球不存在,则构造全部 + /// 构造图层tree,最多解析三层,若地球存在,则只构造指定地球上图层已存在的树节点,若地球不存在,则构造全部 /// /// 所属地球 /// 要加载的树 /// 数据来源,实测数据/施工数据/规划数据/红线数据,为空则展示全部 - public static void InitTree(GSOGlobeControl gsoGlobeControl, TreeView treeView, string viewDatasrc) + public static void InitLayerTree(GSOGlobeControl gsoGlobeControl, TreeView treeView, string viewDatasrc) { // treeView.Nodes.Clear(); LayerConfig layerConfig = Utility.layerConfig; diff --git a/Utility.cs b/Utility.cs index 68c90d1..f7aa6b7 100644 --- a/Utility.cs +++ b/Utility.cs @@ -228,30 +228,30 @@ LayerLabel_LayerIDs = new Hashtable(); if (File.Exists(filename)) { - XmlTextReader XmlReader = new XmlTextReader(filename); + XmlTextReader xmlReader = new XmlTextReader(filename); try { - while (XmlReader.Read()) + while (xmlReader.Read()) { - if (XmlReader.Name == "database") + if (xmlReader.Name == "database") { - dbdatabase = XmlReader.ReadElementString(); + dbdatabase = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "dbpassword") + else if (xmlReader.Name == "dbpassword") { - DBPassword = XmlReader.ReadElementString(); + DBPassword = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "user") + else if (xmlReader.Name == "user") { - userID = XmlReader.ReadElementString(); + userID = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "locaserverip") + else if (xmlReader.Name == "locaserverip") { - serverip = XmlReader.ReadElementString(); + serverip = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "locaserverport") + else if (xmlReader.Name == "locaserverport") { - serverport = Convert.ToInt32(XmlReader.ReadElementString()); + serverport = Convert.ToInt32(xmlReader.ReadElementString()); } //else if (XmlReader.Name == "localicenseserverip") //{ @@ -261,102 +261,51 @@ //{ // Utility.localicenseserverport = Convert.ToInt32(XmlReader.ReadElementString()); //} - else if (XmlReader.Name == "dbbackuppath") + else if (xmlReader.Name == "dbbackuppath") { - DBBackUp = XmlReader.ReadElementString(); + DBBackUp = xmlReader.ReadElementString(); } -// else if (XmlReader.Name == "layerchild") -// { -// var layername = XmlReader["layer"].Trim(); -// var label = XmlReader["label"].Trim(); -// var type = XmlReader["type"].Trim(); -// -// LayerChild child = new LayerChild(); -// child.attriLabel = label; -// child.attriLayer =layername; -// child.attriType = type; -// LayerChilds.Add(child); -// LayerLabels.Add(label); -// LayerNames.Add(layername); -// -// dictionaryNetLayerNameAndCaption.Add(layername, label); -// -// if (layername.EndsWith("管线")) -// { -// LayerNamesList.Add(layername.Substring(0, layername.Length - 2)); -// } -// if (!type.Equals("db")) -// { -// if (XmlReader["isRoad"] != null) -// { -// roadLayerName = label; -// } -// }else if (XmlReader["isPipeLine"] != null) -// { -// m_PipelineLayerNames.Add(label); -// } -// else if (XmlReader["isWorkWell"] != null) -// { -// workwellLayerNames.Add(label); -// } -// else if (XmlReader["isValve"] != null) -// { -// valueLayerNames.Add(label); -// } -// else if (XmlReader["isAccess"] != null) -// { -// instrumenLayerNames.Add(label); -// } -// else if (XmlReader["isCharacter"] != null) -// { -// pipefittingLayerNames.Add(label); -// } -// else if (XmlReader["isSgData"] != null) -// { -// sgPipeLayersNames.Add(label); -// } -// } - else if (XmlReader.Name == "Terrain") + else if (xmlReader.Name == "Terrain") { - TerrainsName.Add(XmlReader.ReadElementString()); + TerrainsName.Add(xmlReader.ReadElementString()); } - else if (XmlReader.Name == "dbserver") + else if (xmlReader.Name == "dbserver") { - DBServer = XmlReader.ReadElementString(); + DBServer = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "rooturl") + else if (xmlReader.Name == "rooturl") { - PicRootURL = XmlReader.ReadElementString(); + PicRootURL = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "defaultimgurl") + else if (xmlReader.Name == "defaultimgurl") { - PicDefaultURL = XmlReader.ReadElementString(); + PicDefaultURL = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "queryfield") + else if (xmlReader.Name == "queryfield") { - Query_Fields.Add(XmlReader["label"], XmlReader.ReadElementString()); + Query_Fields.Add(xmlReader["label"], xmlReader.ReadElementString()); } - else if (XmlReader.Name == "location") + else if (xmlReader.Name == "location") { - Query_Roads.Add(XmlReader["label"], XmlReader.ReadElementString()); + Query_Roads.Add(xmlReader["label"], xmlReader.ReadElementString()); } - else if (XmlReader.Name == "pipelineCode") + else if (xmlReader.Name == "pipelineCode") { - Pipe_Code.Add(XmlReader["label"], XmlReader.ReadElementString()); + Pipe_Code.Add(xmlReader["label"], xmlReader.ReadElementString()); } - else if (XmlReader.Name == "projectStr") + else if (xmlReader.Name == "projectStr") { - projectStr = XmlReader.ReadElementString(); + projectStr = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "backupserverurl") + else if (xmlReader.Name == "backupserverurl") { - backupurl = XmlReader.ReadElementString(); + backupurl = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "backuppath") + else if (xmlReader.Name == "backuppath") { - backuppath = XmlReader.ReadElementString(); + backuppath = xmlReader.ReadElementString(); } //else if (XmlReader.Name == "uploadpath") //{ @@ -366,41 +315,41 @@ //{ // Utility.udserviceurl = XmlReader.ReadElementString(); //} - else if (XmlReader.Name == "pipelinetype") + else if (xmlReader.Name == "pipelinetype") { - pipelinetype = XmlReader.ReadElementString(); + pipelinetype = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbip") + else if (xmlReader.Name == "shdbip") { - sgdbip = XmlReader.ReadElementString(); + sgdbip = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbname") + else if (xmlReader.Name == "shdbname") { - sgdbname = XmlReader.ReadElementString(); + sgdbname = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbuser") + else if (xmlReader.Name == "shdbuser") { - sgdbuser = XmlReader.ReadElementString(); + sgdbuser = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbpwd") + else if (xmlReader.Name == "shdbpwd") { - sgdbpwd = XmlReader.ReadElementString(); + sgdbpwd = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbip") + else if (xmlReader.Name == "ghdbip") { - ghdbip = XmlReader.ReadElementString(); + ghdbip = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbname") + else if (xmlReader.Name == "ghdbname") { - ghdbname = XmlReader.ReadElementString(); + ghdbname = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbuser") + else if (xmlReader.Name == "ghdbuser") { - ghdbuser = XmlReader.ReadElementString(); + ghdbuser = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbpwd") + else if (xmlReader.Name == "ghdbpwd") { - ghdbpwd = XmlReader.ReadElementString(); + ghdbpwd = xmlReader.ReadElementString(); } } } @@ -410,7 +359,7 @@ } finally { - XmlReader.Close(); + xmlReader.Close(); } } else @@ -458,11 +407,12 @@ { sgPipeLayersNames.Add(layer.label); } -// else if (layer.flag.Equals("")) + //配置文件中不存在workwell和valve的,不起作用 +// else if (layer.flag.Equals("workwell")) // { // workwellLayerNames.Add(layer.label); // } -// else if (layer.flag.Equals("")) +// else if (layer.flag.Equals("valve")) // { // valueLayerNames.Add(layer.label); // } diff --git a/bin/x86/Debug/Config.xml b/bin/x86/Debug/Config.xml index 950c0af..b7dafa9 100644 --- a/bin/x86/Debug/Config.xml +++ b/bin/x86/Debug/Config.xml @@ -25,165 +25,6 @@ http://127.0.0.1/Cyberpipe.msi http://127.0.0.1/Config.xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 编号,管线编码,管径_毫米,材质,埋设方式,起始地面高程,起始埋深,终止地面高程,终止埋深,建设年代,使用年限,权属单位,设计单位,设计负责人,施工单位,施工负责人,监理单位,监理负责人,业务负责人,备注 编号,管线编码,管径_毫米,材质,埋设方式,起始地面高程,起始埋深,终止地面高程,终止埋深,建设年代,使用年限,权属单位,设计单位,设计负责人,施工单位,施工负责人,监理单位,监理负责人,业务负责人,备注 diff --git a/Cyberpipe.suo b/Cyberpipe.suo index e88befb..44957ec 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs index 53946c0..fe32265 100644 --- a/FeatureStatisticsService.cs +++ b/FeatureStatisticsService.cs @@ -4,7 +4,7 @@ using GeoScene.Globe; namespace Cyberpipe -{ +{ //本类作用为:辅助GlobalControl上Feature的统计分析工具类 class FeatureStatisticsService { /// @@ -60,8 +60,8 @@ /// /// /// - /// - /// + /// + /// /// /// public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName) @@ -74,6 +74,7 @@ for (int i = 0; i < features.Length; i++) { GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D; + if (line == null) continue; double length = line.GetSpaceLength(true, 6378137); totalLength += length; ncount += 1; @@ -114,7 +115,7 @@ for (int i = 0; i < feats.Length; i++) { double radius = feats[i].GetFieldAsDouble(fieldName); - if (radius >= min && radius <= max) + if (radius >= minValue && radius <= maxValue) { result.Add(feats[i]); } @@ -148,23 +149,22 @@ lstDiameter.Sort(); if (lstDiameter.Count > 0) { - for (int m = 0; m < lstDiameter.Count; m++) + foreach (float diameter in lstDiameter) { double totalLength = 0.00; int ncount = 0; for (int j = 0; j < feats.Length; j++) { - if (feats[j].GetFieldAsFloat("管径_毫米") == lstDiameter[m]) - { - GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; - double length = line.GetSpaceLength(true, 6378137); - totalLength += length; - ncount += 1; - } + if (Math.Abs(feats[j].GetFieldAsFloat("管径_毫米") - diameter) > 0.00001) continue; + GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; + if (line == null) continue; + double length = line.GetSpaceLength(true, 6378137); + totalLength += length; + ncount += 1; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); featuresClass.layerName = layer.Caption; - featuresClass.groupFieldValue = lstDiameter[m].ToString(); + featuresClass.groupFieldValue = diameter.ToString(); featuresClass.ncount = ncount; featuresClass.sum = Math.Round(totalLength, 2); @@ -191,13 +191,13 @@ //layer.Name是表名 string[] accessStrs = Utility.getAccStrsByLayer(layer.Name); - for (int j = 0; j < accessStrs.Length; j++) + foreach (string accssname in accessStrs) { - GSOFeatures feats = null; - int ncount = 0; + GSOFeatures feats; + int ncount; if (polygon == null) { - feats = flayer.GetFeatureByFieldValue("附属物名称", accessStrs[j], true); + feats = flayer.GetFeatureByFieldValue("附属物名称", accssname, true); ncount = feats.Length; } else @@ -207,14 +207,14 @@ //过滤 for (int n = 0; n < feats.Length; n++) { - if (feats[n].GetFieldAsString("附属物名称").Contains(accessStrs[j])) newfeats.Add(feats[n]); + if (feats[n].GetFieldAsString("附属物名称").Contains(accssname)) newfeats.Add(feats[n]); } ncount = newfeats.Length; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); - featuresClass.layerName = accessStrs[j]; + featuresClass.layerName = accssname; featuresClass.ncount = ncount; result.Add(featuresClass); @@ -303,6 +303,26 @@ if (layer == null) return null; GSOFeatureLayer flayer = layer as GSOFeatureLayer; return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false); - } + } + + + /// + /// 获取globeControl上选中的管线,如果返回空则没有选中的管线 + /// + /// 地球引擎 + /// 返回一根线 + public static GSOFeature GetSelectedPipeline(GSOGlobeControl globeControl) + { + GSOFeature resFeature; + if (globeControl.Globe.SelObjectCount < 1) return null; + GSOLayer resLayer; + globeControl.Globe.GetSelectObject(0, out resFeature, out resLayer); + if (resFeature == null) return null; + + GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; + if (line1 == null) return null; + GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; + return pipeStyle1 == null ? null : resFeature; + } } } diff --git a/FrmHotFuncStat.cs b/FrmHotFuncStat.cs index 84131ef..f313b20 100644 --- a/FrmHotFuncStat.cs +++ b/FrmHotFuncStat.cs @@ -58,14 +58,11 @@ DataTable table = OledbHelper.QueryTable(sql); - if (table != null) + if (table == null) return; + for (int i = 0; i < table.Rows.Count; i++) { - for (int i = 0; i < table.Rows.Count; i++) - { - userLists.Items.Add(table.Rows[i][0].ToString()); - } + userLists.Items.Add(table.Rows[i][0].ToString()); } - } //统计结果 private void statBtn_Click(object sender, EventArgs e) diff --git a/FrmLayerControl.cs b/FrmLayerControl.cs index 6ebb807..8fbce97 100644 --- a/FrmLayerControl.cs +++ b/FrmLayerControl.cs @@ -103,8 +103,8 @@ { layerTree1.Nodes.Clear(); layerTree2.Nodes.Clear(); - TreeUtils.InitTree(globeControl1, layerTree1, "实测数据"); - TreeUtils.InitTree(globeControl2, layerTree2, "施工数据"); + TreeUtils.InitLayerTree(globeControl1, layerTree1, "实测数据"); + TreeUtils.InitLayerTree(globeControl2, layerTree2, "施工数据"); } #region wxl重构树形结构代码 diff --git a/FrmMetadata.cs b/FrmMetadata.cs index e46fa2f..bb7c46c 100644 --- a/FrmMetadata.cs +++ b/FrmMetadata.cs @@ -29,7 +29,7 @@ // tv.ImageList = imageList1; tv.ShowLines = true; tv.CheckBoxes = false; - TreeUtils.InitTree(null, tv, null); + TreeUtils.InitLayerTree(null, tv, null); } /// /// 点击父节点则展开,点击子节点则编辑元数据 diff --git a/MainFrm.cs b/MainFrm.cs index c4a1292..61de352 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -1263,7 +1263,7 @@ layerManagerNode.Tag = layerTemp; layerTree.Nodes.Add(layerManagerNode); - TreeUtils.InitTree(globeControl1, layerTree, null); + TreeUtils.InitLayerTree(globeControl1, layerTree, null); } @@ -3183,7 +3183,6 @@ { TreeNode node = layerNodeContexMenu.Tag as TreeNode; - Int32 nIndex = node.Index; string layerCaption = node.Tag.ToString().Split('|')[1]; GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); layer.Dataset.Save(); @@ -3368,7 +3367,6 @@ return; GSOFeatureLayer flayer = layer as GSOFeatureLayer; - GSOFeatureDataset fdataset = flayer.Dataset as GSOFeatureDataset; GSOFeatures feats = flayer.GetAllFeatures(); for (int i = 0; i < feats.Length; i++) { @@ -3393,7 +3391,6 @@ return; GSOFeatureLayer flayer = layer as GSOFeatureLayer; - GSOFeatureDataset fdataset = flayer.Dataset as GSOFeatureDataset; GSOFeatures feats = flayer.GetAllFeatures(); for (int i = 0; i < feats.Length; i++) { @@ -5421,7 +5418,6 @@ private void addNodeToLayerManagerNode(GSOLayer layer) { if (layer == null) return; - GSODataset dataset = layer.Dataset; CheckDatasetGeoReference(layer.Dataset, ""); TreeNode node = new TreeNode(); @@ -5440,43 +5436,24 @@ /// /// /// - public int getLabelName(GSOLayer layer) - { - int nid = -1; - if (layer.GetAllFeatures().Length > 0) - { - string id = layer.GetAllFeatures()[layer.GetAllFeatures().Length - 1].Name; +// public int getLabelName(GSOLayer layer) +// { +// int nid = -1; +// if (layer.GetAllFeatures().Length > 0) +// { +// string id = layer.GetAllFeatures()[layer.GetAllFeatures().Length - 1].Name; +// +// int.TryParse(id, out nid); +// } +// else +// { +// nid = 0; +// } +// return nid; +// } - int.TryParse(id, out nid); - } - else - { - nid = 0; - } - return nid; - } /// - /// 判断选中的对象是否为管线 - /// - /// 被选中管线 - /// 返回一根线 - private GSOFeature IsPipeLineOfSelectedObj() - { - GSOFeature resFeature = null; - if (globeControl1.Globe.SelObjectCount < 1) return null; - GSOLayer resLayer = null; - globeControl1.Globe.GetSelectObject(0, out resFeature, out resLayer); - if (resFeature == null) return null; - - GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; - if (line1 == null) return null; - GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; - if (pipeStyle1 == null) return null; - - return resFeature; - } - /// /// 图层节点树中 节点 右键单击事件处理 /// /// @@ -5528,7 +5505,6 @@ { TreeNode node = contextMenuStrip2.Tag as TreeNode; TreeNode parentNode = node.Parent; - Int32 nIndex = node.Index; if (parentNode.Text == "标注管理" || parentNode.Text == "传感器管理") { @@ -5579,53 +5555,11 @@ { if (e.Action != TreeViewAction.Unknown) { - CheckTreeNode(e.Node, e.Node.Checked); + //wxl优化标注管理树形结构 + TreeUtils.TreeNodeCheckedChange(globeControl1,e.Node); } } - /// - /// 改变指定节点对应的复选框的选中状态 - /// - /// - /// - private void CheckTreeNode(TreeNode node, Boolean bChecked) - { - CheckChildTreeNode(node, bChecked); - globeControl1.Globe.Refresh(); - } - /// - /// 改变指定节点的子节点对应的复选框的选中状态 - /// - /// - /// - private void CheckChildTreeNode(TreeNode node, Boolean bChecked) - { - if (node == null) - return; - if (node.Tag != null) - { - if (node.Tag.GetType() == typeof(GSOFeatureFolder) || node.Tag.GetType() == typeof(GSOFeature)) - ((GSOFeature)node.Tag).SetVisibleDirectly(bChecked); - else - { - GSOLayer curLayer = node.Tag as GSOLayer; - GSOTerrain curTerrain = node.Tag as GSOTerrain; - if (curLayer != null) - { - curLayer.Visible = bChecked; - } - else if (curTerrain != null) - { - curTerrain.Visible = bChecked; - } - } - } - // 递归处理子节点 - for (int i = 0; i < node.Nodes.Count; i++) - { - node.Nodes[i].Checked = bChecked; - CheckChildTreeNode(node.Nodes[i], bChecked); - } - } + /// /// 标注管理、传感器管理 目录树中的feature节点的右键菜单中的 删除 菜单 /// @@ -5903,7 +5837,7 @@ frmModify = new FrmMnModify(globeControl1, shlayername, shresultLists); - if (boolfrmModify != false) return; + if (boolfrmModify) return; frmModify.Owner = this; frmModify.Location = new Point(Width - frmModify.Width - 10, Height - frmModify.Height - 50); frmModify.Show(); @@ -6445,8 +6379,8 @@ GSOFeatures selectFeatures = new GSOFeatures(); for (int i = 0; i < globeControl1.Globe.SelObjectCount; i++) { - GSOFeature feature = null; - GSOLayer layer = null; + GSOFeature feature; + GSOLayer layer; globeControl1.Globe.GetSelectObject(i, out feature, out layer); if (feature != null && feature.Geometry != null && feature.Geometry.Type == EnumGeometryType.GeoPolyline3D) { @@ -6454,11 +6388,9 @@ } } List feats = SectionAnalysisTool.ZDMAnalysis(selectFeatures); - if (feats != null && feats.Count >= 1) - { - FrmProfileAnalysis frm = new FrmProfileAnalysis(globeControl1, feats); - frm.Show(this); - } + if (feats == null || feats.Count < 1) return; + FrmProfileAnalysis frm = new FrmProfileAnalysis(globeControl1, feats); + frm.Show(this); } /// /// 道路断面分析 @@ -6975,14 +6907,14 @@ /// private void buttonItemSZ1_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -6993,17 +6925,17 @@ /// /// 管径标注 /// - GSOFeature radiusMarkerFeature; +// GSOFeature radiusMarkerFeature; private void buttonItemBZ2_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine==null||selLine[0].Count <= 1)//wxl增加为空判断,下面方法同理 + if (selLine == null || selLine[0].Count <= 1) //wxl增加为空判断,下面方法同理 { return; } @@ -7018,14 +6950,14 @@ /// private void buttonItemBZ3_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null||selLine[0].Count <= 1) { return; } @@ -7041,14 +6973,14 @@ /// private void buttonItemBZ4_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -7058,7 +6990,7 @@ /// /// 距离标注 /// - bool distanceMarker; +// bool distanceMarker; private void buttonItemBZ5_Click(object sender, EventArgs e) { //日志记录 @@ -7066,7 +6998,7 @@ globeControl1.Globe.Action = EnumAction3D.TrackPolyline; //globeControl1.Globe.DistanceRuler.MeasureMode = EnumDistanceMeasureMode.HVSLineMeasure; - distanceMarker = true; +// distanceMarker = true; } /// /// 自定义标注 @@ -7105,14 +7037,14 @@ /// private void buttonItemBZ8_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -7688,11 +7620,9 @@ if (frm.ShowDialog() == DialogResult.OK) { GSOLayer featureAddLayer = TreeNodeFeatureLayer(); - if (featureAddLayer != null) - { - FrmAddInstrument dlg = new FrmAddInstrument(globeControl1, featureAddLayer); - dlg.Show(this); - } + if (featureAddLayer == null) return; + FrmAddInstrument dlg = new FrmAddInstrument(globeControl1, featureAddLayer); + dlg.Show(this); } } /// @@ -7735,11 +7665,9 @@ frm.citySevenLineType); globeControl1.Tag = citySevenLine; GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(frm.citySevenLineType); - if (layer != null) - { - globeControl1.Globe.DestLayerFeatureAdd = layer; - layer.Editable = true; - } + if (layer == null) return; + globeControl1.Globe.DestLayerFeatureAdd = layer; + layer.Editable = true; } } #endregion @@ -7899,44 +7827,45 @@ LogManager.saveLog(Utility.userName, buttonItemBJ10_2.Text); List listVectorNames = new List(); - for (int i = 0; i < Utility.m_PipelineLayerNames.Count; i++) + foreach (string pipeline in Utility.m_PipelineLayerNames) { - if (!listVectorNames.Contains(Utility.m_PipelineLayerNames[i])) + if (!listVectorNames.Contains(pipeline)) { - listVectorNames.Add(Utility.m_PipelineLayerNames[i]); + listVectorNames.Add(pipeline); } } - for (int i = 0; i < Utility.valueLayerNames.Count; i++) + foreach (string valve in Utility.valueLayerNames) { - if (!listVectorNames.Contains(Utility.valueLayerNames[i])) + if (!listVectorNames.Contains(valve)) { - listVectorNames.Add(Utility.valueLayerNames[i]); + listVectorNames.Add(valve); } } - for (int i = 0; i < Utility.workwellLayerNames.Count; i++) + foreach (string workwell in Utility.workwellLayerNames) { - if (!listVectorNames.Contains(Utility.workwellLayerNames[i])) + if (!listVectorNames.Contains(workwell)) { - listVectorNames.Add(Utility.workwellLayerNames[i]); + listVectorNames.Add(workwell); } } - for (int i = 0; i < Utility.instrumenLayerNames.Count; i++) + foreach (string instrument in Utility.instrumenLayerNames) { - if (!listVectorNames.Contains(Utility.instrumenLayerNames[i])) + if (!listVectorNames.Contains(instrument)) { - listVectorNames.Add(Utility.instrumenLayerNames[i]); + listVectorNames.Add(instrument); } } - for (int i = 0; i < Utility.pipefittingLayerNames.Count; i++) + foreach (string pipefitting in Utility.pipefittingLayerNames) { - if (!listVectorNames.Contains(Utility.pipefittingLayerNames[i])) + if (!listVectorNames.Contains(pipefitting)) { - listVectorNames.Add(Utility.pipefittingLayerNames[i]); + listVectorNames.Add(pipefitting); } } FrmExportVector frm = new FrmExportVector(globeControl1, listVectorNames); frm.ShowDialog(); } + /// /// 删除模型 /// @@ -7945,27 +7874,25 @@ private void buttonItemBJ13_Click(object sender, EventArgs e) { LogManager.saveLog(Utility.userName, buttonItemBJ13.Text); - if (globeControl1.Globe.SelObjectCount > 0) - { - for (int i = 0; i < globeControl1.Globe.SelObjectCount; i++) - { - GSOFeature f = null; - GSOLayer layer = null; - globeControl1.Globe.GetSelectObject(i, out f, out layer); - if (f == null) continue; - f.Delete(); - if (layer != null) - globeControl1.Globe.AddToEditHistroy(layer, f, EnumEditType.Delete); - globeControl1.Refresh(); - - } - MessageBox.Show("删除成功!", "提示"); - } - else + var selObjCount = globeControl1.Globe.SelObjectCount; + if (selObjCount == 0) { MessageBox.Show("请选中要删除的模型!", "提示"); + return; } + for (int i = 0; i < selObjCount; i++) + { + GSOFeature f; + GSOLayer layer; + globeControl1.Globe.GetSelectObject(i, out f, out layer); + if (f == null) continue; + f.Delete(); + if (layer != null) + globeControl1.Globe.AddToEditHistroy(layer, f, EnumEditType.Delete); + globeControl1.Refresh(); + } + MessageBox.Show("删除成功!", "提示"); globeControl1.Globe.Action = EnumAction3D.ActionNull; } @@ -8031,6 +7958,7 @@ toolStripNumbers.Text = "红线审核 |共有:" + table.Rows.Count + "条"; toolStripDropDownButton3.Visible = true; } + /// /// 主窗体 下方的工具条中的 导出.xls文件 按钮事件处理 /// @@ -8040,24 +7968,28 @@ { if (dataGridViewX1.Rows.Count != 0) { - string strSaveFile = string.Empty; - SaveFileDialog savefiledialog = new SaveFileDialog(); - savefiledialog.Filter = "Excel文件|*.xls,*.xlsx"; - savefiledialog.AddExtension = true; - savefiledialog.FileName = "红线审核"; - if (savefiledialog.ShowDialog() == DialogResult.OK) - strSaveFile = savefiledialog.FileName; - else return; - - ExpEXCEL.ExpToExcel(dataGridViewX1, strSaveFile, "红线审核", lineStruct, featsList); - MessageBox.Show("导出成功!"); - } - else - { MessageBox.Show("表格内容为空!", "提示"); + return; } + string strSaveFile; + SaveFileDialog savefiledialog = new SaveFileDialog(); + savefiledialog.Filter = "Excel文件|*.xls,*.xlsx"; + savefiledialog.AddExtension = true; + savefiledialog.FileName = "红线审核"; + if (savefiledialog.ShowDialog() == DialogResult.OK) + strSaveFile = savefiledialog.FileName; + else return; + + ExpEXCEL.ExpToExcel(dataGridViewX1, strSaveFile, "红线审核", lineStruct, featsList); + MessageBox.Show("导出成功!"); + } + /// + /// 双屏对比的地面透明度设置 + /// + /// + /// private void sliderItem2_ValueChanged(object sender, EventArgs e) { LogManager.saveLog(Utility.userName, sliderItem2.Text); @@ -8068,7 +8000,7 @@ { layer.Opaque = 100 - sliderItem2.Value; } - layer = globeControl2.Globe.Layers.GetLayerByCaption("180fd");//("180fd"); + layer = globeControl2.Globe.Layers.GetLayerByCaption(Utility.roadLayerName);//("180fd"); if (layer != null) { layer.Opaque = 100 - sliderItem2.Value; @@ -8832,11 +8764,9 @@ } private void pictureBox1_Paint(object sender, PaintEventArgs e) - { - int Width = this.Width; + { string welcomeUser = "欢迎您:" + Utility.userName; - Graphics g = e.Graphics; - g.DrawString(welcomeUser, new Font("宋体", 12), new SolidBrush(Color.Black), Width - 180, 50); + e.Graphics.DrawString(welcomeUser, new Font("宋体", 12), new SolidBrush(Color.Black), Width - 180, 50); } } diff --git a/TreeUtils.cs b/TreeUtils.cs index 9f4f744..68c8b1d 100644 --- a/TreeUtils.cs +++ b/TreeUtils.cs @@ -10,12 +10,12 @@ public class TreeUtils { /// - /// 构造tree,最多解析三层,若地球存在,则只构造指定地球上图层已存在的树节点,若地球不存在,则构造全部 + /// 构造图层tree,最多解析三层,若地球存在,则只构造指定地球上图层已存在的树节点,若地球不存在,则构造全部 /// /// 所属地球 /// 要加载的树 /// 数据来源,实测数据/施工数据/规划数据/红线数据,为空则展示全部 - public static void InitTree(GSOGlobeControl gsoGlobeControl, TreeView treeView, string viewDatasrc) + public static void InitLayerTree(GSOGlobeControl gsoGlobeControl, TreeView treeView, string viewDatasrc) { // treeView.Nodes.Clear(); LayerConfig layerConfig = Utility.layerConfig; diff --git a/Utility.cs b/Utility.cs index 68c90d1..f7aa6b7 100644 --- a/Utility.cs +++ b/Utility.cs @@ -228,30 +228,30 @@ LayerLabel_LayerIDs = new Hashtable(); if (File.Exists(filename)) { - XmlTextReader XmlReader = new XmlTextReader(filename); + XmlTextReader xmlReader = new XmlTextReader(filename); try { - while (XmlReader.Read()) + while (xmlReader.Read()) { - if (XmlReader.Name == "database") + if (xmlReader.Name == "database") { - dbdatabase = XmlReader.ReadElementString(); + dbdatabase = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "dbpassword") + else if (xmlReader.Name == "dbpassword") { - DBPassword = XmlReader.ReadElementString(); + DBPassword = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "user") + else if (xmlReader.Name == "user") { - userID = XmlReader.ReadElementString(); + userID = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "locaserverip") + else if (xmlReader.Name == "locaserverip") { - serverip = XmlReader.ReadElementString(); + serverip = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "locaserverport") + else if (xmlReader.Name == "locaserverport") { - serverport = Convert.ToInt32(XmlReader.ReadElementString()); + serverport = Convert.ToInt32(xmlReader.ReadElementString()); } //else if (XmlReader.Name == "localicenseserverip") //{ @@ -261,102 +261,51 @@ //{ // Utility.localicenseserverport = Convert.ToInt32(XmlReader.ReadElementString()); //} - else if (XmlReader.Name == "dbbackuppath") + else if (xmlReader.Name == "dbbackuppath") { - DBBackUp = XmlReader.ReadElementString(); + DBBackUp = xmlReader.ReadElementString(); } -// else if (XmlReader.Name == "layerchild") -// { -// var layername = XmlReader["layer"].Trim(); -// var label = XmlReader["label"].Trim(); -// var type = XmlReader["type"].Trim(); -// -// LayerChild child = new LayerChild(); -// child.attriLabel = label; -// child.attriLayer =layername; -// child.attriType = type; -// LayerChilds.Add(child); -// LayerLabels.Add(label); -// LayerNames.Add(layername); -// -// dictionaryNetLayerNameAndCaption.Add(layername, label); -// -// if (layername.EndsWith("管线")) -// { -// LayerNamesList.Add(layername.Substring(0, layername.Length - 2)); -// } -// if (!type.Equals("db")) -// { -// if (XmlReader["isRoad"] != null) -// { -// roadLayerName = label; -// } -// }else if (XmlReader["isPipeLine"] != null) -// { -// m_PipelineLayerNames.Add(label); -// } -// else if (XmlReader["isWorkWell"] != null) -// { -// workwellLayerNames.Add(label); -// } -// else if (XmlReader["isValve"] != null) -// { -// valueLayerNames.Add(label); -// } -// else if (XmlReader["isAccess"] != null) -// { -// instrumenLayerNames.Add(label); -// } -// else if (XmlReader["isCharacter"] != null) -// { -// pipefittingLayerNames.Add(label); -// } -// else if (XmlReader["isSgData"] != null) -// { -// sgPipeLayersNames.Add(label); -// } -// } - else if (XmlReader.Name == "Terrain") + else if (xmlReader.Name == "Terrain") { - TerrainsName.Add(XmlReader.ReadElementString()); + TerrainsName.Add(xmlReader.ReadElementString()); } - else if (XmlReader.Name == "dbserver") + else if (xmlReader.Name == "dbserver") { - DBServer = XmlReader.ReadElementString(); + DBServer = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "rooturl") + else if (xmlReader.Name == "rooturl") { - PicRootURL = XmlReader.ReadElementString(); + PicRootURL = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "defaultimgurl") + else if (xmlReader.Name == "defaultimgurl") { - PicDefaultURL = XmlReader.ReadElementString(); + PicDefaultURL = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "queryfield") + else if (xmlReader.Name == "queryfield") { - Query_Fields.Add(XmlReader["label"], XmlReader.ReadElementString()); + Query_Fields.Add(xmlReader["label"], xmlReader.ReadElementString()); } - else if (XmlReader.Name == "location") + else if (xmlReader.Name == "location") { - Query_Roads.Add(XmlReader["label"], XmlReader.ReadElementString()); + Query_Roads.Add(xmlReader["label"], xmlReader.ReadElementString()); } - else if (XmlReader.Name == "pipelineCode") + else if (xmlReader.Name == "pipelineCode") { - Pipe_Code.Add(XmlReader["label"], XmlReader.ReadElementString()); + Pipe_Code.Add(xmlReader["label"], xmlReader.ReadElementString()); } - else if (XmlReader.Name == "projectStr") + else if (xmlReader.Name == "projectStr") { - projectStr = XmlReader.ReadElementString(); + projectStr = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "backupserverurl") + else if (xmlReader.Name == "backupserverurl") { - backupurl = XmlReader.ReadElementString(); + backupurl = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "backuppath") + else if (xmlReader.Name == "backuppath") { - backuppath = XmlReader.ReadElementString(); + backuppath = xmlReader.ReadElementString(); } //else if (XmlReader.Name == "uploadpath") //{ @@ -366,41 +315,41 @@ //{ // Utility.udserviceurl = XmlReader.ReadElementString(); //} - else if (XmlReader.Name == "pipelinetype") + else if (xmlReader.Name == "pipelinetype") { - pipelinetype = XmlReader.ReadElementString(); + pipelinetype = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbip") + else if (xmlReader.Name == "shdbip") { - sgdbip = XmlReader.ReadElementString(); + sgdbip = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbname") + else if (xmlReader.Name == "shdbname") { - sgdbname = XmlReader.ReadElementString(); + sgdbname = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbuser") + else if (xmlReader.Name == "shdbuser") { - sgdbuser = XmlReader.ReadElementString(); + sgdbuser = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbpwd") + else if (xmlReader.Name == "shdbpwd") { - sgdbpwd = XmlReader.ReadElementString(); + sgdbpwd = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbip") + else if (xmlReader.Name == "ghdbip") { - ghdbip = XmlReader.ReadElementString(); + ghdbip = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbname") + else if (xmlReader.Name == "ghdbname") { - ghdbname = XmlReader.ReadElementString(); + ghdbname = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbuser") + else if (xmlReader.Name == "ghdbuser") { - ghdbuser = XmlReader.ReadElementString(); + ghdbuser = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbpwd") + else if (xmlReader.Name == "ghdbpwd") { - ghdbpwd = XmlReader.ReadElementString(); + ghdbpwd = xmlReader.ReadElementString(); } } } @@ -410,7 +359,7 @@ } finally { - XmlReader.Close(); + xmlReader.Close(); } } else @@ -458,11 +407,12 @@ { sgPipeLayersNames.Add(layer.label); } -// else if (layer.flag.Equals("")) + //配置文件中不存在workwell和valve的,不起作用 +// else if (layer.flag.Equals("workwell")) // { // workwellLayerNames.Add(layer.label); // } -// else if (layer.flag.Equals("")) +// else if (layer.flag.Equals("valve")) // { // valueLayerNames.Add(layer.label); // } diff --git a/bin/x86/Debug/Config.xml b/bin/x86/Debug/Config.xml index 950c0af..b7dafa9 100644 --- a/bin/x86/Debug/Config.xml +++ b/bin/x86/Debug/Config.xml @@ -25,165 +25,6 @@ http://127.0.0.1/Cyberpipe.msi http://127.0.0.1/Config.xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 编号,管线编码,管径_毫米,材质,埋设方式,起始地面高程,起始埋深,终止地面高程,终止埋深,建设年代,使用年限,权属单位,设计单位,设计负责人,施工单位,施工负责人,监理单位,监理负责人,业务负责人,备注 编号,管线编码,管径_毫米,材质,埋设方式,起始地面高程,起始埋深,终止地面高程,终止埋深,建设年代,使用年限,权属单位,设计单位,设计负责人,施工单位,施工负责人,监理单位,监理负责人,业务负责人,备注 diff --git a/bin/x86/Debug/Cyberpipe.exe b/bin/x86/Debug/Cyberpipe.exe index d3b5986..5030278 100644 --- a/bin/x86/Debug/Cyberpipe.exe +++ b/bin/x86/Debug/Cyberpipe.exe Binary files differ diff --git a/Cyberpipe.suo b/Cyberpipe.suo index e88befb..44957ec 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs index 53946c0..fe32265 100644 --- a/FeatureStatisticsService.cs +++ b/FeatureStatisticsService.cs @@ -4,7 +4,7 @@ using GeoScene.Globe; namespace Cyberpipe -{ +{ //本类作用为:辅助GlobalControl上Feature的统计分析工具类 class FeatureStatisticsService { /// @@ -60,8 +60,8 @@ /// /// /// - /// - /// + /// + /// /// /// public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName) @@ -74,6 +74,7 @@ for (int i = 0; i < features.Length; i++) { GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D; + if (line == null) continue; double length = line.GetSpaceLength(true, 6378137); totalLength += length; ncount += 1; @@ -114,7 +115,7 @@ for (int i = 0; i < feats.Length; i++) { double radius = feats[i].GetFieldAsDouble(fieldName); - if (radius >= min && radius <= max) + if (radius >= minValue && radius <= maxValue) { result.Add(feats[i]); } @@ -148,23 +149,22 @@ lstDiameter.Sort(); if (lstDiameter.Count > 0) { - for (int m = 0; m < lstDiameter.Count; m++) + foreach (float diameter in lstDiameter) { double totalLength = 0.00; int ncount = 0; for (int j = 0; j < feats.Length; j++) { - if (feats[j].GetFieldAsFloat("管径_毫米") == lstDiameter[m]) - { - GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; - double length = line.GetSpaceLength(true, 6378137); - totalLength += length; - ncount += 1; - } + if (Math.Abs(feats[j].GetFieldAsFloat("管径_毫米") - diameter) > 0.00001) continue; + GSOGeoPolyline3D line = feats[j].Geometry as GSOGeoPolyline3D; + if (line == null) continue; + double length = line.GetSpaceLength(true, 6378137); + totalLength += length; + ncount += 1; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); featuresClass.layerName = layer.Caption; - featuresClass.groupFieldValue = lstDiameter[m].ToString(); + featuresClass.groupFieldValue = diameter.ToString(); featuresClass.ncount = ncount; featuresClass.sum = Math.Round(totalLength, 2); @@ -191,13 +191,13 @@ //layer.Name是表名 string[] accessStrs = Utility.getAccStrsByLayer(layer.Name); - for (int j = 0; j < accessStrs.Length; j++) + foreach (string accssname in accessStrs) { - GSOFeatures feats = null; - int ncount = 0; + GSOFeatures feats; + int ncount; if (polygon == null) { - feats = flayer.GetFeatureByFieldValue("附属物名称", accessStrs[j], true); + feats = flayer.GetFeatureByFieldValue("附属物名称", accssname, true); ncount = feats.Length; } else @@ -207,14 +207,14 @@ //过滤 for (int n = 0; n < feats.Length; n++) { - if (feats[n].GetFieldAsString("附属物名称").Contains(accessStrs[j])) newfeats.Add(feats[n]); + if (feats[n].GetFieldAsString("附属物名称").Contains(accssname)) newfeats.Add(feats[n]); } ncount = newfeats.Length; } FeaturesClassfyResult featuresClass = new FeaturesClassfyResult(); - featuresClass.layerName = accessStrs[j]; + featuresClass.layerName = accssname; featuresClass.ncount = ncount; result.Add(featuresClass); @@ -303,6 +303,26 @@ if (layer == null) return null; GSOFeatureLayer flayer = layer as GSOFeatureLayer; return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false); - } + } + + + /// + /// 获取globeControl上选中的管线,如果返回空则没有选中的管线 + /// + /// 地球引擎 + /// 返回一根线 + public static GSOFeature GetSelectedPipeline(GSOGlobeControl globeControl) + { + GSOFeature resFeature; + if (globeControl.Globe.SelObjectCount < 1) return null; + GSOLayer resLayer; + globeControl.Globe.GetSelectObject(0, out resFeature, out resLayer); + if (resFeature == null) return null; + + GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; + if (line1 == null) return null; + GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; + return pipeStyle1 == null ? null : resFeature; + } } } diff --git a/FrmHotFuncStat.cs b/FrmHotFuncStat.cs index 84131ef..f313b20 100644 --- a/FrmHotFuncStat.cs +++ b/FrmHotFuncStat.cs @@ -58,14 +58,11 @@ DataTable table = OledbHelper.QueryTable(sql); - if (table != null) + if (table == null) return; + for (int i = 0; i < table.Rows.Count; i++) { - for (int i = 0; i < table.Rows.Count; i++) - { - userLists.Items.Add(table.Rows[i][0].ToString()); - } + userLists.Items.Add(table.Rows[i][0].ToString()); } - } //统计结果 private void statBtn_Click(object sender, EventArgs e) diff --git a/FrmLayerControl.cs b/FrmLayerControl.cs index 6ebb807..8fbce97 100644 --- a/FrmLayerControl.cs +++ b/FrmLayerControl.cs @@ -103,8 +103,8 @@ { layerTree1.Nodes.Clear(); layerTree2.Nodes.Clear(); - TreeUtils.InitTree(globeControl1, layerTree1, "实测数据"); - TreeUtils.InitTree(globeControl2, layerTree2, "施工数据"); + TreeUtils.InitLayerTree(globeControl1, layerTree1, "实测数据"); + TreeUtils.InitLayerTree(globeControl2, layerTree2, "施工数据"); } #region wxl重构树形结构代码 diff --git a/FrmMetadata.cs b/FrmMetadata.cs index e46fa2f..bb7c46c 100644 --- a/FrmMetadata.cs +++ b/FrmMetadata.cs @@ -29,7 +29,7 @@ // tv.ImageList = imageList1; tv.ShowLines = true; tv.CheckBoxes = false; - TreeUtils.InitTree(null, tv, null); + TreeUtils.InitLayerTree(null, tv, null); } /// /// 点击父节点则展开,点击子节点则编辑元数据 diff --git a/MainFrm.cs b/MainFrm.cs index c4a1292..61de352 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -1263,7 +1263,7 @@ layerManagerNode.Tag = layerTemp; layerTree.Nodes.Add(layerManagerNode); - TreeUtils.InitTree(globeControl1, layerTree, null); + TreeUtils.InitLayerTree(globeControl1, layerTree, null); } @@ -3183,7 +3183,6 @@ { TreeNode node = layerNodeContexMenu.Tag as TreeNode; - Int32 nIndex = node.Index; string layerCaption = node.Tag.ToString().Split('|')[1]; GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); layer.Dataset.Save(); @@ -3368,7 +3367,6 @@ return; GSOFeatureLayer flayer = layer as GSOFeatureLayer; - GSOFeatureDataset fdataset = flayer.Dataset as GSOFeatureDataset; GSOFeatures feats = flayer.GetAllFeatures(); for (int i = 0; i < feats.Length; i++) { @@ -3393,7 +3391,6 @@ return; GSOFeatureLayer flayer = layer as GSOFeatureLayer; - GSOFeatureDataset fdataset = flayer.Dataset as GSOFeatureDataset; GSOFeatures feats = flayer.GetAllFeatures(); for (int i = 0; i < feats.Length; i++) { @@ -5421,7 +5418,6 @@ private void addNodeToLayerManagerNode(GSOLayer layer) { if (layer == null) return; - GSODataset dataset = layer.Dataset; CheckDatasetGeoReference(layer.Dataset, ""); TreeNode node = new TreeNode(); @@ -5440,43 +5436,24 @@ /// /// /// - public int getLabelName(GSOLayer layer) - { - int nid = -1; - if (layer.GetAllFeatures().Length > 0) - { - string id = layer.GetAllFeatures()[layer.GetAllFeatures().Length - 1].Name; +// public int getLabelName(GSOLayer layer) +// { +// int nid = -1; +// if (layer.GetAllFeatures().Length > 0) +// { +// string id = layer.GetAllFeatures()[layer.GetAllFeatures().Length - 1].Name; +// +// int.TryParse(id, out nid); +// } +// else +// { +// nid = 0; +// } +// return nid; +// } - int.TryParse(id, out nid); - } - else - { - nid = 0; - } - return nid; - } /// - /// 判断选中的对象是否为管线 - /// - /// 被选中管线 - /// 返回一根线 - private GSOFeature IsPipeLineOfSelectedObj() - { - GSOFeature resFeature = null; - if (globeControl1.Globe.SelObjectCount < 1) return null; - GSOLayer resLayer = null; - globeControl1.Globe.GetSelectObject(0, out resFeature, out resLayer); - if (resFeature == null) return null; - - GSOGeoPolyline3D line1 = resFeature.Geometry as GSOGeoPolyline3D; - if (line1 == null) return null; - GSOPipeLineStyle3D pipeStyle1 = line1.Style as GSOPipeLineStyle3D; - if (pipeStyle1 == null) return null; - - return resFeature; - } - /// /// 图层节点树中 节点 右键单击事件处理 /// /// @@ -5528,7 +5505,6 @@ { TreeNode node = contextMenuStrip2.Tag as TreeNode; TreeNode parentNode = node.Parent; - Int32 nIndex = node.Index; if (parentNode.Text == "标注管理" || parentNode.Text == "传感器管理") { @@ -5579,53 +5555,11 @@ { if (e.Action != TreeViewAction.Unknown) { - CheckTreeNode(e.Node, e.Node.Checked); + //wxl优化标注管理树形结构 + TreeUtils.TreeNodeCheckedChange(globeControl1,e.Node); } } - /// - /// 改变指定节点对应的复选框的选中状态 - /// - /// - /// - private void CheckTreeNode(TreeNode node, Boolean bChecked) - { - CheckChildTreeNode(node, bChecked); - globeControl1.Globe.Refresh(); - } - /// - /// 改变指定节点的子节点对应的复选框的选中状态 - /// - /// - /// - private void CheckChildTreeNode(TreeNode node, Boolean bChecked) - { - if (node == null) - return; - if (node.Tag != null) - { - if (node.Tag.GetType() == typeof(GSOFeatureFolder) || node.Tag.GetType() == typeof(GSOFeature)) - ((GSOFeature)node.Tag).SetVisibleDirectly(bChecked); - else - { - GSOLayer curLayer = node.Tag as GSOLayer; - GSOTerrain curTerrain = node.Tag as GSOTerrain; - if (curLayer != null) - { - curLayer.Visible = bChecked; - } - else if (curTerrain != null) - { - curTerrain.Visible = bChecked; - } - } - } - // 递归处理子节点 - for (int i = 0; i < node.Nodes.Count; i++) - { - node.Nodes[i].Checked = bChecked; - CheckChildTreeNode(node.Nodes[i], bChecked); - } - } + /// /// 标注管理、传感器管理 目录树中的feature节点的右键菜单中的 删除 菜单 /// @@ -5903,7 +5837,7 @@ frmModify = new FrmMnModify(globeControl1, shlayername, shresultLists); - if (boolfrmModify != false) return; + if (boolfrmModify) return; frmModify.Owner = this; frmModify.Location = new Point(Width - frmModify.Width - 10, Height - frmModify.Height - 50); frmModify.Show(); @@ -6445,8 +6379,8 @@ GSOFeatures selectFeatures = new GSOFeatures(); for (int i = 0; i < globeControl1.Globe.SelObjectCount; i++) { - GSOFeature feature = null; - GSOLayer layer = null; + GSOFeature feature; + GSOLayer layer; globeControl1.Globe.GetSelectObject(i, out feature, out layer); if (feature != null && feature.Geometry != null && feature.Geometry.Type == EnumGeometryType.GeoPolyline3D) { @@ -6454,11 +6388,9 @@ } } List feats = SectionAnalysisTool.ZDMAnalysis(selectFeatures); - if (feats != null && feats.Count >= 1) - { - FrmProfileAnalysis frm = new FrmProfileAnalysis(globeControl1, feats); - frm.Show(this); - } + if (feats == null || feats.Count < 1) return; + FrmProfileAnalysis frm = new FrmProfileAnalysis(globeControl1, feats); + frm.Show(this); } /// /// 道路断面分析 @@ -6975,14 +6907,14 @@ /// private void buttonItemSZ1_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -6993,17 +6925,17 @@ /// /// 管径标注 /// - GSOFeature radiusMarkerFeature; +// GSOFeature radiusMarkerFeature; private void buttonItemBZ2_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine==null||selLine[0].Count <= 1)//wxl增加为空判断,下面方法同理 + if (selLine == null || selLine[0].Count <= 1) //wxl增加为空判断,下面方法同理 { return; } @@ -7018,14 +6950,14 @@ /// private void buttonItemBZ3_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null||selLine[0].Count <= 1) { return; } @@ -7041,14 +6973,14 @@ /// private void buttonItemBZ4_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -7058,7 +6990,7 @@ /// /// 距离标注 /// - bool distanceMarker; +// bool distanceMarker; private void buttonItemBZ5_Click(object sender, EventArgs e) { //日志记录 @@ -7066,7 +6998,7 @@ globeControl1.Globe.Action = EnumAction3D.TrackPolyline; //globeControl1.Globe.DistanceRuler.MeasureMode = EnumDistanceMeasureMode.HVSLineMeasure; - distanceMarker = true; +// distanceMarker = true; } /// /// 自定义标注 @@ -7105,14 +7037,14 @@ /// private void buttonItemBZ8_Click(object sender, EventArgs e) { - GSOFeature resFeature = IsPipeLineOfSelectedObj(); + GSOFeature resFeature = FeatureStatisticsService.GetSelectedPipeline(globeControl1); if (resFeature == null) { MessageBox.Show("请选中一根管线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } GSOGeoPolyline3D selLine = resFeature.Geometry as GSOGeoPolyline3D; - if (selLine[0].Count <= 1) + if (selLine == null || selLine[0].Count <= 1) { return; } @@ -7688,11 +7620,9 @@ if (frm.ShowDialog() == DialogResult.OK) { GSOLayer featureAddLayer = TreeNodeFeatureLayer(); - if (featureAddLayer != null) - { - FrmAddInstrument dlg = new FrmAddInstrument(globeControl1, featureAddLayer); - dlg.Show(this); - } + if (featureAddLayer == null) return; + FrmAddInstrument dlg = new FrmAddInstrument(globeControl1, featureAddLayer); + dlg.Show(this); } } /// @@ -7735,11 +7665,9 @@ frm.citySevenLineType); globeControl1.Tag = citySevenLine; GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(frm.citySevenLineType); - if (layer != null) - { - globeControl1.Globe.DestLayerFeatureAdd = layer; - layer.Editable = true; - } + if (layer == null) return; + globeControl1.Globe.DestLayerFeatureAdd = layer; + layer.Editable = true; } } #endregion @@ -7899,44 +7827,45 @@ LogManager.saveLog(Utility.userName, buttonItemBJ10_2.Text); List listVectorNames = new List(); - for (int i = 0; i < Utility.m_PipelineLayerNames.Count; i++) + foreach (string pipeline in Utility.m_PipelineLayerNames) { - if (!listVectorNames.Contains(Utility.m_PipelineLayerNames[i])) + if (!listVectorNames.Contains(pipeline)) { - listVectorNames.Add(Utility.m_PipelineLayerNames[i]); + listVectorNames.Add(pipeline); } } - for (int i = 0; i < Utility.valueLayerNames.Count; i++) + foreach (string valve in Utility.valueLayerNames) { - if (!listVectorNames.Contains(Utility.valueLayerNames[i])) + if (!listVectorNames.Contains(valve)) { - listVectorNames.Add(Utility.valueLayerNames[i]); + listVectorNames.Add(valve); } } - for (int i = 0; i < Utility.workwellLayerNames.Count; i++) + foreach (string workwell in Utility.workwellLayerNames) { - if (!listVectorNames.Contains(Utility.workwellLayerNames[i])) + if (!listVectorNames.Contains(workwell)) { - listVectorNames.Add(Utility.workwellLayerNames[i]); + listVectorNames.Add(workwell); } } - for (int i = 0; i < Utility.instrumenLayerNames.Count; i++) + foreach (string instrument in Utility.instrumenLayerNames) { - if (!listVectorNames.Contains(Utility.instrumenLayerNames[i])) + if (!listVectorNames.Contains(instrument)) { - listVectorNames.Add(Utility.instrumenLayerNames[i]); + listVectorNames.Add(instrument); } } - for (int i = 0; i < Utility.pipefittingLayerNames.Count; i++) + foreach (string pipefitting in Utility.pipefittingLayerNames) { - if (!listVectorNames.Contains(Utility.pipefittingLayerNames[i])) + if (!listVectorNames.Contains(pipefitting)) { - listVectorNames.Add(Utility.pipefittingLayerNames[i]); + listVectorNames.Add(pipefitting); } } FrmExportVector frm = new FrmExportVector(globeControl1, listVectorNames); frm.ShowDialog(); } + /// /// 删除模型 /// @@ -7945,27 +7874,25 @@ private void buttonItemBJ13_Click(object sender, EventArgs e) { LogManager.saveLog(Utility.userName, buttonItemBJ13.Text); - if (globeControl1.Globe.SelObjectCount > 0) - { - for (int i = 0; i < globeControl1.Globe.SelObjectCount; i++) - { - GSOFeature f = null; - GSOLayer layer = null; - globeControl1.Globe.GetSelectObject(i, out f, out layer); - if (f == null) continue; - f.Delete(); - if (layer != null) - globeControl1.Globe.AddToEditHistroy(layer, f, EnumEditType.Delete); - globeControl1.Refresh(); - - } - MessageBox.Show("删除成功!", "提示"); - } - else + var selObjCount = globeControl1.Globe.SelObjectCount; + if (selObjCount == 0) { MessageBox.Show("请选中要删除的模型!", "提示"); + return; } + for (int i = 0; i < selObjCount; i++) + { + GSOFeature f; + GSOLayer layer; + globeControl1.Globe.GetSelectObject(i, out f, out layer); + if (f == null) continue; + f.Delete(); + if (layer != null) + globeControl1.Globe.AddToEditHistroy(layer, f, EnumEditType.Delete); + globeControl1.Refresh(); + } + MessageBox.Show("删除成功!", "提示"); globeControl1.Globe.Action = EnumAction3D.ActionNull; } @@ -8031,6 +7958,7 @@ toolStripNumbers.Text = "红线审核 |共有:" + table.Rows.Count + "条"; toolStripDropDownButton3.Visible = true; } + /// /// 主窗体 下方的工具条中的 导出.xls文件 按钮事件处理 /// @@ -8040,24 +7968,28 @@ { if (dataGridViewX1.Rows.Count != 0) { - string strSaveFile = string.Empty; - SaveFileDialog savefiledialog = new SaveFileDialog(); - savefiledialog.Filter = "Excel文件|*.xls,*.xlsx"; - savefiledialog.AddExtension = true; - savefiledialog.FileName = "红线审核"; - if (savefiledialog.ShowDialog() == DialogResult.OK) - strSaveFile = savefiledialog.FileName; - else return; - - ExpEXCEL.ExpToExcel(dataGridViewX1, strSaveFile, "红线审核", lineStruct, featsList); - MessageBox.Show("导出成功!"); - } - else - { MessageBox.Show("表格内容为空!", "提示"); + return; } + string strSaveFile; + SaveFileDialog savefiledialog = new SaveFileDialog(); + savefiledialog.Filter = "Excel文件|*.xls,*.xlsx"; + savefiledialog.AddExtension = true; + savefiledialog.FileName = "红线审核"; + if (savefiledialog.ShowDialog() == DialogResult.OK) + strSaveFile = savefiledialog.FileName; + else return; + + ExpEXCEL.ExpToExcel(dataGridViewX1, strSaveFile, "红线审核", lineStruct, featsList); + MessageBox.Show("导出成功!"); + } + /// + /// 双屏对比的地面透明度设置 + /// + /// + /// private void sliderItem2_ValueChanged(object sender, EventArgs e) { LogManager.saveLog(Utility.userName, sliderItem2.Text); @@ -8068,7 +8000,7 @@ { layer.Opaque = 100 - sliderItem2.Value; } - layer = globeControl2.Globe.Layers.GetLayerByCaption("180fd");//("180fd"); + layer = globeControl2.Globe.Layers.GetLayerByCaption(Utility.roadLayerName);//("180fd"); if (layer != null) { layer.Opaque = 100 - sliderItem2.Value; @@ -8832,11 +8764,9 @@ } private void pictureBox1_Paint(object sender, PaintEventArgs e) - { - int Width = this.Width; + { string welcomeUser = "欢迎您:" + Utility.userName; - Graphics g = e.Graphics; - g.DrawString(welcomeUser, new Font("宋体", 12), new SolidBrush(Color.Black), Width - 180, 50); + e.Graphics.DrawString(welcomeUser, new Font("宋体", 12), new SolidBrush(Color.Black), Width - 180, 50); } } diff --git a/TreeUtils.cs b/TreeUtils.cs index 9f4f744..68c8b1d 100644 --- a/TreeUtils.cs +++ b/TreeUtils.cs @@ -10,12 +10,12 @@ public class TreeUtils { /// - /// 构造tree,最多解析三层,若地球存在,则只构造指定地球上图层已存在的树节点,若地球不存在,则构造全部 + /// 构造图层tree,最多解析三层,若地球存在,则只构造指定地球上图层已存在的树节点,若地球不存在,则构造全部 /// /// 所属地球 /// 要加载的树 /// 数据来源,实测数据/施工数据/规划数据/红线数据,为空则展示全部 - public static void InitTree(GSOGlobeControl gsoGlobeControl, TreeView treeView, string viewDatasrc) + public static void InitLayerTree(GSOGlobeControl gsoGlobeControl, TreeView treeView, string viewDatasrc) { // treeView.Nodes.Clear(); LayerConfig layerConfig = Utility.layerConfig; diff --git a/Utility.cs b/Utility.cs index 68c90d1..f7aa6b7 100644 --- a/Utility.cs +++ b/Utility.cs @@ -228,30 +228,30 @@ LayerLabel_LayerIDs = new Hashtable(); if (File.Exists(filename)) { - XmlTextReader XmlReader = new XmlTextReader(filename); + XmlTextReader xmlReader = new XmlTextReader(filename); try { - while (XmlReader.Read()) + while (xmlReader.Read()) { - if (XmlReader.Name == "database") + if (xmlReader.Name == "database") { - dbdatabase = XmlReader.ReadElementString(); + dbdatabase = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "dbpassword") + else if (xmlReader.Name == "dbpassword") { - DBPassword = XmlReader.ReadElementString(); + DBPassword = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "user") + else if (xmlReader.Name == "user") { - userID = XmlReader.ReadElementString(); + userID = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "locaserverip") + else if (xmlReader.Name == "locaserverip") { - serverip = XmlReader.ReadElementString(); + serverip = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "locaserverport") + else if (xmlReader.Name == "locaserverport") { - serverport = Convert.ToInt32(XmlReader.ReadElementString()); + serverport = Convert.ToInt32(xmlReader.ReadElementString()); } //else if (XmlReader.Name == "localicenseserverip") //{ @@ -261,102 +261,51 @@ //{ // Utility.localicenseserverport = Convert.ToInt32(XmlReader.ReadElementString()); //} - else if (XmlReader.Name == "dbbackuppath") + else if (xmlReader.Name == "dbbackuppath") { - DBBackUp = XmlReader.ReadElementString(); + DBBackUp = xmlReader.ReadElementString(); } -// else if (XmlReader.Name == "layerchild") -// { -// var layername = XmlReader["layer"].Trim(); -// var label = XmlReader["label"].Trim(); -// var type = XmlReader["type"].Trim(); -// -// LayerChild child = new LayerChild(); -// child.attriLabel = label; -// child.attriLayer =layername; -// child.attriType = type; -// LayerChilds.Add(child); -// LayerLabels.Add(label); -// LayerNames.Add(layername); -// -// dictionaryNetLayerNameAndCaption.Add(layername, label); -// -// if (layername.EndsWith("管线")) -// { -// LayerNamesList.Add(layername.Substring(0, layername.Length - 2)); -// } -// if (!type.Equals("db")) -// { -// if (XmlReader["isRoad"] != null) -// { -// roadLayerName = label; -// } -// }else if (XmlReader["isPipeLine"] != null) -// { -// m_PipelineLayerNames.Add(label); -// } -// else if (XmlReader["isWorkWell"] != null) -// { -// workwellLayerNames.Add(label); -// } -// else if (XmlReader["isValve"] != null) -// { -// valueLayerNames.Add(label); -// } -// else if (XmlReader["isAccess"] != null) -// { -// instrumenLayerNames.Add(label); -// } -// else if (XmlReader["isCharacter"] != null) -// { -// pipefittingLayerNames.Add(label); -// } -// else if (XmlReader["isSgData"] != null) -// { -// sgPipeLayersNames.Add(label); -// } -// } - else if (XmlReader.Name == "Terrain") + else if (xmlReader.Name == "Terrain") { - TerrainsName.Add(XmlReader.ReadElementString()); + TerrainsName.Add(xmlReader.ReadElementString()); } - else if (XmlReader.Name == "dbserver") + else if (xmlReader.Name == "dbserver") { - DBServer = XmlReader.ReadElementString(); + DBServer = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "rooturl") + else if (xmlReader.Name == "rooturl") { - PicRootURL = XmlReader.ReadElementString(); + PicRootURL = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "defaultimgurl") + else if (xmlReader.Name == "defaultimgurl") { - PicDefaultURL = XmlReader.ReadElementString(); + PicDefaultURL = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "queryfield") + else if (xmlReader.Name == "queryfield") { - Query_Fields.Add(XmlReader["label"], XmlReader.ReadElementString()); + Query_Fields.Add(xmlReader["label"], xmlReader.ReadElementString()); } - else if (XmlReader.Name == "location") + else if (xmlReader.Name == "location") { - Query_Roads.Add(XmlReader["label"], XmlReader.ReadElementString()); + Query_Roads.Add(xmlReader["label"], xmlReader.ReadElementString()); } - else if (XmlReader.Name == "pipelineCode") + else if (xmlReader.Name == "pipelineCode") { - Pipe_Code.Add(XmlReader["label"], XmlReader.ReadElementString()); + Pipe_Code.Add(xmlReader["label"], xmlReader.ReadElementString()); } - else if (XmlReader.Name == "projectStr") + else if (xmlReader.Name == "projectStr") { - projectStr = XmlReader.ReadElementString(); + projectStr = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "backupserverurl") + else if (xmlReader.Name == "backupserverurl") { - backupurl = XmlReader.ReadElementString(); + backupurl = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "backuppath") + else if (xmlReader.Name == "backuppath") { - backuppath = XmlReader.ReadElementString(); + backuppath = xmlReader.ReadElementString(); } //else if (XmlReader.Name == "uploadpath") //{ @@ -366,41 +315,41 @@ //{ // Utility.udserviceurl = XmlReader.ReadElementString(); //} - else if (XmlReader.Name == "pipelinetype") + else if (xmlReader.Name == "pipelinetype") { - pipelinetype = XmlReader.ReadElementString(); + pipelinetype = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbip") + else if (xmlReader.Name == "shdbip") { - sgdbip = XmlReader.ReadElementString(); + sgdbip = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbname") + else if (xmlReader.Name == "shdbname") { - sgdbname = XmlReader.ReadElementString(); + sgdbname = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbuser") + else if (xmlReader.Name == "shdbuser") { - sgdbuser = XmlReader.ReadElementString(); + sgdbuser = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "shdbpwd") + else if (xmlReader.Name == "shdbpwd") { - sgdbpwd = XmlReader.ReadElementString(); + sgdbpwd = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbip") + else if (xmlReader.Name == "ghdbip") { - ghdbip = XmlReader.ReadElementString(); + ghdbip = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbname") + else if (xmlReader.Name == "ghdbname") { - ghdbname = XmlReader.ReadElementString(); + ghdbname = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbuser") + else if (xmlReader.Name == "ghdbuser") { - ghdbuser = XmlReader.ReadElementString(); + ghdbuser = xmlReader.ReadElementString(); } - else if (XmlReader.Name == "ghdbpwd") + else if (xmlReader.Name == "ghdbpwd") { - ghdbpwd = XmlReader.ReadElementString(); + ghdbpwd = xmlReader.ReadElementString(); } } } @@ -410,7 +359,7 @@ } finally { - XmlReader.Close(); + xmlReader.Close(); } } else @@ -458,11 +407,12 @@ { sgPipeLayersNames.Add(layer.label); } -// else if (layer.flag.Equals("")) + //配置文件中不存在workwell和valve的,不起作用 +// else if (layer.flag.Equals("workwell")) // { // workwellLayerNames.Add(layer.label); // } -// else if (layer.flag.Equals("")) +// else if (layer.flag.Equals("valve")) // { // valueLayerNames.Add(layer.label); // } diff --git a/bin/x86/Debug/Config.xml b/bin/x86/Debug/Config.xml index 950c0af..b7dafa9 100644 --- a/bin/x86/Debug/Config.xml +++ b/bin/x86/Debug/Config.xml @@ -25,165 +25,6 @@ http://127.0.0.1/Cyberpipe.msi http://127.0.0.1/Config.xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 编号,管线编码,管径_毫米,材质,埋设方式,起始地面高程,起始埋深,终止地面高程,终止埋深,建设年代,使用年限,权属单位,设计单位,设计负责人,施工单位,施工负责人,监理单位,监理负责人,业务负责人,备注 编号,管线编码,管径_毫米,材质,埋设方式,起始地面高程,起始埋深,终止地面高程,终止埋深,建设年代,使用年限,权属单位,设计单位,设计负责人,施工单位,施工负责人,监理单位,监理负责人,业务负责人,备注 diff --git a/bin/x86/Debug/Cyberpipe.exe b/bin/x86/Debug/Cyberpipe.exe index d3b5986..5030278 100644 --- a/bin/x86/Debug/Cyberpipe.exe +++ b/bin/x86/Debug/Cyberpipe.exe Binary files differ diff --git a/bin/x86/Debug/Cyberpipe.pdb b/bin/x86/Debug/Cyberpipe.pdb index d263fae..f364c19 100644 --- a/bin/x86/Debug/Cyberpipe.pdb +++ b/bin/x86/Debug/Cyberpipe.pdb Binary files differ