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