diff --git a/DoublePanelAnalysis.cs b/DoublePanelAnalysis.cs
index 19511cc..e89f552 100644
--- a/DoublePanelAnalysis.cs
+++ b/DoublePanelAnalysis.cs
@@ -746,17 +746,17 @@
#region wxl 重构 碰撞审查,覆土审查,水平净距审查,垂直净距审查
-
+ //TODO LIST:UNDONE
///
/// 获取跟选择管线垂直距离小于特定值的管线列表和选择管线的距离
///
- /// 地球
+ /// 地球
/// 选择管线
- /// 各图层名称
+ /// 各图层名称
/// 垂直距离
/// 管线列表,可为空
- public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl1,
- GSOFeature selectedFeature, List _pipelineLayerNames, double verticalDistance )
+ public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl,
+ GSOFeature selectedFeature, List pipelineLayerNames, double verticalDistance )
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -765,16 +765,13 @@
if (pipeStyle1 == null) return null;
GSOGeoPolygon3D polygon = line1.CreateBuffer(0.1, true, 5, true, false);//要比较的区域
Dictionary result = new Dictionary();
-
string caption = selectedFeature.Dataset.Caption;
-
- GSOPoint3d pntIntersect1, pntIntersect2,pntProIntersect1, pntProIntersect2 ;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -783,7 +780,8 @@
if (line2 == null) continue;
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
- double dDist = globeControl1.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
+ GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
+ double dDist = globeControl.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
if (dDist >= verticalDistance) continue;//不符合条件
result.Add(feat2,dDist);
@@ -794,12 +792,12 @@
///
/// 获取与选定管线水平距离小于特定值的<管线,管线距离>Dictionary
///
- ///
+ ///
///
- ///
+ ///
///
/// 选择的为空或不是管线则返回空,否则返回符合条件的Dictionary
- public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl1,GSOFeature selectedFeature, List _pipelineLayerNames, double dis)
+ public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl,GSOFeature selectedFeature, List pipelineLayerNames, double dis)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -809,23 +807,23 @@
Dictionary result = new Dictionary();
string caption = selectedFeature.Dataset.Caption;
GSOGeoPolygon3D polygon = line1.CreateBuffer(dis, true, 5, true, false);
- GSOFeature new_feat = new GSOFeature();
- new_feat.Geometry = polygon;
+ GSOFeature newFeat = new GSOFeature();
+ newFeat.Geometry = polygon;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
for (int j = 0; j < feats2.Length; j++)
{
GSOFeature feat2 = feats2[j];
GSOGeoPolyline3D line2 = feat2.Geometry as GSOGeoPolyline3D;
if (line2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
- out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
+ double dDist = globeControl.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
+ out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
result.Add(feat2,dDist);
@@ -836,11 +834,11 @@
///
///碰撞检测,获取与选择管线碰撞的管线
///
- /// 地球
+ /// 地球
/// 选中的feature
- /// 图层列表
+ /// 图层列表
///
- public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl1, GSOFeature selectedFeature, List _pipelineLayerNames)
+ public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl, GSOFeature selectedFeature, List pipelineLayerNames)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -851,12 +849,12 @@
GSOFeatures result = new GSOFeatures();
string caption = selectedFeature.Dataset.Caption;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -867,7 +865,7 @@
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
+ double dDist = globeControl.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
out pntIntersect2,out horLen,out verLen,true,true,dNoIntersetStartRatio);
if (dDist <= 0 ) result.Add(feat2);
}
diff --git a/DoublePanelAnalysis.cs b/DoublePanelAnalysis.cs
index 19511cc..e89f552 100644
--- a/DoublePanelAnalysis.cs
+++ b/DoublePanelAnalysis.cs
@@ -746,17 +746,17 @@
#region wxl 重构 碰撞审查,覆土审查,水平净距审查,垂直净距审查
-
+ //TODO LIST:UNDONE
///
/// 获取跟选择管线垂直距离小于特定值的管线列表和选择管线的距离
///
- /// 地球
+ /// 地球
/// 选择管线
- /// 各图层名称
+ /// 各图层名称
/// 垂直距离
/// 管线列表,可为空
- public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl1,
- GSOFeature selectedFeature, List _pipelineLayerNames, double verticalDistance )
+ public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl,
+ GSOFeature selectedFeature, List pipelineLayerNames, double verticalDistance )
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -765,16 +765,13 @@
if (pipeStyle1 == null) return null;
GSOGeoPolygon3D polygon = line1.CreateBuffer(0.1, true, 5, true, false);//要比较的区域
Dictionary result = new Dictionary();
-
string caption = selectedFeature.Dataset.Caption;
-
- GSOPoint3d pntIntersect1, pntIntersect2,pntProIntersect1, pntProIntersect2 ;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -783,7 +780,8 @@
if (line2 == null) continue;
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
- double dDist = globeControl1.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
+ GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
+ double dDist = globeControl.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
if (dDist >= verticalDistance) continue;//不符合条件
result.Add(feat2,dDist);
@@ -794,12 +792,12 @@
///
/// 获取与选定管线水平距离小于特定值的<管线,管线距离>Dictionary
///
- ///
+ ///
///
- ///
+ ///
///
/// 选择的为空或不是管线则返回空,否则返回符合条件的Dictionary
- public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl1,GSOFeature selectedFeature, List _pipelineLayerNames, double dis)
+ public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl,GSOFeature selectedFeature, List pipelineLayerNames, double dis)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -809,23 +807,23 @@
Dictionary result = new Dictionary();
string caption = selectedFeature.Dataset.Caption;
GSOGeoPolygon3D polygon = line1.CreateBuffer(dis, true, 5, true, false);
- GSOFeature new_feat = new GSOFeature();
- new_feat.Geometry = polygon;
+ GSOFeature newFeat = new GSOFeature();
+ newFeat.Geometry = polygon;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
for (int j = 0; j < feats2.Length; j++)
{
GSOFeature feat2 = feats2[j];
GSOGeoPolyline3D line2 = feat2.Geometry as GSOGeoPolyline3D;
if (line2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
- out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
+ double dDist = globeControl.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
+ out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
result.Add(feat2,dDist);
@@ -836,11 +834,11 @@
///
///碰撞检测,获取与选择管线碰撞的管线
///
- /// 地球
+ /// 地球
/// 选中的feature
- /// 图层列表
+ /// 图层列表
///
- public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl1, GSOFeature selectedFeature, List _pipelineLayerNames)
+ public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl, GSOFeature selectedFeature, List pipelineLayerNames)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -851,12 +849,12 @@
GSOFeatures result = new GSOFeatures();
string caption = selectedFeature.Dataset.Caption;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -867,7 +865,7 @@
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
+ double dDist = globeControl.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
out pntIntersect2,out horLen,out verLen,true,true,dNoIntersetStartRatio);
if (dDist <= 0 ) result.Add(feat2);
}
diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs
index fe32265..cfdaf5c 100644
--- a/FeatureStatisticsService.cs
+++ b/FeatureStatisticsService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
using GeoScene.Data;
using GeoScene.Globe;
@@ -17,9 +18,9 @@
public static GSOFeatures Intersect_PointLayerByType(GSOGeoPolygon3D polygon, GSOLayer layer, string type)
{
- if (layer == null) return null;
-
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+
if (polygon == null)
{
@@ -48,7 +49,7 @@
///
///附属物列表
///
- public Dictionary getFeatureCountByFeatures(GSOFeatures feats)
+ public Dictionary GetFeatureCountByFeatures(GSOFeatures feats)
{
if (feats == null || feats.Length == 0) return null;
Dictionary result = new Dictionary();
@@ -64,13 +65,13 @@
///
///
///
- public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
+ public FeaturesClassfyResult GetPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
{
if (layer == null) return null;
FeaturesClassfyResult result = new FeaturesClassfyResult();
double totalLength = 0.0;
int ncount = 0;
- GSOFeatures features = getPipesByValueSection(polygon, layer, min, max, fieldName);
+ GSOFeatures features = GetPipesByValueSection(polygon, layer, min, max, fieldName);
for (int i = 0; i < features.Length; i++)
{
GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D;
@@ -98,11 +99,12 @@
/// 上限
/// 统计类型:"起始埋深"或"管径_毫米"
///
- public GSOFeatures getPipesByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
+ public GSOFeatures GetPipesByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
{
- if (layer == null) return null;
- GSOFeatures result = new GSOFeatures();
+
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ GSOFeatures result = new GSOFeatures();
//TODOLIST:优化为只获取管线,目前不清楚调用方式
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
@@ -127,12 +129,12 @@
}
//图层名称、管径、条数、总长度
- public List groupPipeByDiameter(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public List GroupPipeByDiameter(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
- List result = new List();
-
+
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ List result = new List();
//TODOLIST:优化为只获取管线,目前不清楚调用方式
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
@@ -164,7 +166,7 @@
}
FeaturesClassfyResult featuresClass = new FeaturesClassfyResult();
featuresClass.layerName = layer.Caption;
- featuresClass.groupFieldValue = diameter.ToString();
+ featuresClass.groupFieldValue = diameter.ToString(CultureInfo.InvariantCulture);
featuresClass.ncount = ncount;
featuresClass.sum = Math.Round(totalLength, 2);
@@ -181,12 +183,11 @@
///
///
///
- public List groupAccessories(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public List GroupAccessories(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
- List result = new List();
-
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ List result = new List();
//layer.Name是表名
string[] accessStrs = Utility.getAccStrsByLayer(layer.Name);
@@ -230,14 +231,14 @@
///
/// 材质
///
- public FeaturesClassfyResult groupPipeByMaterial(GSOGeoPolygon3D polygon, GSOLayer layer, string material)
+ public FeaturesClassfyResult GroupPipeByMaterial(GSOGeoPolygon3D polygon, GSOLayer layer, string material)
{
- if (layer == null) return null;
+
+ GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
FeaturesClassfyResult result = new FeaturesClassfyResult();
- GSOFeatureLayer flayer = layer as GSOFeatureLayer;
-
- //TODOLIST:优化为只获取管线,目前不清楚调用方式
+
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
string fixedMaterial = material == "无" ? "" : material;
@@ -245,16 +246,12 @@
int ncount = 0;
for (int i = 0; i < feats.Length; i++)
{
- if (feats[i].GetFieldAsString("材质").Equals(fixedMaterial))
- {
- GSOGeoPolyline3D line = feats[i].Geometry as GSOGeoPolyline3D;
- if (line != null)
- {
- double length = line.GetSpaceLength(true, 6378137);
- totalLength += length;
- ncount += 1;
- }
- }
+ if (!feats[i].GetFieldAsString("材质").Equals(fixedMaterial)) continue;
+ GSOGeoPolyline3D line = feats[i].Geometry as GSOGeoPolyline3D;
+ if (line == null) continue;
+ double length = line.GetSpaceLength(true, 6378137);
+ totalLength += length;
+ ncount += 1;
}
result.layerName = layer.Caption;
@@ -271,12 +268,12 @@
///
/// 要统计的长度
///
- public static GSOFeatures getLayerPipes(GSOGeoPolygon3D polygon, GSOLayer layer, out double length)
+ public static GSOFeatures GetLayerPipes(GSOGeoPolygon3D polygon, GSOLayer layer, out double length)
{
length = 0;
if (layer == null) return null;
- GSOFeatures feats = getLayerFeatures(polygon, layer);
+ GSOFeatures feats = GetLayerFeatures(polygon, layer);
double totallength = 0.00;
for (int i = 0; i < feats.Length; i++)
{
@@ -298,10 +295,10 @@
///
///
///
- public static GSOFeatures getLayerFeatures(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public static GSOFeatures GetLayerFeatures(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
}
diff --git a/DoublePanelAnalysis.cs b/DoublePanelAnalysis.cs
index 19511cc..e89f552 100644
--- a/DoublePanelAnalysis.cs
+++ b/DoublePanelAnalysis.cs
@@ -746,17 +746,17 @@
#region wxl 重构 碰撞审查,覆土审查,水平净距审查,垂直净距审查
-
+ //TODO LIST:UNDONE
///
/// 获取跟选择管线垂直距离小于特定值的管线列表和选择管线的距离
///
- /// 地球
+ /// 地球
/// 选择管线
- /// 各图层名称
+ /// 各图层名称
/// 垂直距离
/// 管线列表,可为空
- public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl1,
- GSOFeature selectedFeature, List _pipelineLayerNames, double verticalDistance )
+ public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl,
+ GSOFeature selectedFeature, List pipelineLayerNames, double verticalDistance )
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -765,16 +765,13 @@
if (pipeStyle1 == null) return null;
GSOGeoPolygon3D polygon = line1.CreateBuffer(0.1, true, 5, true, false);//要比较的区域
Dictionary result = new Dictionary();
-
string caption = selectedFeature.Dataset.Caption;
-
- GSOPoint3d pntIntersect1, pntIntersect2,pntProIntersect1, pntProIntersect2 ;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -783,7 +780,8 @@
if (line2 == null) continue;
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
- double dDist = globeControl1.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
+ GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
+ double dDist = globeControl.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
if (dDist >= verticalDistance) continue;//不符合条件
result.Add(feat2,dDist);
@@ -794,12 +792,12 @@
///
/// 获取与选定管线水平距离小于特定值的<管线,管线距离>Dictionary
///
- ///
+ ///
///
- ///
+ ///
///
/// 选择的为空或不是管线则返回空,否则返回符合条件的Dictionary
- public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl1,GSOFeature selectedFeature, List _pipelineLayerNames, double dis)
+ public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl,GSOFeature selectedFeature, List pipelineLayerNames, double dis)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -809,23 +807,23 @@
Dictionary result = new Dictionary();
string caption = selectedFeature.Dataset.Caption;
GSOGeoPolygon3D polygon = line1.CreateBuffer(dis, true, 5, true, false);
- GSOFeature new_feat = new GSOFeature();
- new_feat.Geometry = polygon;
+ GSOFeature newFeat = new GSOFeature();
+ newFeat.Geometry = polygon;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
for (int j = 0; j < feats2.Length; j++)
{
GSOFeature feat2 = feats2[j];
GSOGeoPolyline3D line2 = feat2.Geometry as GSOGeoPolyline3D;
if (line2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
- out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
+ double dDist = globeControl.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
+ out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
result.Add(feat2,dDist);
@@ -836,11 +834,11 @@
///
///碰撞检测,获取与选择管线碰撞的管线
///
- /// 地球
+ /// 地球
/// 选中的feature
- /// 图层列表
+ /// 图层列表
///
- public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl1, GSOFeature selectedFeature, List _pipelineLayerNames)
+ public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl, GSOFeature selectedFeature, List pipelineLayerNames)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -851,12 +849,12 @@
GSOFeatures result = new GSOFeatures();
string caption = selectedFeature.Dataset.Caption;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -867,7 +865,7 @@
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
+ double dDist = globeControl.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
out pntIntersect2,out horLen,out verLen,true,true,dNoIntersetStartRatio);
if (dDist <= 0 ) result.Add(feat2);
}
diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs
index fe32265..cfdaf5c 100644
--- a/FeatureStatisticsService.cs
+++ b/FeatureStatisticsService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
using GeoScene.Data;
using GeoScene.Globe;
@@ -17,9 +18,9 @@
public static GSOFeatures Intersect_PointLayerByType(GSOGeoPolygon3D polygon, GSOLayer layer, string type)
{
- if (layer == null) return null;
-
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+
if (polygon == null)
{
@@ -48,7 +49,7 @@
///
///附属物列表
///
- public Dictionary getFeatureCountByFeatures(GSOFeatures feats)
+ public Dictionary GetFeatureCountByFeatures(GSOFeatures feats)
{
if (feats == null || feats.Length == 0) return null;
Dictionary result = new Dictionary();
@@ -64,13 +65,13 @@
///
///
///
- public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
+ public FeaturesClassfyResult GetPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
{
if (layer == null) return null;
FeaturesClassfyResult result = new FeaturesClassfyResult();
double totalLength = 0.0;
int ncount = 0;
- GSOFeatures features = getPipesByValueSection(polygon, layer, min, max, fieldName);
+ GSOFeatures features = GetPipesByValueSection(polygon, layer, min, max, fieldName);
for (int i = 0; i < features.Length; i++)
{
GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D;
@@ -98,11 +99,12 @@
/// 上限
/// 统计类型:"起始埋深"或"管径_毫米"
///
- public GSOFeatures getPipesByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
+ public GSOFeatures GetPipesByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
{
- if (layer == null) return null;
- GSOFeatures result = new GSOFeatures();
+
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ GSOFeatures result = new GSOFeatures();
//TODOLIST:优化为只获取管线,目前不清楚调用方式
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
@@ -127,12 +129,12 @@
}
//图层名称、管径、条数、总长度
- public List groupPipeByDiameter(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public List GroupPipeByDiameter(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
- List result = new List();
-
+
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ List result = new List();
//TODOLIST:优化为只获取管线,目前不清楚调用方式
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
@@ -164,7 +166,7 @@
}
FeaturesClassfyResult featuresClass = new FeaturesClassfyResult();
featuresClass.layerName = layer.Caption;
- featuresClass.groupFieldValue = diameter.ToString();
+ featuresClass.groupFieldValue = diameter.ToString(CultureInfo.InvariantCulture);
featuresClass.ncount = ncount;
featuresClass.sum = Math.Round(totalLength, 2);
@@ -181,12 +183,11 @@
///
///
///
- public List groupAccessories(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public List GroupAccessories(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
- List result = new List();
-
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ List result = new List();
//layer.Name是表名
string[] accessStrs = Utility.getAccStrsByLayer(layer.Name);
@@ -230,14 +231,14 @@
///
/// 材质
///
- public FeaturesClassfyResult groupPipeByMaterial(GSOGeoPolygon3D polygon, GSOLayer layer, string material)
+ public FeaturesClassfyResult GroupPipeByMaterial(GSOGeoPolygon3D polygon, GSOLayer layer, string material)
{
- if (layer == null) return null;
+
+ GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
FeaturesClassfyResult result = new FeaturesClassfyResult();
- GSOFeatureLayer flayer = layer as GSOFeatureLayer;
-
- //TODOLIST:优化为只获取管线,目前不清楚调用方式
+
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
string fixedMaterial = material == "无" ? "" : material;
@@ -245,16 +246,12 @@
int ncount = 0;
for (int i = 0; i < feats.Length; i++)
{
- if (feats[i].GetFieldAsString("材质").Equals(fixedMaterial))
- {
- GSOGeoPolyline3D line = feats[i].Geometry as GSOGeoPolyline3D;
- if (line != null)
- {
- double length = line.GetSpaceLength(true, 6378137);
- totalLength += length;
- ncount += 1;
- }
- }
+ if (!feats[i].GetFieldAsString("材质").Equals(fixedMaterial)) continue;
+ GSOGeoPolyline3D line = feats[i].Geometry as GSOGeoPolyline3D;
+ if (line == null) continue;
+ double length = line.GetSpaceLength(true, 6378137);
+ totalLength += length;
+ ncount += 1;
}
result.layerName = layer.Caption;
@@ -271,12 +268,12 @@
///
/// 要统计的长度
///
- public static GSOFeatures getLayerPipes(GSOGeoPolygon3D polygon, GSOLayer layer, out double length)
+ public static GSOFeatures GetLayerPipes(GSOGeoPolygon3D polygon, GSOLayer layer, out double length)
{
length = 0;
if (layer == null) return null;
- GSOFeatures feats = getLayerFeatures(polygon, layer);
+ GSOFeatures feats = GetLayerFeatures(polygon, layer);
double totallength = 0.00;
for (int i = 0; i < feats.Length; i++)
{
@@ -298,10 +295,10 @@
///
///
///
- public static GSOFeatures getLayerFeatures(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public static GSOFeatures GetLayerFeatures(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
}
diff --git a/FrmAccessoriesgather.cs b/FrmAccessoriesgather.cs
index c7787f7..e1d176e 100644
--- a/FrmAccessoriesgather.cs
+++ b/FrmAccessoriesgather.cs
@@ -213,7 +213,7 @@
{
FeatureStatisticsService featureService = new FeatureStatisticsService();
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layertype);
- List accessoriesResult = featureService.groupAccessories(polygon, layer);
+ List accessoriesResult = featureService.GroupAccessories(polygon, layer);
if (accessoriesResult == null || accessoriesResult.Count == 0)
{
diff --git a/DoublePanelAnalysis.cs b/DoublePanelAnalysis.cs
index 19511cc..e89f552 100644
--- a/DoublePanelAnalysis.cs
+++ b/DoublePanelAnalysis.cs
@@ -746,17 +746,17 @@
#region wxl 重构 碰撞审查,覆土审查,水平净距审查,垂直净距审查
-
+ //TODO LIST:UNDONE
///
/// 获取跟选择管线垂直距离小于特定值的管线列表和选择管线的距离
///
- /// 地球
+ /// 地球
/// 选择管线
- /// 各图层名称
+ /// 各图层名称
/// 垂直距离
/// 管线列表,可为空
- public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl1,
- GSOFeature selectedFeature, List _pipelineLayerNames, double verticalDistance )
+ public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl,
+ GSOFeature selectedFeature, List pipelineLayerNames, double verticalDistance )
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -765,16 +765,13 @@
if (pipeStyle1 == null) return null;
GSOGeoPolygon3D polygon = line1.CreateBuffer(0.1, true, 5, true, false);//要比较的区域
Dictionary result = new Dictionary();
-
string caption = selectedFeature.Dataset.Caption;
-
- GSOPoint3d pntIntersect1, pntIntersect2,pntProIntersect1, pntProIntersect2 ;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -783,7 +780,8 @@
if (line2 == null) continue;
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
- double dDist = globeControl1.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
+ GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
+ double dDist = globeControl.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
if (dDist >= verticalDistance) continue;//不符合条件
result.Add(feat2,dDist);
@@ -794,12 +792,12 @@
///
/// 获取与选定管线水平距离小于特定值的<管线,管线距离>Dictionary
///
- ///
+ ///
///
- ///
+ ///
///
/// 选择的为空或不是管线则返回空,否则返回符合条件的Dictionary
- public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl1,GSOFeature selectedFeature, List _pipelineLayerNames, double dis)
+ public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl,GSOFeature selectedFeature, List pipelineLayerNames, double dis)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -809,23 +807,23 @@
Dictionary result = new Dictionary();
string caption = selectedFeature.Dataset.Caption;
GSOGeoPolygon3D polygon = line1.CreateBuffer(dis, true, 5, true, false);
- GSOFeature new_feat = new GSOFeature();
- new_feat.Geometry = polygon;
+ GSOFeature newFeat = new GSOFeature();
+ newFeat.Geometry = polygon;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
for (int j = 0; j < feats2.Length; j++)
{
GSOFeature feat2 = feats2[j];
GSOGeoPolyline3D line2 = feat2.Geometry as GSOGeoPolyline3D;
if (line2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
- out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
+ double dDist = globeControl.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
+ out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
result.Add(feat2,dDist);
@@ -836,11 +834,11 @@
///
///碰撞检测,获取与选择管线碰撞的管线
///
- /// 地球
+ /// 地球
/// 选中的feature
- /// 图层列表
+ /// 图层列表
///
- public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl1, GSOFeature selectedFeature, List _pipelineLayerNames)
+ public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl, GSOFeature selectedFeature, List pipelineLayerNames)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -851,12 +849,12 @@
GSOFeatures result = new GSOFeatures();
string caption = selectedFeature.Dataset.Caption;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -867,7 +865,7 @@
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
+ double dDist = globeControl.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
out pntIntersect2,out horLen,out verLen,true,true,dNoIntersetStartRatio);
if (dDist <= 0 ) result.Add(feat2);
}
diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs
index fe32265..cfdaf5c 100644
--- a/FeatureStatisticsService.cs
+++ b/FeatureStatisticsService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
using GeoScene.Data;
using GeoScene.Globe;
@@ -17,9 +18,9 @@
public static GSOFeatures Intersect_PointLayerByType(GSOGeoPolygon3D polygon, GSOLayer layer, string type)
{
- if (layer == null) return null;
-
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+
if (polygon == null)
{
@@ -48,7 +49,7 @@
///
///附属物列表
///
- public Dictionary getFeatureCountByFeatures(GSOFeatures feats)
+ public Dictionary GetFeatureCountByFeatures(GSOFeatures feats)
{
if (feats == null || feats.Length == 0) return null;
Dictionary result = new Dictionary();
@@ -64,13 +65,13 @@
///
///
///
- public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
+ public FeaturesClassfyResult GetPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
{
if (layer == null) return null;
FeaturesClassfyResult result = new FeaturesClassfyResult();
double totalLength = 0.0;
int ncount = 0;
- GSOFeatures features = getPipesByValueSection(polygon, layer, min, max, fieldName);
+ GSOFeatures features = GetPipesByValueSection(polygon, layer, min, max, fieldName);
for (int i = 0; i < features.Length; i++)
{
GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D;
@@ -98,11 +99,12 @@
/// 上限
/// 统计类型:"起始埋深"或"管径_毫米"
///
- public GSOFeatures getPipesByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
+ public GSOFeatures GetPipesByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
{
- if (layer == null) return null;
- GSOFeatures result = new GSOFeatures();
+
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ GSOFeatures result = new GSOFeatures();
//TODOLIST:优化为只获取管线,目前不清楚调用方式
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
@@ -127,12 +129,12 @@
}
//图层名称、管径、条数、总长度
- public List groupPipeByDiameter(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public List GroupPipeByDiameter(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
- List result = new List();
-
+
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ List result = new List();
//TODOLIST:优化为只获取管线,目前不清楚调用方式
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
@@ -164,7 +166,7 @@
}
FeaturesClassfyResult featuresClass = new FeaturesClassfyResult();
featuresClass.layerName = layer.Caption;
- featuresClass.groupFieldValue = diameter.ToString();
+ featuresClass.groupFieldValue = diameter.ToString(CultureInfo.InvariantCulture);
featuresClass.ncount = ncount;
featuresClass.sum = Math.Round(totalLength, 2);
@@ -181,12 +183,11 @@
///
///
///
- public List groupAccessories(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public List GroupAccessories(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
- List result = new List();
-
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ List result = new List();
//layer.Name是表名
string[] accessStrs = Utility.getAccStrsByLayer(layer.Name);
@@ -230,14 +231,14 @@
///
/// 材质
///
- public FeaturesClassfyResult groupPipeByMaterial(GSOGeoPolygon3D polygon, GSOLayer layer, string material)
+ public FeaturesClassfyResult GroupPipeByMaterial(GSOGeoPolygon3D polygon, GSOLayer layer, string material)
{
- if (layer == null) return null;
+
+ GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
FeaturesClassfyResult result = new FeaturesClassfyResult();
- GSOFeatureLayer flayer = layer as GSOFeatureLayer;
-
- //TODOLIST:优化为只获取管线,目前不清楚调用方式
+
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
string fixedMaterial = material == "无" ? "" : material;
@@ -245,16 +246,12 @@
int ncount = 0;
for (int i = 0; i < feats.Length; i++)
{
- if (feats[i].GetFieldAsString("材质").Equals(fixedMaterial))
- {
- GSOGeoPolyline3D line = feats[i].Geometry as GSOGeoPolyline3D;
- if (line != null)
- {
- double length = line.GetSpaceLength(true, 6378137);
- totalLength += length;
- ncount += 1;
- }
- }
+ if (!feats[i].GetFieldAsString("材质").Equals(fixedMaterial)) continue;
+ GSOGeoPolyline3D line = feats[i].Geometry as GSOGeoPolyline3D;
+ if (line == null) continue;
+ double length = line.GetSpaceLength(true, 6378137);
+ totalLength += length;
+ ncount += 1;
}
result.layerName = layer.Caption;
@@ -271,12 +268,12 @@
///
/// 要统计的长度
///
- public static GSOFeatures getLayerPipes(GSOGeoPolygon3D polygon, GSOLayer layer, out double length)
+ public static GSOFeatures GetLayerPipes(GSOGeoPolygon3D polygon, GSOLayer layer, out double length)
{
length = 0;
if (layer == null) return null;
- GSOFeatures feats = getLayerFeatures(polygon, layer);
+ GSOFeatures feats = GetLayerFeatures(polygon, layer);
double totallength = 0.00;
for (int i = 0; i < feats.Length; i++)
{
@@ -298,10 +295,10 @@
///
///
///
- public static GSOFeatures getLayerFeatures(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public static GSOFeatures GetLayerFeatures(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
}
diff --git a/FrmAccessoriesgather.cs b/FrmAccessoriesgather.cs
index c7787f7..e1d176e 100644
--- a/FrmAccessoriesgather.cs
+++ b/FrmAccessoriesgather.cs
@@ -213,7 +213,7 @@
{
FeatureStatisticsService featureService = new FeatureStatisticsService();
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layertype);
- List accessoriesResult = featureService.groupAccessories(polygon, layer);
+ List accessoriesResult = featureService.GroupAccessories(polygon, layer);
if (accessoriesResult == null || accessoriesResult.Count == 0)
{
diff --git a/FrmAllPipelineStatis.cs b/FrmAllPipelineStatis.cs
index 60805ba..0911557 100644
--- a/FrmAllPipelineStatis.cs
+++ b/FrmAllPipelineStatis.cs
@@ -205,7 +205,7 @@
{
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(pipeLayerNames[i]);
double totalLength = 0.0;
- GSOFeatures fs = FeatureStatisticsService.getLayerPipes(polygon, layer,out totalLength);
+ GSOFeatures fs = FeatureStatisticsService.GetLayerPipes(polygon, layer,out totalLength);
if (fs == null) continue;
nameAndPipeMap.Add(pipeLayerNames[i], fs);
nameAndLengthMap.Add(pipeLayerNames[i],totalLength);
diff --git a/DoublePanelAnalysis.cs b/DoublePanelAnalysis.cs
index 19511cc..e89f552 100644
--- a/DoublePanelAnalysis.cs
+++ b/DoublePanelAnalysis.cs
@@ -746,17 +746,17 @@
#region wxl 重构 碰撞审查,覆土审查,水平净距审查,垂直净距审查
-
+ //TODO LIST:UNDONE
///
/// 获取跟选择管线垂直距离小于特定值的管线列表和选择管线的距离
///
- /// 地球
+ /// 地球
/// 选择管线
- /// 各图层名称
+ /// 各图层名称
/// 垂直距离
/// 管线列表,可为空
- public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl1,
- GSOFeature selectedFeature, List _pipelineLayerNames, double verticalDistance )
+ public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl,
+ GSOFeature selectedFeature, List pipelineLayerNames, double verticalDistance )
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -765,16 +765,13 @@
if (pipeStyle1 == null) return null;
GSOGeoPolygon3D polygon = line1.CreateBuffer(0.1, true, 5, true, false);//要比较的区域
Dictionary result = new Dictionary();
-
string caption = selectedFeature.Dataset.Caption;
-
- GSOPoint3d pntIntersect1, pntIntersect2,pntProIntersect1, pntProIntersect2 ;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -783,7 +780,8 @@
if (line2 == null) continue;
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
- double dDist = globeControl1.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
+ GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
+ double dDist = globeControl.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
if (dDist >= verticalDistance) continue;//不符合条件
result.Add(feat2,dDist);
@@ -794,12 +792,12 @@
///
/// 获取与选定管线水平距离小于特定值的<管线,管线距离>Dictionary
///
- ///
+ ///
///
- ///
+ ///
///
/// 选择的为空或不是管线则返回空,否则返回符合条件的Dictionary
- public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl1,GSOFeature selectedFeature, List _pipelineLayerNames, double dis)
+ public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl,GSOFeature selectedFeature, List pipelineLayerNames, double dis)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -809,23 +807,23 @@
Dictionary result = new Dictionary();
string caption = selectedFeature.Dataset.Caption;
GSOGeoPolygon3D polygon = line1.CreateBuffer(dis, true, 5, true, false);
- GSOFeature new_feat = new GSOFeature();
- new_feat.Geometry = polygon;
+ GSOFeature newFeat = new GSOFeature();
+ newFeat.Geometry = polygon;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
for (int j = 0; j < feats2.Length; j++)
{
GSOFeature feat2 = feats2[j];
GSOGeoPolyline3D line2 = feat2.Geometry as GSOGeoPolyline3D;
if (line2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
- out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
+ double dDist = globeControl.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
+ out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
result.Add(feat2,dDist);
@@ -836,11 +834,11 @@
///
///碰撞检测,获取与选择管线碰撞的管线
///
- /// 地球
+ /// 地球
/// 选中的feature
- /// 图层列表
+ /// 图层列表
///
- public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl1, GSOFeature selectedFeature, List _pipelineLayerNames)
+ public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl, GSOFeature selectedFeature, List pipelineLayerNames)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -851,12 +849,12 @@
GSOFeatures result = new GSOFeatures();
string caption = selectedFeature.Dataset.Caption;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -867,7 +865,7 @@
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
+ double dDist = globeControl.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
out pntIntersect2,out horLen,out verLen,true,true,dNoIntersetStartRatio);
if (dDist <= 0 ) result.Add(feat2);
}
diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs
index fe32265..cfdaf5c 100644
--- a/FeatureStatisticsService.cs
+++ b/FeatureStatisticsService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
using GeoScene.Data;
using GeoScene.Globe;
@@ -17,9 +18,9 @@
public static GSOFeatures Intersect_PointLayerByType(GSOGeoPolygon3D polygon, GSOLayer layer, string type)
{
- if (layer == null) return null;
-
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+
if (polygon == null)
{
@@ -48,7 +49,7 @@
///
///附属物列表
///
- public Dictionary getFeatureCountByFeatures(GSOFeatures feats)
+ public Dictionary GetFeatureCountByFeatures(GSOFeatures feats)
{
if (feats == null || feats.Length == 0) return null;
Dictionary result = new Dictionary();
@@ -64,13 +65,13 @@
///
///
///
- public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
+ public FeaturesClassfyResult GetPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
{
if (layer == null) return null;
FeaturesClassfyResult result = new FeaturesClassfyResult();
double totalLength = 0.0;
int ncount = 0;
- GSOFeatures features = getPipesByValueSection(polygon, layer, min, max, fieldName);
+ GSOFeatures features = GetPipesByValueSection(polygon, layer, min, max, fieldName);
for (int i = 0; i < features.Length; i++)
{
GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D;
@@ -98,11 +99,12 @@
/// 上限
/// 统计类型:"起始埋深"或"管径_毫米"
///
- public GSOFeatures getPipesByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
+ public GSOFeatures GetPipesByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
{
- if (layer == null) return null;
- GSOFeatures result = new GSOFeatures();
+
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ GSOFeatures result = new GSOFeatures();
//TODOLIST:优化为只获取管线,目前不清楚调用方式
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
@@ -127,12 +129,12 @@
}
//图层名称、管径、条数、总长度
- public List groupPipeByDiameter(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public List GroupPipeByDiameter(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
- List result = new List();
-
+
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ List result = new List();
//TODOLIST:优化为只获取管线,目前不清楚调用方式
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
@@ -164,7 +166,7 @@
}
FeaturesClassfyResult featuresClass = new FeaturesClassfyResult();
featuresClass.layerName = layer.Caption;
- featuresClass.groupFieldValue = diameter.ToString();
+ featuresClass.groupFieldValue = diameter.ToString(CultureInfo.InvariantCulture);
featuresClass.ncount = ncount;
featuresClass.sum = Math.Round(totalLength, 2);
@@ -181,12 +183,11 @@
///
///
///
- public List groupAccessories(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public List GroupAccessories(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
- List result = new List();
-
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ List result = new List();
//layer.Name是表名
string[] accessStrs = Utility.getAccStrsByLayer(layer.Name);
@@ -230,14 +231,14 @@
///
/// 材质
///
- public FeaturesClassfyResult groupPipeByMaterial(GSOGeoPolygon3D polygon, GSOLayer layer, string material)
+ public FeaturesClassfyResult GroupPipeByMaterial(GSOGeoPolygon3D polygon, GSOLayer layer, string material)
{
- if (layer == null) return null;
+
+ GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
FeaturesClassfyResult result = new FeaturesClassfyResult();
- GSOFeatureLayer flayer = layer as GSOFeatureLayer;
-
- //TODOLIST:优化为只获取管线,目前不清楚调用方式
+
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
string fixedMaterial = material == "无" ? "" : material;
@@ -245,16 +246,12 @@
int ncount = 0;
for (int i = 0; i < feats.Length; i++)
{
- if (feats[i].GetFieldAsString("材质").Equals(fixedMaterial))
- {
- GSOGeoPolyline3D line = feats[i].Geometry as GSOGeoPolyline3D;
- if (line != null)
- {
- double length = line.GetSpaceLength(true, 6378137);
- totalLength += length;
- ncount += 1;
- }
- }
+ if (!feats[i].GetFieldAsString("材质").Equals(fixedMaterial)) continue;
+ GSOGeoPolyline3D line = feats[i].Geometry as GSOGeoPolyline3D;
+ if (line == null) continue;
+ double length = line.GetSpaceLength(true, 6378137);
+ totalLength += length;
+ ncount += 1;
}
result.layerName = layer.Caption;
@@ -271,12 +268,12 @@
///
/// 要统计的长度
///
- public static GSOFeatures getLayerPipes(GSOGeoPolygon3D polygon, GSOLayer layer, out double length)
+ public static GSOFeatures GetLayerPipes(GSOGeoPolygon3D polygon, GSOLayer layer, out double length)
{
length = 0;
if (layer == null) return null;
- GSOFeatures feats = getLayerFeatures(polygon, layer);
+ GSOFeatures feats = GetLayerFeatures(polygon, layer);
double totallength = 0.00;
for (int i = 0; i < feats.Length; i++)
{
@@ -298,10 +295,10 @@
///
///
///
- public static GSOFeatures getLayerFeatures(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public static GSOFeatures GetLayerFeatures(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
}
diff --git a/FrmAccessoriesgather.cs b/FrmAccessoriesgather.cs
index c7787f7..e1d176e 100644
--- a/FrmAccessoriesgather.cs
+++ b/FrmAccessoriesgather.cs
@@ -213,7 +213,7 @@
{
FeatureStatisticsService featureService = new FeatureStatisticsService();
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layertype);
- List accessoriesResult = featureService.groupAccessories(polygon, layer);
+ List accessoriesResult = featureService.GroupAccessories(polygon, layer);
if (accessoriesResult == null || accessoriesResult.Count == 0)
{
diff --git a/FrmAllPipelineStatis.cs b/FrmAllPipelineStatis.cs
index 60805ba..0911557 100644
--- a/FrmAllPipelineStatis.cs
+++ b/FrmAllPipelineStatis.cs
@@ -205,7 +205,7 @@
{
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(pipeLayerNames[i]);
double totalLength = 0.0;
- GSOFeatures fs = FeatureStatisticsService.getLayerPipes(polygon, layer,out totalLength);
+ GSOFeatures fs = FeatureStatisticsService.GetLayerPipes(polygon, layer,out totalLength);
if (fs == null) continue;
nameAndPipeMap.Add(pipeLayerNames[i], fs);
nameAndLengthMap.Add(pipeLayerNames[i],totalLength);
diff --git a/FrmBSQStatis.cs b/FrmBSQStatis.cs
index 6f7838f..dd63f62 100644
--- a/FrmBSQStatis.cs
+++ b/FrmBSQStatis.cs
@@ -108,7 +108,7 @@
public Dictionary getBSQMapByPolygon(GSOGeoPolygon3D polygon,Dictionary typeAndCount, Dictionary codeAndType)
{
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption("标识器");
- GSOFeatures bsqFs = FeatureStatisticsService.getLayerFeatures(polygon, layer);
+ GSOFeatures bsqFs = FeatureStatisticsService.GetLayerFeatures(polygon, layer);
if (bsqFs == null || bsqFs.Length <= 0) {
LogHelper.WriteLog(typeof(FrmBSQStatis),"标识器图层下的Feature为空");
return null;
diff --git a/DoublePanelAnalysis.cs b/DoublePanelAnalysis.cs
index 19511cc..e89f552 100644
--- a/DoublePanelAnalysis.cs
+++ b/DoublePanelAnalysis.cs
@@ -746,17 +746,17 @@
#region wxl 重构 碰撞审查,覆土审查,水平净距审查,垂直净距审查
-
+ //TODO LIST:UNDONE
///
/// 获取跟选择管线垂直距离小于特定值的管线列表和选择管线的距离
///
- /// 地球
+ /// 地球
/// 选择管线
- /// 各图层名称
+ /// 各图层名称
/// 垂直距离
/// 管线列表,可为空
- public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl1,
- GSOFeature selectedFeature, List _pipelineLayerNames, double verticalDistance )
+ public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl,
+ GSOFeature selectedFeature, List pipelineLayerNames, double verticalDistance )
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -765,16 +765,13 @@
if (pipeStyle1 == null) return null;
GSOGeoPolygon3D polygon = line1.CreateBuffer(0.1, true, 5, true, false);//要比较的区域
Dictionary result = new Dictionary();
-
string caption = selectedFeature.Dataset.Caption;
-
- GSOPoint3d pntIntersect1, pntIntersect2,pntProIntersect1, pntProIntersect2 ;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -783,7 +780,8 @@
if (line2 == null) continue;
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
- double dDist = globeControl1.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
+ GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
+ double dDist = globeControl.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
if (dDist >= verticalDistance) continue;//不符合条件
result.Add(feat2,dDist);
@@ -794,12 +792,12 @@
///
/// 获取与选定管线水平距离小于特定值的<管线,管线距离>Dictionary
///
- ///
+ ///
///
- ///
+ ///
///
/// 选择的为空或不是管线则返回空,否则返回符合条件的Dictionary
- public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl1,GSOFeature selectedFeature, List _pipelineLayerNames, double dis)
+ public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl,GSOFeature selectedFeature, List pipelineLayerNames, double dis)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -809,23 +807,23 @@
Dictionary result = new Dictionary();
string caption = selectedFeature.Dataset.Caption;
GSOGeoPolygon3D polygon = line1.CreateBuffer(dis, true, 5, true, false);
- GSOFeature new_feat = new GSOFeature();
- new_feat.Geometry = polygon;
+ GSOFeature newFeat = new GSOFeature();
+ newFeat.Geometry = polygon;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
for (int j = 0; j < feats2.Length; j++)
{
GSOFeature feat2 = feats2[j];
GSOGeoPolyline3D line2 = feat2.Geometry as GSOGeoPolyline3D;
if (line2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
- out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
+ double dDist = globeControl.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
+ out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
result.Add(feat2,dDist);
@@ -836,11 +834,11 @@
///
///碰撞检测,获取与选择管线碰撞的管线
///
- /// 地球
+ /// 地球
/// 选中的feature
- /// 图层列表
+ /// 图层列表
///
- public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl1, GSOFeature selectedFeature, List _pipelineLayerNames)
+ public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl, GSOFeature selectedFeature, List pipelineLayerNames)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -851,12 +849,12 @@
GSOFeatures result = new GSOFeatures();
string caption = selectedFeature.Dataset.Caption;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -867,7 +865,7 @@
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
+ double dDist = globeControl.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
out pntIntersect2,out horLen,out verLen,true,true,dNoIntersetStartRatio);
if (dDist <= 0 ) result.Add(feat2);
}
diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs
index fe32265..cfdaf5c 100644
--- a/FeatureStatisticsService.cs
+++ b/FeatureStatisticsService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
using GeoScene.Data;
using GeoScene.Globe;
@@ -17,9 +18,9 @@
public static GSOFeatures Intersect_PointLayerByType(GSOGeoPolygon3D polygon, GSOLayer layer, string type)
{
- if (layer == null) return null;
-
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+
if (polygon == null)
{
@@ -48,7 +49,7 @@
///
///附属物列表
///
- public Dictionary getFeatureCountByFeatures(GSOFeatures feats)
+ public Dictionary GetFeatureCountByFeatures(GSOFeatures feats)
{
if (feats == null || feats.Length == 0) return null;
Dictionary result = new Dictionary();
@@ -64,13 +65,13 @@
///
///
///
- public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
+ public FeaturesClassfyResult GetPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
{
if (layer == null) return null;
FeaturesClassfyResult result = new FeaturesClassfyResult();
double totalLength = 0.0;
int ncount = 0;
- GSOFeatures features = getPipesByValueSection(polygon, layer, min, max, fieldName);
+ GSOFeatures features = GetPipesByValueSection(polygon, layer, min, max, fieldName);
for (int i = 0; i < features.Length; i++)
{
GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D;
@@ -98,11 +99,12 @@
/// 上限
/// 统计类型:"起始埋深"或"管径_毫米"
///
- public GSOFeatures getPipesByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
+ public GSOFeatures GetPipesByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
{
- if (layer == null) return null;
- GSOFeatures result = new GSOFeatures();
+
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ GSOFeatures result = new GSOFeatures();
//TODOLIST:优化为只获取管线,目前不清楚调用方式
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
@@ -127,12 +129,12 @@
}
//图层名称、管径、条数、总长度
- public List groupPipeByDiameter(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public List GroupPipeByDiameter(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
- List result = new List();
-
+
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ List result = new List();
//TODOLIST:优化为只获取管线,目前不清楚调用方式
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
@@ -164,7 +166,7 @@
}
FeaturesClassfyResult featuresClass = new FeaturesClassfyResult();
featuresClass.layerName = layer.Caption;
- featuresClass.groupFieldValue = diameter.ToString();
+ featuresClass.groupFieldValue = diameter.ToString(CultureInfo.InvariantCulture);
featuresClass.ncount = ncount;
featuresClass.sum = Math.Round(totalLength, 2);
@@ -181,12 +183,11 @@
///
///
///
- public List groupAccessories(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public List GroupAccessories(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
- List result = new List();
-
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ List result = new List();
//layer.Name是表名
string[] accessStrs = Utility.getAccStrsByLayer(layer.Name);
@@ -230,14 +231,14 @@
///
/// 材质
///
- public FeaturesClassfyResult groupPipeByMaterial(GSOGeoPolygon3D polygon, GSOLayer layer, string material)
+ public FeaturesClassfyResult GroupPipeByMaterial(GSOGeoPolygon3D polygon, GSOLayer layer, string material)
{
- if (layer == null) return null;
+
+ GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
FeaturesClassfyResult result = new FeaturesClassfyResult();
- GSOFeatureLayer flayer = layer as GSOFeatureLayer;
-
- //TODOLIST:优化为只获取管线,目前不清楚调用方式
+
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
string fixedMaterial = material == "无" ? "" : material;
@@ -245,16 +246,12 @@
int ncount = 0;
for (int i = 0; i < feats.Length; i++)
{
- if (feats[i].GetFieldAsString("材质").Equals(fixedMaterial))
- {
- GSOGeoPolyline3D line = feats[i].Geometry as GSOGeoPolyline3D;
- if (line != null)
- {
- double length = line.GetSpaceLength(true, 6378137);
- totalLength += length;
- ncount += 1;
- }
- }
+ if (!feats[i].GetFieldAsString("材质").Equals(fixedMaterial)) continue;
+ GSOGeoPolyline3D line = feats[i].Geometry as GSOGeoPolyline3D;
+ if (line == null) continue;
+ double length = line.GetSpaceLength(true, 6378137);
+ totalLength += length;
+ ncount += 1;
}
result.layerName = layer.Caption;
@@ -271,12 +268,12 @@
///
/// 要统计的长度
///
- public static GSOFeatures getLayerPipes(GSOGeoPolygon3D polygon, GSOLayer layer, out double length)
+ public static GSOFeatures GetLayerPipes(GSOGeoPolygon3D polygon, GSOLayer layer, out double length)
{
length = 0;
if (layer == null) return null;
- GSOFeatures feats = getLayerFeatures(polygon, layer);
+ GSOFeatures feats = GetLayerFeatures(polygon, layer);
double totallength = 0.00;
for (int i = 0; i < feats.Length; i++)
{
@@ -298,10 +295,10 @@
///
///
///
- public static GSOFeatures getLayerFeatures(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public static GSOFeatures GetLayerFeatures(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
}
diff --git a/FrmAccessoriesgather.cs b/FrmAccessoriesgather.cs
index c7787f7..e1d176e 100644
--- a/FrmAccessoriesgather.cs
+++ b/FrmAccessoriesgather.cs
@@ -213,7 +213,7 @@
{
FeatureStatisticsService featureService = new FeatureStatisticsService();
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layertype);
- List accessoriesResult = featureService.groupAccessories(polygon, layer);
+ List accessoriesResult = featureService.GroupAccessories(polygon, layer);
if (accessoriesResult == null || accessoriesResult.Count == 0)
{
diff --git a/FrmAllPipelineStatis.cs b/FrmAllPipelineStatis.cs
index 60805ba..0911557 100644
--- a/FrmAllPipelineStatis.cs
+++ b/FrmAllPipelineStatis.cs
@@ -205,7 +205,7 @@
{
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(pipeLayerNames[i]);
double totalLength = 0.0;
- GSOFeatures fs = FeatureStatisticsService.getLayerPipes(polygon, layer,out totalLength);
+ GSOFeatures fs = FeatureStatisticsService.GetLayerPipes(polygon, layer,out totalLength);
if (fs == null) continue;
nameAndPipeMap.Add(pipeLayerNames[i], fs);
nameAndLengthMap.Add(pipeLayerNames[i],totalLength);
diff --git a/FrmBSQStatis.cs b/FrmBSQStatis.cs
index 6f7838f..dd63f62 100644
--- a/FrmBSQStatis.cs
+++ b/FrmBSQStatis.cs
@@ -108,7 +108,7 @@
public Dictionary getBSQMapByPolygon(GSOGeoPolygon3D polygon,Dictionary typeAndCount, Dictionary codeAndType)
{
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption("标识器");
- GSOFeatures bsqFs = FeatureStatisticsService.getLayerFeatures(polygon, layer);
+ GSOFeatures bsqFs = FeatureStatisticsService.GetLayerFeatures(polygon, layer);
if (bsqFs == null || bsqFs.Length <= 0) {
LogHelper.WriteLog(typeof(FrmBSQStatis),"标识器图层下的Feature为空");
return null;
diff --git a/FrmpipeDeepstatis.cs b/FrmpipeDeepstatis.cs
index e00a1dc..6a5c895 100644
--- a/FrmpipeDeepstatis.cs
+++ b/FrmpipeDeepstatis.cs
@@ -148,7 +148,7 @@
//Double downLimit = Convert.ToDouble(dataGridViewX2.Rows[j].Cells["下限"].Value);
if (upLimit == null && downLimit == null) continue;//空行过滤
//获取符合条件的管线
- FeaturesClassfyResult result = service.getPipesInfoByValueSection(polygon, layer, downLimit, upLimit, "起始埋深");
+ FeaturesClassfyResult result = service.GetPipesInfoByValueSection(polygon, layer, downLimit, upLimit, "起始埋深");
DataGridViewRow row = new DataGridViewRow();
int index = dataGridViewX1.Rows.Add(row);
row = dataGridViewX1.Rows[index];
diff --git a/DoublePanelAnalysis.cs b/DoublePanelAnalysis.cs
index 19511cc..e89f552 100644
--- a/DoublePanelAnalysis.cs
+++ b/DoublePanelAnalysis.cs
@@ -746,17 +746,17 @@
#region wxl 重构 碰撞审查,覆土审查,水平净距审查,垂直净距审查
-
+ //TODO LIST:UNDONE
///
/// 获取跟选择管线垂直距离小于特定值的管线列表和选择管线的距离
///
- /// 地球
+ /// 地球
/// 选择管线
- /// 各图层名称
+ /// 各图层名称
/// 垂直距离
/// 管线列表,可为空
- public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl1,
- GSOFeature selectedFeature, List _pipelineLayerNames, double verticalDistance )
+ public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl,
+ GSOFeature selectedFeature, List pipelineLayerNames, double verticalDistance )
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -765,16 +765,13 @@
if (pipeStyle1 == null) return null;
GSOGeoPolygon3D polygon = line1.CreateBuffer(0.1, true, 5, true, false);//要比较的区域
Dictionary result = new Dictionary();
-
string caption = selectedFeature.Dataset.Caption;
-
- GSOPoint3d pntIntersect1, pntIntersect2,pntProIntersect1, pntProIntersect2 ;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -783,7 +780,8 @@
if (line2 == null) continue;
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
- double dDist = globeControl1.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
+ GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
+ double dDist = globeControl.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
if (dDist >= verticalDistance) continue;//不符合条件
result.Add(feat2,dDist);
@@ -794,12 +792,12 @@
///
/// 获取与选定管线水平距离小于特定值的<管线,管线距离>Dictionary
///
- ///
+ ///
///
- ///
+ ///
///
/// 选择的为空或不是管线则返回空,否则返回符合条件的Dictionary
- public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl1,GSOFeature selectedFeature, List _pipelineLayerNames, double dis)
+ public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl,GSOFeature selectedFeature, List pipelineLayerNames, double dis)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -809,23 +807,23 @@
Dictionary result = new Dictionary();
string caption = selectedFeature.Dataset.Caption;
GSOGeoPolygon3D polygon = line1.CreateBuffer(dis, true, 5, true, false);
- GSOFeature new_feat = new GSOFeature();
- new_feat.Geometry = polygon;
+ GSOFeature newFeat = new GSOFeature();
+ newFeat.Geometry = polygon;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
for (int j = 0; j < feats2.Length; j++)
{
GSOFeature feat2 = feats2[j];
GSOGeoPolyline3D line2 = feat2.Geometry as GSOGeoPolyline3D;
if (line2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
- out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
+ double dDist = globeControl.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
+ out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
result.Add(feat2,dDist);
@@ -836,11 +834,11 @@
///
///碰撞检测,获取与选择管线碰撞的管线
///
- /// 地球
+ /// 地球
/// 选中的feature
- /// 图层列表
+ /// 图层列表
///
- public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl1, GSOFeature selectedFeature, List _pipelineLayerNames)
+ public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl, GSOFeature selectedFeature, List pipelineLayerNames)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -851,12 +849,12 @@
GSOFeatures result = new GSOFeatures();
string caption = selectedFeature.Dataset.Caption;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -867,7 +865,7 @@
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
+ double dDist = globeControl.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
out pntIntersect2,out horLen,out verLen,true,true,dNoIntersetStartRatio);
if (dDist <= 0 ) result.Add(feat2);
}
diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs
index fe32265..cfdaf5c 100644
--- a/FeatureStatisticsService.cs
+++ b/FeatureStatisticsService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
using GeoScene.Data;
using GeoScene.Globe;
@@ -17,9 +18,9 @@
public static GSOFeatures Intersect_PointLayerByType(GSOGeoPolygon3D polygon, GSOLayer layer, string type)
{
- if (layer == null) return null;
-
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+
if (polygon == null)
{
@@ -48,7 +49,7 @@
///
///附属物列表
///
- public Dictionary getFeatureCountByFeatures(GSOFeatures feats)
+ public Dictionary GetFeatureCountByFeatures(GSOFeatures feats)
{
if (feats == null || feats.Length == 0) return null;
Dictionary result = new Dictionary();
@@ -64,13 +65,13 @@
///
///
///
- public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
+ public FeaturesClassfyResult GetPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
{
if (layer == null) return null;
FeaturesClassfyResult result = new FeaturesClassfyResult();
double totalLength = 0.0;
int ncount = 0;
- GSOFeatures features = getPipesByValueSection(polygon, layer, min, max, fieldName);
+ GSOFeatures features = GetPipesByValueSection(polygon, layer, min, max, fieldName);
for (int i = 0; i < features.Length; i++)
{
GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D;
@@ -98,11 +99,12 @@
/// 上限
/// 统计类型:"起始埋深"或"管径_毫米"
///
- public GSOFeatures getPipesByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
+ public GSOFeatures GetPipesByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
{
- if (layer == null) return null;
- GSOFeatures result = new GSOFeatures();
+
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ GSOFeatures result = new GSOFeatures();
//TODOLIST:优化为只获取管线,目前不清楚调用方式
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
@@ -127,12 +129,12 @@
}
//图层名称、管径、条数、总长度
- public List groupPipeByDiameter(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public List GroupPipeByDiameter(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
- List result = new List();
-
+
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ List result = new List();
//TODOLIST:优化为只获取管线,目前不清楚调用方式
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
@@ -164,7 +166,7 @@
}
FeaturesClassfyResult featuresClass = new FeaturesClassfyResult();
featuresClass.layerName = layer.Caption;
- featuresClass.groupFieldValue = diameter.ToString();
+ featuresClass.groupFieldValue = diameter.ToString(CultureInfo.InvariantCulture);
featuresClass.ncount = ncount;
featuresClass.sum = Math.Round(totalLength, 2);
@@ -181,12 +183,11 @@
///
///
///
- public List groupAccessories(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public List GroupAccessories(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
- List result = new List();
-
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ List result = new List();
//layer.Name是表名
string[] accessStrs = Utility.getAccStrsByLayer(layer.Name);
@@ -230,14 +231,14 @@
///
/// 材质
///
- public FeaturesClassfyResult groupPipeByMaterial(GSOGeoPolygon3D polygon, GSOLayer layer, string material)
+ public FeaturesClassfyResult GroupPipeByMaterial(GSOGeoPolygon3D polygon, GSOLayer layer, string material)
{
- if (layer == null) return null;
+
+ GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
FeaturesClassfyResult result = new FeaturesClassfyResult();
- GSOFeatureLayer flayer = layer as GSOFeatureLayer;
-
- //TODOLIST:优化为只获取管线,目前不清楚调用方式
+
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
string fixedMaterial = material == "无" ? "" : material;
@@ -245,16 +246,12 @@
int ncount = 0;
for (int i = 0; i < feats.Length; i++)
{
- if (feats[i].GetFieldAsString("材质").Equals(fixedMaterial))
- {
- GSOGeoPolyline3D line = feats[i].Geometry as GSOGeoPolyline3D;
- if (line != null)
- {
- double length = line.GetSpaceLength(true, 6378137);
- totalLength += length;
- ncount += 1;
- }
- }
+ if (!feats[i].GetFieldAsString("材质").Equals(fixedMaterial)) continue;
+ GSOGeoPolyline3D line = feats[i].Geometry as GSOGeoPolyline3D;
+ if (line == null) continue;
+ double length = line.GetSpaceLength(true, 6378137);
+ totalLength += length;
+ ncount += 1;
}
result.layerName = layer.Caption;
@@ -271,12 +268,12 @@
///
/// 要统计的长度
///
- public static GSOFeatures getLayerPipes(GSOGeoPolygon3D polygon, GSOLayer layer, out double length)
+ public static GSOFeatures GetLayerPipes(GSOGeoPolygon3D polygon, GSOLayer layer, out double length)
{
length = 0;
if (layer == null) return null;
- GSOFeatures feats = getLayerFeatures(polygon, layer);
+ GSOFeatures feats = GetLayerFeatures(polygon, layer);
double totallength = 0.00;
for (int i = 0; i < feats.Length; i++)
{
@@ -298,10 +295,10 @@
///
///
///
- public static GSOFeatures getLayerFeatures(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public static GSOFeatures GetLayerFeatures(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
}
diff --git a/FrmAccessoriesgather.cs b/FrmAccessoriesgather.cs
index c7787f7..e1d176e 100644
--- a/FrmAccessoriesgather.cs
+++ b/FrmAccessoriesgather.cs
@@ -213,7 +213,7 @@
{
FeatureStatisticsService featureService = new FeatureStatisticsService();
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layertype);
- List accessoriesResult = featureService.groupAccessories(polygon, layer);
+ List accessoriesResult = featureService.GroupAccessories(polygon, layer);
if (accessoriesResult == null || accessoriesResult.Count == 0)
{
diff --git a/FrmAllPipelineStatis.cs b/FrmAllPipelineStatis.cs
index 60805ba..0911557 100644
--- a/FrmAllPipelineStatis.cs
+++ b/FrmAllPipelineStatis.cs
@@ -205,7 +205,7 @@
{
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(pipeLayerNames[i]);
double totalLength = 0.0;
- GSOFeatures fs = FeatureStatisticsService.getLayerPipes(polygon, layer,out totalLength);
+ GSOFeatures fs = FeatureStatisticsService.GetLayerPipes(polygon, layer,out totalLength);
if (fs == null) continue;
nameAndPipeMap.Add(pipeLayerNames[i], fs);
nameAndLengthMap.Add(pipeLayerNames[i],totalLength);
diff --git a/FrmBSQStatis.cs b/FrmBSQStatis.cs
index 6f7838f..dd63f62 100644
--- a/FrmBSQStatis.cs
+++ b/FrmBSQStatis.cs
@@ -108,7 +108,7 @@
public Dictionary getBSQMapByPolygon(GSOGeoPolygon3D polygon,Dictionary typeAndCount, Dictionary codeAndType)
{
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption("标识器");
- GSOFeatures bsqFs = FeatureStatisticsService.getLayerFeatures(polygon, layer);
+ GSOFeatures bsqFs = FeatureStatisticsService.GetLayerFeatures(polygon, layer);
if (bsqFs == null || bsqFs.Length <= 0) {
LogHelper.WriteLog(typeof(FrmBSQStatis),"标识器图层下的Feature为空");
return null;
diff --git a/FrmpipeDeepstatis.cs b/FrmpipeDeepstatis.cs
index e00a1dc..6a5c895 100644
--- a/FrmpipeDeepstatis.cs
+++ b/FrmpipeDeepstatis.cs
@@ -148,7 +148,7 @@
//Double downLimit = Convert.ToDouble(dataGridViewX2.Rows[j].Cells["下限"].Value);
if (upLimit == null && downLimit == null) continue;//空行过滤
//获取符合条件的管线
- FeaturesClassfyResult result = service.getPipesInfoByValueSection(polygon, layer, downLimit, upLimit, "起始埋深");
+ FeaturesClassfyResult result = service.GetPipesInfoByValueSection(polygon, layer, downLimit, upLimit, "起始埋深");
DataGridViewRow row = new DataGridViewRow();
int index = dataGridViewX1.Rows.Add(row);
row = dataGridViewX1.Rows[index];
diff --git a/FrmpipeDiametergather.cs b/FrmpipeDiametergather.cs
index 132ab7f..a9d96fa 100644
--- a/FrmpipeDiametergather.cs
+++ b/FrmpipeDiametergather.cs
@@ -176,7 +176,7 @@
for (int i = 0; i < clbPipeLine.CheckedItems.Count; i++)
{
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(clbPipeLine.CheckedItems[i].ToString());
- List results = service.groupPipeByDiameter(polygon,layer);
+ List results = service.GroupPipeByDiameter(polygon,layer);
foreach(FeaturesClassfyResult result in results){
DataGridViewRow row = new DataGridViewRow();
diff --git a/DoublePanelAnalysis.cs b/DoublePanelAnalysis.cs
index 19511cc..e89f552 100644
--- a/DoublePanelAnalysis.cs
+++ b/DoublePanelAnalysis.cs
@@ -746,17 +746,17 @@
#region wxl 重构 碰撞审查,覆土审查,水平净距审查,垂直净距审查
-
+ //TODO LIST:UNDONE
///
/// 获取跟选择管线垂直距离小于特定值的管线列表和选择管线的距离
///
- /// 地球
+ /// 地球
/// 选择管线
- /// 各图层名称
+ /// 各图层名称
/// 垂直距离
/// 管线列表,可为空
- public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl1,
- GSOFeature selectedFeature, List _pipelineLayerNames, double verticalDistance )
+ public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl,
+ GSOFeature selectedFeature, List pipelineLayerNames, double verticalDistance )
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -765,16 +765,13 @@
if (pipeStyle1 == null) return null;
GSOGeoPolygon3D polygon = line1.CreateBuffer(0.1, true, 5, true, false);//要比较的区域
Dictionary result = new Dictionary();
-
string caption = selectedFeature.Dataset.Caption;
-
- GSOPoint3d pntIntersect1, pntIntersect2,pntProIntersect1, pntProIntersect2 ;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -783,7 +780,8 @@
if (line2 == null) continue;
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
- double dDist = globeControl1.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
+ GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
+ double dDist = globeControl.Globe.Analysis3D.ComputeVerticalDistance(line1, line2, out pntIntersect1,
out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
if (dDist >= verticalDistance) continue;//不符合条件
result.Add(feat2,dDist);
@@ -794,12 +792,12 @@
///
/// 获取与选定管线水平距离小于特定值的<管线,管线距离>Dictionary
///
- ///
+ ///
///
- ///
+ ///
///
/// 选择的为空或不是管线则返回空,否则返回符合条件的Dictionary
- public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl1,GSOFeature selectedFeature, List _pipelineLayerNames, double dis)
+ public static Dictionary HorizontalDistanceAnalysis(GSOGlobeControl globeControl,GSOFeature selectedFeature, List pipelineLayerNames, double dis)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -809,23 +807,23 @@
Dictionary result = new Dictionary();
string caption = selectedFeature.Dataset.Caption;
GSOGeoPolygon3D polygon = line1.CreateBuffer(dis, true, 5, true, false);
- GSOFeature new_feat = new GSOFeature();
- new_feat.Geometry = polygon;
+ GSOFeature newFeat = new GSOFeature();
+ newFeat.Geometry = polygon;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
for (int j = 0; j < feats2.Length; j++)
{
GSOFeature feat2 = feats2[j];
GSOGeoPolyline3D line2 = feat2.Geometry as GSOGeoPolyline3D;
if (line2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2, pntProIntersect1, pntProIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
- out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
+ double dDist = globeControl.Globe.Analysis3D.ComputeHorizonDistance(line1, line2, out pntIntersect1,
+ out pntIntersect2, out pntProIntersect1, out pntProIntersect2, false);
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
result.Add(feat2,dDist);
@@ -836,11 +834,11 @@
///
///碰撞检测,获取与选择管线碰撞的管线
///
- /// 地球
+ /// 地球
/// 选中的feature
- /// 图层列表
+ /// 图层列表
///
- public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl1, GSOFeature selectedFeature, List _pipelineLayerNames)
+ public static GSOFeatures CollisionAnalysis(GSOGlobeControl globeControl, GSOFeature selectedFeature, List pipelineLayerNames)
{
if (selectedFeature == null) return null;
GSOGeoPolyline3D line1 = selectedFeature.Geometry as GSOGeoPolyline3D;
@@ -851,12 +849,12 @@
GSOFeatures result = new GSOFeatures();
string caption = selectedFeature.Dataset.Caption;
- for (int i = 0; i < _pipelineLayerNames.Count; i++)
+ foreach (string pipelineName in pipelineLayerNames)
{
- if (caption == _pipelineLayerNames[i]) continue;//排除本图层
- GSOLayer layer2 = globeControl1.Globe.Layers.GetLayerByCaption(_pipelineLayerNames[i]);
+ if (caption == pipelineName) continue;//排除本图层
+ GSOLayer layer2 = globeControl.Globe.Layers.GetLayerByCaption(pipelineName);
if (layer2 == null) continue;
- GSOFeatures feats2 = FeatureStatisticsService.getLayerFeatures(polygon, layer2);
+ GSOFeatures feats2 = FeatureStatisticsService.GetLayerFeatures(polygon, layer2);
if (feats2 == null) continue;
for (int j = 0; j < feats2.Length; j++)
{
@@ -867,7 +865,7 @@
GSOPipeLineStyle3D pipeStyle2 = line2.Style as GSOPipeLineStyle3D;
if (pipeStyle2 == null) continue;
GSOPoint3d pntIntersect1, pntIntersect2;
- double dDist = globeControl1.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
+ double dDist = globeControl.Globe.Analysis3D.ComputeTwoGeoPolylineDistance(line1, line2, out pntIntersect1,
out pntIntersect2,out horLen,out verLen,true,true,dNoIntersetStartRatio);
if (dDist <= 0 ) result.Add(feat2);
}
diff --git a/FeatureStatisticsService.cs b/FeatureStatisticsService.cs
index fe32265..cfdaf5c 100644
--- a/FeatureStatisticsService.cs
+++ b/FeatureStatisticsService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
using GeoScene.Data;
using GeoScene.Globe;
@@ -17,9 +18,9 @@
public static GSOFeatures Intersect_PointLayerByType(GSOGeoPolygon3D polygon, GSOLayer layer, string type)
{
- if (layer == null) return null;
-
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+
if (polygon == null)
{
@@ -48,7 +49,7 @@
///
///附属物列表
///
- public Dictionary getFeatureCountByFeatures(GSOFeatures feats)
+ public Dictionary GetFeatureCountByFeatures(GSOFeatures feats)
{
if (feats == null || feats.Length == 0) return null;
Dictionary result = new Dictionary();
@@ -64,13 +65,13 @@
///
///
///
- public FeaturesClassfyResult getPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
+ public FeaturesClassfyResult GetPipesInfoByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
{
if (layer == null) return null;
FeaturesClassfyResult result = new FeaturesClassfyResult();
double totalLength = 0.0;
int ncount = 0;
- GSOFeatures features = getPipesByValueSection(polygon, layer, min, max, fieldName);
+ GSOFeatures features = GetPipesByValueSection(polygon, layer, min, max, fieldName);
for (int i = 0; i < features.Length; i++)
{
GSOGeoPolyline3D line = features[i].Geometry as GSOGeoPolyline3D;
@@ -98,11 +99,12 @@
/// 上限
/// 统计类型:"起始埋深"或"管径_毫米"
///
- public GSOFeatures getPipesByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
+ public GSOFeatures GetPipesByValueSection(GSOGeoPolygon3D polygon, GSOLayer layer, double? min, double? max, string fieldName)
{
- if (layer == null) return null;
- GSOFeatures result = new GSOFeatures();
+
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ GSOFeatures result = new GSOFeatures();
//TODOLIST:优化为只获取管线,目前不清楚调用方式
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
@@ -127,12 +129,12 @@
}
//图层名称、管径、条数、总长度
- public List groupPipeByDiameter(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public List GroupPipeByDiameter(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
- List result = new List();
-
+
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ List result = new List();
//TODOLIST:优化为只获取管线,目前不清楚调用方式
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
@@ -164,7 +166,7 @@
}
FeaturesClassfyResult featuresClass = new FeaturesClassfyResult();
featuresClass.layerName = layer.Caption;
- featuresClass.groupFieldValue = diameter.ToString();
+ featuresClass.groupFieldValue = diameter.ToString(CultureInfo.InvariantCulture);
featuresClass.ncount = ncount;
featuresClass.sum = Math.Round(totalLength, 2);
@@ -181,12 +183,11 @@
///
///
///
- public List groupAccessories(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public List GroupAccessories(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
- List result = new List();
-
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
+ List result = new List();
//layer.Name是表名
string[] accessStrs = Utility.getAccStrsByLayer(layer.Name);
@@ -230,14 +231,14 @@
///
/// 材质
///
- public FeaturesClassfyResult groupPipeByMaterial(GSOGeoPolygon3D polygon, GSOLayer layer, string material)
+ public FeaturesClassfyResult GroupPipeByMaterial(GSOGeoPolygon3D polygon, GSOLayer layer, string material)
{
- if (layer == null) return null;
+
+ GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
FeaturesClassfyResult result = new FeaturesClassfyResult();
- GSOFeatureLayer flayer = layer as GSOFeatureLayer;
-
- //TODOLIST:优化为只获取管线,目前不清楚调用方式
+
GSOFeatures feats = (polygon == null) ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
string fixedMaterial = material == "无" ? "" : material;
@@ -245,16 +246,12 @@
int ncount = 0;
for (int i = 0; i < feats.Length; i++)
{
- if (feats[i].GetFieldAsString("材质").Equals(fixedMaterial))
- {
- GSOGeoPolyline3D line = feats[i].Geometry as GSOGeoPolyline3D;
- if (line != null)
- {
- double length = line.GetSpaceLength(true, 6378137);
- totalLength += length;
- ncount += 1;
- }
- }
+ if (!feats[i].GetFieldAsString("材质").Equals(fixedMaterial)) continue;
+ GSOGeoPolyline3D line = feats[i].Geometry as GSOGeoPolyline3D;
+ if (line == null) continue;
+ double length = line.GetSpaceLength(true, 6378137);
+ totalLength += length;
+ ncount += 1;
}
result.layerName = layer.Caption;
@@ -271,12 +268,12 @@
///
/// 要统计的长度
///
- public static GSOFeatures getLayerPipes(GSOGeoPolygon3D polygon, GSOLayer layer, out double length)
+ public static GSOFeatures GetLayerPipes(GSOGeoPolygon3D polygon, GSOLayer layer, out double length)
{
length = 0;
if (layer == null) return null;
- GSOFeatures feats = getLayerFeatures(polygon, layer);
+ GSOFeatures feats = GetLayerFeatures(polygon, layer);
double totallength = 0.00;
for (int i = 0; i < feats.Length; i++)
{
@@ -298,10 +295,10 @@
///
///
///
- public static GSOFeatures getLayerFeatures(GSOGeoPolygon3D polygon, GSOLayer layer)
+ public static GSOFeatures GetLayerFeatures(GSOGeoPolygon3D polygon, GSOLayer layer)
{
- if (layer == null) return null;
GSOFeatureLayer flayer = layer as GSOFeatureLayer;
+ if (flayer == null) return null;
return polygon == null ? flayer.GetAllFeatures() : flayer.FindFeaturesInPolygon(polygon, false);
}
diff --git a/FrmAccessoriesgather.cs b/FrmAccessoriesgather.cs
index c7787f7..e1d176e 100644
--- a/FrmAccessoriesgather.cs
+++ b/FrmAccessoriesgather.cs
@@ -213,7 +213,7 @@
{
FeatureStatisticsService featureService = new FeatureStatisticsService();
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layertype);
- List accessoriesResult = featureService.groupAccessories(polygon, layer);
+ List accessoriesResult = featureService.GroupAccessories(polygon, layer);
if (accessoriesResult == null || accessoriesResult.Count == 0)
{
diff --git a/FrmAllPipelineStatis.cs b/FrmAllPipelineStatis.cs
index 60805ba..0911557 100644
--- a/FrmAllPipelineStatis.cs
+++ b/FrmAllPipelineStatis.cs
@@ -205,7 +205,7 @@
{
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(pipeLayerNames[i]);
double totalLength = 0.0;
- GSOFeatures fs = FeatureStatisticsService.getLayerPipes(polygon, layer,out totalLength);
+ GSOFeatures fs = FeatureStatisticsService.GetLayerPipes(polygon, layer,out totalLength);
if (fs == null) continue;
nameAndPipeMap.Add(pipeLayerNames[i], fs);
nameAndLengthMap.Add(pipeLayerNames[i],totalLength);
diff --git a/FrmBSQStatis.cs b/FrmBSQStatis.cs
index 6f7838f..dd63f62 100644
--- a/FrmBSQStatis.cs
+++ b/FrmBSQStatis.cs
@@ -108,7 +108,7 @@
public Dictionary getBSQMapByPolygon(GSOGeoPolygon3D polygon,Dictionary typeAndCount, Dictionary codeAndType)
{
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption("标识器");
- GSOFeatures bsqFs = FeatureStatisticsService.getLayerFeatures(polygon, layer);
+ GSOFeatures bsqFs = FeatureStatisticsService.GetLayerFeatures(polygon, layer);
if (bsqFs == null || bsqFs.Length <= 0) {
LogHelper.WriteLog(typeof(FrmBSQStatis),"标识器图层下的Feature为空");
return null;
diff --git a/FrmpipeDeepstatis.cs b/FrmpipeDeepstatis.cs
index e00a1dc..6a5c895 100644
--- a/FrmpipeDeepstatis.cs
+++ b/FrmpipeDeepstatis.cs
@@ -148,7 +148,7 @@
//Double downLimit = Convert.ToDouble(dataGridViewX2.Rows[j].Cells["下限"].Value);
if (upLimit == null && downLimit == null) continue;//空行过滤
//获取符合条件的管线
- FeaturesClassfyResult result = service.getPipesInfoByValueSection(polygon, layer, downLimit, upLimit, "起始埋深");
+ FeaturesClassfyResult result = service.GetPipesInfoByValueSection(polygon, layer, downLimit, upLimit, "起始埋深");
DataGridViewRow row = new DataGridViewRow();
int index = dataGridViewX1.Rows.Add(row);
row = dataGridViewX1.Rows[index];
diff --git a/FrmpipeDiametergather.cs b/FrmpipeDiametergather.cs
index 132ab7f..a9d96fa 100644
--- a/FrmpipeDiametergather.cs
+++ b/FrmpipeDiametergather.cs
@@ -176,7 +176,7 @@
for (int i = 0; i < clbPipeLine.CheckedItems.Count; i++)
{
GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(clbPipeLine.CheckedItems[i].ToString());
- List results = service.groupPipeByDiameter(polygon,layer);
+ List results = service.GroupPipeByDiameter(polygon,layer);
foreach(FeaturesClassfyResult result in results){
DataGridViewRow row = new DataGridViewRow();
diff --git a/FrmpipeMaterialGather.cs b/FrmpipeMaterialGather.cs
index ec71951..44e7f24 100644
--- a/FrmpipeMaterialGather.cs
+++ b/FrmpipeMaterialGather.cs
@@ -164,7 +164,7 @@
for (int j = 0; j < clbmaterials.CheckedItems.Count; j++)
{
- FeaturesClassfyResult featureResult = featureService.groupPipeByMaterial(polygon, layer, clbmaterials.CheckedItems[j].ToString());
+ FeaturesClassfyResult featureResult = featureService.GroupPipeByMaterial(polygon, layer, clbmaterials.CheckedItems[j].ToString());
DataGridViewRow row = new DataGridViewRow();
int index = dataGridViewX1.Rows.Add(row);
row = dataGridViewX1.Rows[index];
diff --git a/DoublePanelAnalysis.cs b/DoublePanelAnalysis.cs
index 19511cc..e89f552 100644
--- a/DoublePanelAnalysis.cs
+++ b/DoublePanelAnalysis.cs
@@ -746,17 +746,17 @@
#region wxl 重构 碰撞审查,覆土审查,水平净距审查,垂直净距审查
-
+ //TODO LIST:UNDONE
///
/// 获取跟选择管线垂直距离小于特定值的管线列表和选择管线的距离
///
- /// 地球
+ /// 地球
/// 选择管线
- /// 各图层名称
+ /// 各图层名称
/// 垂直距离
/// 管线列表,可为空
- public static Dictionary VerticalDistanceAnalysis(GSOGlobeControl globeControl1,
- GSOFeature selectedFeature, List _pipelineLayerNames, double verticalDistance )
+ public static Dictionary