-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathMultiCurve.cs
More file actions
90 lines (80 loc) · 2.72 KB
/
MultiCurve.cs
File metadata and controls
90 lines (80 loc) · 2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// Portions copyright 2005 - 2006: Morten Nielsen (www.iter.dk)
// Portions copyright 2006 - 2008: Rory Plaire (codekaizen@gmail.com)
//
// This file is part of SharpMap.
// SharpMap is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// SharpMap is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
// You should have received a copy of the GNU Lesser General Public License
// along with SharpMap; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
using System;
using GeoAPI.Geometries;
namespace SharpMap.SimpleGeometries
{
/// <summary>
/// A MultiCurve is a one-dimensional GeometryCollection whose elements are Curves
/// </summary>
public abstract class MultiCurve<TCurve> : GeometryCollection<TCurve>
where TCurve : Curve
{
/// <summary>
/// Initializes an instance of a MultiLineString
/// </summary>
protected MultiCurve() { }
protected MultiCurve(Int32 initialCapacity)
: base(initialCapacity) { }
/// <summary>
/// The inherent dimension of this Geometry object,
/// which must be less than or equal to the coordinate dimension.
/// </summary>
public override Dimensions Dimension
{
get { return Dimensions.Curve; }
}
/// <summary>
/// Returns true if this MultiCurve is closed.
/// </summary>
/// <remarks>
/// A closed multi-curve is one where
/// <see cref="Curve.StartPoint"/>.Equals(<see cref="Curve.EndPoint"/>)
/// is true for each curve in the collection.
/// </remarks>
public Boolean IsClosed
{
get
{
foreach (TCurve curve in this)
{
if(!curve.IsClosed)
{
return false;
}
}
return true;
}
}
/// <summary>
/// The Length of this MultiCurve which is equal
/// to the sum of the lengths of the element Curves.
/// </summary>
public Double Length
{
get
{
Double length = 0.0;
foreach (TCurve curve in this)
{
length += curve.Length;
}
return length;
}
}
}
}