public static void ConvertGeomToLineSegment(Geometry geom, List<LineSegment> ls)
{
if (ls == null) ls = new List<LineSegment>();
if (geom.GeometryType == "LineString")
{
for (var i = 0; i < geom.Coordinates.Length - 1; i++)
{
ls.Add(new LineSegment(geom.Coordinates[i], geom.Coordinates[i + 1]));
}
}
else
{
if (geom.GeometryType == "GeometryCollection" || geom.GeometryType.StartsWith("Multi"))
{
for (int i = 0; i < geom.NumGeometries; i++)
{
ConvertGeomToLineSegment(geom.GetGeometryN(i), ls);
}
}
else
{
var lsTmp = new List<LineString>();
ConvertGeomToLineString(geom, lsTmp);
foreach (var g in lsTmp)
{
ConvertGeomToLineSegment(g,ls);
}
}
}
}
总结:递归思想。

该代码段展示了如何使用递归方法将几何对象(如LineString或GeometryCollection)转换为LineSegment列表。主要处理了单一线串和多几何类型的转换,确保所有子几何元素都被转换并添加到结果列表中。
756

被折叠的 条评论
为什么被折叠?



