MultilineShape¶
Namespace: ThinkGeo.Core
This class represents a MultilineShape, which is defined as one or more lines, each with two or more points.
public class MultilineShape : LineBaseShape
Inheritance Object → BaseShape → LineBaseShape → MultilineShape
Remarks:
None
Properties¶
Lines¶
This property is the collection of lines that make up the MultilineShape.
public Collection<LineShape> Lines { get; }
Property Value¶
Remarks:
None
Id¶
The id of the shape.
public string Id { get; set; }
Property Value¶
Tag¶
The tag of the shape.
public object Tag { get; set; }
Property Value¶
Constructors¶
MultilineShape()¶
This constructor creates the MultilineShape.
public MultilineShape()
Remarks:
None
MultilineShape(IEnumerable<LineShape>)¶
public MultilineShape(IEnumerable<LineShape> lineShapes)
Parameters¶
lineShapes
IEnumerable<LineShape>
Exceptions¶
ArgumentException
If you pass in any lineShapes which are invalid, we will throw an ArgumentException.
ArgumentNullException
If you pass a null as the lineShapes, we will throw an ArgumentNullException.
MultilineShape(String)¶
This constructor creates the MultilineShape.
public MultilineShape(string wellKnownText)
Parameters¶
wellKnownText
String
This parameter is the well-known text used to build the shape.
Exceptions¶
ArgumentException
Passing invalid well-known text in the wellKnownText parameter will throw an ArgumentException.
ArgumentNullException
Passing a null as the wellKnownText parameter will throw an ArgumentNullException.
Remarks:
None
MultilineShape(Byte[])¶
This constructor creates the MultilineShape.
public MultilineShape(Byte[] wellKnownBinary)
Parameters¶
wellKnownBinary
Byte[]
This parameter is the well-known binary used to build the shape.
Exceptions¶
ArgumentException
Passing invalid well-known binary in the bytes parameter will throw an ArgumentException.
ArgumentNullException
Passing a null as the bytes parameter will throw an ArgumentNullException.
Remarks:
None
Methods¶
GetBoundingBoxCore()¶
This method calculates the smallest RectangleShape that encompasses the entire geometry.
protected RectangleShape GetBoundingBoxCore()
Returns¶
The RectangleShape returned is the smallest RectangleShape that can encompass the
entire geometry.
Exceptions¶
InvalidOperationException
In the event you attempt to get the bounding box from a shape which has no points, it will throw an InvalidOperationException.
Remarks:
The GetBoundingBox method calculates the smallest RectangleShape that can encompass the entire geometry by examining each point in the geometry.
Depending on the number of PointShapes and complexity of the geometry, this operation can take longer for larger objects.
If the shape is a PointShape, then the bounding box's upper left and lower right points will be equal. This will create a RectangleShape with no area.
Overriding:
Please ensure that you validate the parameters being passed in and raise the exceptions defined above.
CloneDeepCore()¶
This method returns a complete copy of the shape without any references in common.
protected BaseShape CloneDeepCore()
Returns¶
This method returns a complete copy of the shape without any references in
common.
Remarks:
When you override this method, you need to ensure that there are no references in common between the original and the copy.
GetCenterPointCore()¶
protected PointShape GetCenterPointCore()
Returns¶
Reorder(PointShape, Double)¶
This API is used to make the lines within the Multiline ordered.
public void Reorder(PointShape startPoint, double tolerance)
Parameters¶
startPoint
PointShape
This parameter specifies the start point of the resulting re-ordered
MultilineShape.
tolerance
Double
This parameter specifies the tolerance between each line among the lines in the
Multiline. This parameter is very critial. If it is too large or too samll, the
re-order cannot suceed.
Remarks:
An ordered Multiline means that we can walk though the MultiLine from the first point to the last point without any branches, and that each line's end points should be within the given tolerance. If using this overload, the unit of the Multiline and the tolerance are both defaulted to meters. Please use the other overload if you want to specify the units yourself.
Reorder(PointShape, Double, GeographyUnit, DistanceUnit)¶
This API is used to make the lines within the Multiline ordered.
public void Reorder(PointShape startPoint, double tolerance, GeographyUnit shapeUnit, DistanceUnit unitOfTolerance)
Parameters¶
startPoint
PointShape
This parameter specifies the start point of the resulting re-ordered
MultilineShape.
tolerance
Double
This parameter specifies the tolerance between each line among the lines in the
Multiline. This parameter is very critial. If it is too large or too samll, the
re-order cannot suceed.
shapeUnit
GeographyUnit
This parameter specifies the GeographicUnit for the Multineline.
unitOfTolerance
DistanceUnit
This parameter specifies the distance unit used when considering the tolerance.
Remarks:
An ordered Multiline means that we can walk though the MultiLine from the first point to the last point without any branches, and that each line's end points should be within the given tolerance. When using this overload, you can specify the unit for the Multiline as well as the unit for the tolerance.
ReorderCore(PointShape, Double, GeographyUnit, DistanceUnit)¶
This API is used to make the lines within the Multiline ordered.
protected void ReorderCore(PointShape startPoint, double tolerance, GeographyUnit shapeUnit, DistanceUnit unitOfTolerance)
Parameters¶
startPoint
PointShape
This parameter specifies the start point of the resulting re-ordered
MultilineShape.
tolerance
Double
This parameter specifies the tolerance between each line among the lines in the
Multiline. This parameter is very critial. If it is too large or too samll, the
re-order cannot suceed.
shapeUnit
GeographyUnit
This parameter specifies the GeographicUnit for the Multineline.
unitOfTolerance
DistanceUnit
This parameter specifies the distance unit used when considering the tolerance.
Remarks:
An ordered Multiline means that we can walk though the MultiLine from the first point to the last point without any branches, and that each line's end points should be within the given tolerance. When using this overload, you can specify the unit for the Multiline as well as the unit for the tolerance.
GetLengthCore(GeographyUnit, DistanceUnit)¶
This method returns the length of the LineShape.
protected double GetLengthCore(GeographyUnit shapeUnit, DistanceUnit returningUnit)
Parameters¶
shapeUnit
GeographyUnit
This is the GeographyUnit of the shape you are performing the operation
on.
returningUnit
DistanceUnit
This is the DistanceUnit you would like to use for the distance parameter. For
example, if you select miles as your returningUnit, then the distance will be
returned in miles.
Returns¶
Double
The returned length is in the GeographyUnit of the shape.
Exceptions¶
ArgumentOutOfRangeException
If you pass in a shapeUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
If you pass in a returningUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
InvalidOperationException
In the event you attempt to call this method on a shape which has less than two points, it will throw an InvalidOperationException.
Remarks:
This method is useful when you want to know the total length of a line-based shape. If the shape is a MultilineShape, then the length is the sum of all of its lines. There is also an overload which allows you to specify the returning length in the unit of your choice.
GetPointOnALine(StartingPoint, Single)¶
This method returns a PointShape on the line, based on a percentage of the length of the line from either its first or last vertex (as defined by the startingPoint parameter).
public PointShape GetPointOnALine(StartingPoint startingPoint, float percentageOfLine)
Parameters¶
startingPoint
StartingPoint
The startingPoint defines whether the method starts at the beginning or the end of the
line.
percentageOfLine
Single
This parameter defines the percentage into the line. Valid values are between 0
and 100.
Returns¶
PointShape
This method returns a PointShape on the line, based on a percentage of the length of the line from either its first or last vertex (as defined by the startingPoint parameter).
Exceptions¶
ArgumentOutOfRangeException
If you pass in a startingPoint that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
Passing an invalid number for the percentageOfLine which is not between 0 and 100 will throw an ArgumentOutOfRangeException.
InvalidOperationException
In the event you attempt to call this method on a shape which has less than two points, it will throw an InvalidOperationException.
Remarks:
If you pass 100 or 0 as the percentage of the line, it will return either the first or last vertex, depending on the value of the startingPoint argument.
GetPointOnALine(StartingPoint, Double, GeographyUnit, DistanceUnit)¶
This method returns a PointShape on the line, based on a distance on the line from the first or last vertex (as defined by the startingPoint parameter).
public PointShape GetPointOnALine(StartingPoint startingPoint, double distance, GeographyUnit shapeUnit, DistanceUnit distanceUnit)
Parameters¶
startingPoint
StartingPoint
The startingPoint defines whether the method starts at the beginning or the end of the
line.
distance
Double
This parameter specifies the distance into the line you wish to move, in the unit
of the shape itself. Valid values must be greater than or equal to 0.
shapeUnit
GeographyUnit
This is the GeographyUnit of the shape you are performing the operation
on.
distanceUnit
DistanceUnit
This is the DistanceUnit you would like to use for the distance parameter. For
example, if you select miles as your distanceUnit, then the distance will be measured
in miles.
Returns¶
PointShape
This method returns a PointShape on the line, based on a distance on the line from the first or last vertex (as defined by the startingPoint parameter).
Exceptions¶
ArgumentOutOfRangeException
If you pass in a startingPoint that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
Passing an invalid distance which is not greater than or equal to 0 will throw an ArgumentOutOfRangeException.
InvalidOperationException
In the event you attempt to call this method on a shape which has less than two points, it will throw an InvalidOperationException.
ArgumentOutOfRangeException
If you pass in a shapeUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
If you pass in a distanceUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
Remarks:
Passing in a distance of 0 will return either the first or last point on the line, depending on the value of the startingPoint parameter.
GetPointOnALineCore(StartingPoint, Double, GeographyUnit, DistanceUnit)¶
This method returns a PointShape on the line, based on a distance on the line from the first or last vertex (as defined by the startingPoint parameter).
protected PointShape GetPointOnALineCore(StartingPoint startingPoint, double distance, GeographyUnit shapeUnit, DistanceUnit distanceUnit)
Parameters¶
startingPoint
StartingPoint
The startingPoint defines whether the method starts at the beginning or the end of the
line.
distance
Double
This parameter specifies the distance into the line you wish to move, in the unit
of the shape itself. Valid values must be greater than or equal to 0.
shapeUnit
GeographyUnit
This is the GeographyUnit of the shape you are performing the operation
on.
distanceUnit
DistanceUnit
This is the DistanceUnit you would like to use for the distance parameter. For
example, if you select miles as your distanceUnit, then the distance will be measured
in miles.
Returns¶
PointShape
This method returns a PointShape on the line, based on a distance on the line from the first or last vertex (as defined by the startingPoint parameter).
Exceptions¶
ArgumentOutOfRangeException
If you pass in a startingPoint that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
Passing an invalid distance which is not greater than or equal to 0 will throw an ArgumentOutOfRangeException.
InvalidOperationException
In the event you attempt to call this method on a shape which has less than two points, it will throw an InvalidOperationException.
ArgumentOutOfRangeException
If you pass in a shapeUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
If you pass in a distanceUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
Remarks:
Passing in a distance of 0 will return either the first or last point on the line, depending on the value of the startingPoint parameter.
GetLineOnALine(StartingPoint, Single, Single)¶
This method returns a BaseLineShape, based on a starting position and other factors.
public LineBaseShape GetLineOnALine(StartingPoint startingPoint, float startingPercentageOfTheLine, float percentageOfTheLine)
Parameters¶
startingPoint
StartingPoint
The startingPoint defines whether the method starts at the beginning or the end of the
line.
startingPercentageOfTheLine
Single
This parameter defines the starting percentage into the line. Valid values must be greater
than 0 and less than or equal to 100.
percentageOfTheLine
Single
This parameter defines the percentage into the line. Valid values must be greater
than 0 and less than or equal to 100.
Returns¶
This method returns a BaseLineShape, based on a starting position and other
factors.
Exceptions¶
ArgumentOutOfRangeException
If you pass in a startingPoint that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
Passing an invalid number for the percentageOfLine which is not greater than 0 and less than or equal to 100 will throw an ArgumentOutOfRangeException.
InvalidOperationException
In the event you attempt to call this method on a shape which has less than two points, it will throw an InvalidOperationException.
Remarks:
None
GetLineOnALine(StartingPoint, Single)¶
This method returns a BaseLineShape, based on a starting position and other factors.
public LineBaseShape GetLineOnALine(StartingPoint startingPoint, float percentageOfLine)
Parameters¶
startingPoint
StartingPoint
The startingPoint defines whether the method starts at the beginning or the end of the
line.
percentageOfLine
Single
This parameter defines the percentage into the line. Valid values must be greater
than 0 and less than or equal to 100.
Returns¶
This method returns a BaseLineShape, based on a starting position and other
factors.
Exceptions¶
ArgumentOutOfRangeException
If you pass in a startingPoint that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
Passing an invalid number for the percentageOfLine which is not greater than 0 and less than or equal to 100 will throw an ArgumentOutOfRangeException.
InvalidOperationException
In the event you attempt to call this method on a shape which has less than two points, it will throw an InvalidOperationException.
Remarks:
None
GetLineOnALine(StartingPoint, Double, Double, GeographyUnit, DistanceUnit)¶
This method returns a BaseLineShape, based on a starting position and other factors.
public LineBaseShape GetLineOnALine(StartingPoint startingPoint, double startingDistance, double distance, GeographyUnit shapeUnit, DistanceUnit distanceUnit)
Parameters¶
startingPoint
StartingPoint
The startingPoint defines whether the method starts at the beginning or the end of the
line.
startingDistance
Double
The starting distance from where you will start getting the line. For example, if
the line is 3 units long and you have a starting distance of 1 unit, the result will
be the last two units of the line. Valid values must be greater than 0. The starting
distance will be in the GeographyUnit of the shape.
distance
Double
The amount of the line you want to get after the startingDistance. Valid values
must be greater than 0.
shapeUnit
GeographyUnit
This is the GeographyUnit of the shape you are performing the operation
on.
distanceUnit
DistanceUnit
This is the DistanceUnit you would like to use for the distance parameter. For
example, if you select miles as your distanceUnit, then the distance will be measured
in miles.
Returns¶
This method returns a BaseLineShape, based on a starting position and other
factors.
Exceptions¶
ArgumentOutOfRangeException
Passing an invalid distance which is not greater than 0 will throw an ArgumentOutOfRangeException.
ArgumentOutOfRangeException
If you pass in a startingPoint that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
Passing an invalid startingDistance which is not greater than 0 will throw an ArgumentOutOfRangeException.
InvalidOperationException
In the event you attempt to call this method on a shape which has less than two points, it will throw an InvalidOperationException.
ArgumentOutOfRangeException
If you pass in a shapeUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
If you pass in a distanceUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
Remarks:
None
GetLineOnALineCore(StartingPoint, Double, Double, GeographyUnit, DistanceUnit)¶
This method returns a BaseLineShape, based on a starting position and other factors.
protected LineBaseShape GetLineOnALineCore(StartingPoint startingPoint, double startingDistance, double distance, GeographyUnit shapeUnit, DistanceUnit distanceUnit)
Parameters¶
startingPoint
StartingPoint
The startingPoint defines whether the method starts at the beginning or the end of the
line.
startingDistance
Double
The starting distance from where you will start getting the line. For example, if
the line is 3 units long and you have a starting distance of 1 unit, the result will
be the last two units of the line. Valid values must be greater than 0. The starting
distance will be in the GeographyUnit of the shape.
distance
Double
The amount of the line you want to get after the startingDistance. Valid values
must be greater than 0.
shapeUnit
GeographyUnit
This is the GeographyUnit of the shape you are performing the operation
on.
distanceUnit
DistanceUnit
This is the DistanceUnit you would like to use for the distance parameter. For
example, if you select miles as your distanceUnit, then the distance will be measured
in miles.
Returns¶
This method returns a BaseLineShape, based on a starting position and other
factors.
Exceptions¶
ArgumentOutOfRangeException
Passing an invalid distance which is not greater than 0 will throw an ArgumentOutOfRangeException.
ArgumentOutOfRangeException
If you pass in a startingPoint that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
Passing an invalid startingDistance which is not greater than 0 will throw an ArgumentOutOfRangeException.
InvalidOperationException
In the event you attempt to call this method on a shape which has less than two points, it will throw an InvalidOperationException.
ArgumentOutOfRangeException
If you pass in a shapeUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
If you pass in a distanceUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
Remarks:
None
GetLineOnALine(StartingPoint, PointShape)¶
This method returns a BaseLineShape, based on a starting position and other factors.
public LineBaseShape GetLineOnALine(StartingPoint startingPoint, PointShape endPointShape)
Parameters¶
startingPoint
StartingPoint
The startingPoint defines whether the method starts at the beginning or the end of the
line.
endPointShape
PointShape
The BaseLineShape returned will be between the startingPoint and the endPointShape
specified in this parameter.
Returns¶
This method returns a BaseLineShape, based on a starting position and other
factors.
Exceptions¶
ArgumentOutOfRangeException
If you pass in a startingPoint that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentNullException
Passing a null endPointShape will throw an ArgumentNullException.
InvalidOperationException
In the event you attempt to call this method on a shape which has less than two points, it will throw an InvalidOperationException.
Remarks:
None
GetLineOnALine(PointShape, PointShape)¶
This method returns a BaseLineShape, based on a starting position and other factors.
public LineBaseShape GetLineOnALine(PointShape startPointShape, PointShape endPointShape)
Parameters¶
startPointShape
PointShape
The startPointShape defines where you will start to get the line. If it does not stand on this
MultilineShape, the closest point on the MultilineShape will be the start PointShape.
endPointShape
PointShape
The endPointShape defines where you will stop getting the line. If it does not stand on this
MultilineShape, the closest point on the MultilineShape will be the end PointShape.
Returns¶
This method returns a BaseLineShape based on a start PointShape and an end PointShape.
Exceptions¶
ArgumentNullException
Passing a null startPointShape will throw an ArgumentNullException.
ArgumentNullException
Passing a null endPointShape will throw an ArgumentNullException.
InvalidOperationException
In the event you attempt to call this method on a shape which has less than two points, it will throw an InvalidOperationException.
Remarks:
None
ScaleUpCore(Double)¶
This method increases the size of the LineShape by the percentage given in the percentage parameter.
protected void ScaleUpCore(double percentage)
Parameters¶
percentage
Double
This is the percentage by which to increase the shape's size.
Exceptions¶
InvalidOperationException
In the event you attempt to call this method on a shape which has no points, it will throw an InvalidOperationException.
ArgumentOutOfRangeException
Passing an invalid percentage which is less than 0 will throw an ArgumentOutOfRangeException.
Remarks:
This method is useful when you would like to increase the size of the shape. Note that a larger percentage will scale the shape up faster, as you are applying the operation multiple times. There is also a ScaleDown method that will shrink the shape.
ScaleDownCore(Double)¶
This method decreases the size of the LineShape by the percentage given in the percentage parameter.
protected void ScaleDownCore(double percentage)
Parameters¶
percentage
Double
This is the percentage by which to decrease the shape's size.
Exceptions¶
InvalidOperationException
In the event you attempt to call this method on a shape which has no points, it will throw an InvalidOperationException.
ArgumentOutOfRangeException
Passing an invalid percentage which is less than 0 will throw an ArgumentOutOfRangeException.
Remarks:
This method is useful when you would like to decrease the size of the shape. Note that a larger percentage will scale the shape down faster, as you are applying the operation multiple times. There is also a ScaleUp method that will enlarge the shape.
RegisterCore(PointShape, PointShape, DistanceUnit, GeographyUnit)¶
This method returns a BaseShape which has been registered from its original coordinate system to another based on two anchor PointShapes.
protected BaseShape RegisterCore(PointShape fromPoint, PointShape toPoint, DistanceUnit fromUnit, GeographyUnit toUnit)
Parameters¶
fromPoint
PointShape
This parameter is the anchor PointShape in the coordinate of origin.
toPoint
PointShape
This parameter is the anchor PointShape in the coordinate of destination.
fromUnit
DistanceUnit
This parameter is the DistanceUnit of the coordinate of origin.
toUnit
GeographyUnit
This parameter is the GeographyUnit of the coordinate of destination.
Returns¶
BaseShape
This method returns a BaseShape which has been registered from its original coordinate system to another based on two anchor PointShapes.
Exceptions¶
ArgumentOutOfRangeException
If you pass in a fromUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
If you pass in a toUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
InvalidOperationException
In the event you attempt to call this method on a shape which has no points, it will throw an InvalidOperationException.
ArgumentNullException
Passing a null as the fromPoint parameter will throw an ArgumentNullException.
ArgumentNullException
Passing a null as the toPoint parameter will throw an ArgumentNullException.
Remarks:
Registering allows you to take a geometric shape generated in a planar system and attach it to the ground in a Geographic Unit.
A common scenario is integrating geometric shapes from external programs (such as CAD software or a modeling system) and placing them onto a map. You may have the schematics of a building in a CAD system and the relationship between all the points of the building are in feet. You want to then take the CAD image and attach it to where it really exists on a map. You would use the register method to do this.
Registering is also useful for scientific modeling, where software models things such as a plume of hazardous materials or the fallout from a volcano. The modeling software typically generates these models in a fictitious planar system. You would then use the register to take the abstract model and attach it to a map with real coordinates.
TranslateByOffsetCore(Double, Double, GeographyUnit, DistanceUnit)¶
This method returns a BaseLineShape, based on a starting position and other factors.
protected void TranslateByOffsetCore(double xOffsetDistance, double yOffsetDistance, GeographyUnit shapeUnit, DistanceUnit distanceUnit)
Parameters¶
xOffsetDistance
Double
This is the number of horizontal units of movement in the DistanceUnit specified
in the distanceUnit parameter.
yOffsetDistance
Double
This is the number of vertical units of movement in the DistanceUnit specified
in the distanceUnit parameter.
shapeUnit
GeographyUnit
This is the GeographyUnit of the shape you are performing the operation
on.
distanceUnit
DistanceUnit
This is the DistanceUnit you would like to use for the distance parameter. For
example, if you select miles as your distanceUnit, then the distance will be measured in
miles.
Exceptions¶
ArgumentOutOfRangeException
If you pass in a startingPoint that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
Passing an invalid number for the percentageOfLine which is not greater than 0 and less than or equal to 100 will throw an ArgumentOutOfRangeException.
InvalidOperationException
In the event you attempt to call this method on a shape which has less than two points, it will throw an InvalidOperationException.
Remarks:
None
TranslateByDegreeCore(Double, Double, GeographyUnit, DistanceUnit)¶
This method moves the base shape from one location to another based on a distance and a direction in degrees.
protected void TranslateByDegreeCore(double distance, double angleInDegrees, GeographyUnit shapeUnit, DistanceUnit distanceUnit)
Parameters¶
distance
Double
The distance is the number of units to move the shape in the angle specified. The
distance unit will be the same as the GeographyUnit for the shape. The distance must be
greater than or equal to 0.
angleInDegrees
Double
A number between 0 and 360 degrees that represents the direction you wish to move the shape, with 0 being up.
shapeUnit
GeographyUnit
This is the GeographyUnit of the shape you are performing the operation
on.
distanceUnit
DistanceUnit
This is the DistanceUnit you would like to use for the distance parameter. For
example, if you select miles as your distanceUnit, then the distance will be measured
in miles.
Exceptions¶
ArgumentOutOfRangeException
Passing an invalid angleInDegrees which is not between 0 and 360 will throw an ArgumentOutOfRangeException.
InvalidOperationException
In the event you attempt to call this method on a shape which has less than two points, it will throw an InvalidOperationException.
ArgumentOutOfRangeException
Passing an invalid distance which is not greater than or equal to 0 will throw an ArgumentOutOfRangeException.
ArgumentOutOfRangeException
If you pass in a shapeUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
If you pass in a distanceUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
Remarks:
This method moves the base shape from one location to another, based on an angleInDegrees and distance parameter. With this overload, it is important to note that the distance units are the same GeographicUnit as the shape. For example, if your shape is in decimal degrees and you call this method with a distance of 1, you're going to move this shape 1 decimal degree in direction of the angleInDegrees. In many cases it is more useful to specify the DistanceUnit of movement, such as in miles or yards, so for these scenarios there is another overload you may want to use instead.
If you pass a distance of 0, then the operation is ignored.
RotateCore(PointShape, Double)¶
This method rotates the shape a number of degrees based on a pivot point.
protected void RotateCore(PointShape pivotPoint, double degreeAngle)
Parameters¶
pivotPoint
PointShape
The pivotPoint represents the center of rotation.
degreeAngle
Double
The number of degrees of rotation required from 0 to 360.
Exceptions¶
ArgumentNullException
If you pass a null as the pivotPoint we will throw an ArgumentNullException.
ArgumentOutOfRangeException
Passing an invalid degreeAngle which is not between 0 and 360 will throw an ArgumentOutOfRangeException.
InvalidOperationException
In the event you attempt to call this method on a shape which has less than two points, it will throw an InvalidOperationException.
Remarks:
This method rotates the shape by a number of degrees based on a pivot point. By placing the pivot point in the center of the shape, you can achieve in-place rotation. By moving the pivot point outside of the center of the shape, you can translate the shape in a circular motion. Moving the pivot point further outside of the center will make the circular area larger.
GetClosestPointToCore(BaseShape, GeographyUnit)¶
This method returns the point of the current shape that is closest to the target shape.
protected PointShape GetClosestPointToCore(BaseShape targetShape, GeographyUnit shapeUnit)
Parameters¶
targetShape
BaseShape
The shape you are trying to find the closest point to.
shapeUnit
GeographyUnit
This is the GeographyUnit of the shape you are performing the operation
on.
Returns¶
A PointShape representing the closest point of the current shape to the
targetShape.
Exceptions¶
ArgumentException
If you pass in a targetShape which does not have any points, we will throw an ArgumentException.
ArgumentNullException
If you pass a null as the targetShape, we will throw an ArgumentNullException.
InvalidOperationException
In the event you attempt to call this method on a shape which has no points, it will throw an InvalidOperationException.
ArgumentOutOfRangeException
If you pass in a shapeUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
Remarks:
This method returns the point of the current shape that is closest to the target shape. It is often the case that the point returned is not a point of the object itself. An example would be a line with two points that are far apart from each other. If you set the targetShape to be a point midway between the points but a short distance away from the line, the method would return a point that is on the line but not either of the two points that make up the line.
GetDistanceToCore(BaseShape, GeographyUnit, DistanceUnit)¶
This method computes the distance between the current shape and the targetShape.
protected double GetDistanceToCore(BaseShape targetShape, GeographyUnit shapeUnit, DistanceUnit distanceUnit)
Parameters¶
targetShape
BaseShape
The shape you are trying to find the distance to.
shapeUnit
GeographyUnit
This is the GeographyUnit of the shape you are performing the operation
on.
distanceUnit
DistanceUnit
This is the DistanceUnit you would like to use for the distance parameter. For
example, if you select miles as your distanceUnit, then the distance will be measured
in miles.
Returns¶
This method returns the distance between the current shape and the
targetShape.
Exceptions¶
ArgumentException
If you pass in a targetShape which does not have any points, we will throw an ArgumentException.
ArgumentNullException
If you pass a null as the targetShape, we will throw an ArgumentNullException.
InvalidOperationException
In the event you attempt to call this method on a shape which has no points, it will throw an InvalidOperationException.
ArgumentOutOfRangeException
If you pass in a shapeUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
ArgumentOutOfRangeException
If you pass in a distanceUnit that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
Remarks:
None
GetWellKnownTextCore(RingOrder)¶
This method returns the well-known text representation of this shape.
protected string GetWellKnownTextCore(RingOrder outerRingOrder)
Parameters¶
outerRingOrder
RingOrder
Returns¶
String
This method returns a string that represents the shape in well-known text.
Exceptions¶
InvalidOperationException
In the event you attempt to call this method on a shape which has less than two points, it will throw an InvalidOperationException.
Remarks:
This method returns a string that represents the shape in well-known text. Well-known text allows you to describe a geometry as a string of text. Well-known text is useful when you want to save a geometry in a format such as a text file, or when you simply want to cut and paste the text between other applications. An alternative to well-known text is well-known binary, which is a binary representation of a geometry object. We have methods that work with well-known binary as well. Below are some samples of what well-known text might look like for various kinds of geometric shapes.
POINT(5 17)
LINESTRING(4 5,10 50,25 80)
POLYGON((2 2,6 2,6 6,2 6,2 2),(3 3,4 3,4 4,3 4,3 3))
MULTIPOINT(3.7 9.7,4.9 11.6)
MULTILINESTRING((4 5,11 51,21 26),(-4 -7,-9 -7,-14 -3))
MULTIPOLYGON(((2 2,6 2,6 6,2 6,2 2),(3 3,4 3,4 4,3 4,3 3)),((4 4,7 3,7 5,4 4)))
GetWellKnownTypeCore()¶
This method returns the well-known type for the shape.
protected WellKnownType GetWellKnownTypeCore()
Returns¶
WellKnownType
This method returns the well-known type for the shape.
Remarks:
None
LoadFromWellKnownDataCore(String)¶
This method hydrates the current shape with its data from well-known text.
protected void LoadFromWellKnownDataCore(string wellKnownText)
Parameters¶
wellKnownText
String
This parameter is the well-known text you will use to hydrate your object.
Exceptions¶
ArgumentException
Passing invalid well-known text in the wellKnownText parameter will throw an ArgumentException.
ArgumentNullException
Passing a null as the wellKnownText parameter will throw an ArgumentNullException.
Remarks:
None
LoadFromWellKnownDataCore(Byte[])¶
This method hydrates the current shape with its data from well-known binary.
protected void LoadFromWellKnownDataCore(Byte[] wellKnownBinary)
Parameters¶
wellKnownBinary
Byte[]
This parameter is the well-known binary used to populate the shape.
Exceptions¶
ArgumentException
Passing invalid well-known binary in the bytes parameter will throw an ArgumentException.
ArgumentNullException
Passing a null as the bytes parameter will throw an ArgumentNullException.
Remarks:
This is used when you want to hydrate a shape based on well-known binary. You can create the shape and then load the well-known binary using this method.
ValidateCore(ShapeValidationMode)¶
This method returns a ShapeValidationResult based on a series of tests.
protected ShapeValidationResult ValidateCore(ShapeValidationMode validationMode)
Parameters¶
validationMode
ShapeValidationMode
This parameter determines whether the test is simple or advanced. In some cases, the
advanced tests can take some time. The simple test is designed to always be
fast.
Returns¶
This method returns a ShapeValidationResult based on a series of
tests.
Exceptions¶
ArgumentOutOfRangeException
If you pass in a validationMode that is not defined in the enumeration, it will throw a ArgumentOutOfRangeException.
Remarks:
We use this method, with the simple enumeration, internally before doing any kind of other methods on the shape. In this way, we are able to verify the integrity of the shape itself. If you wish to test things such as whether a polygon self-intersects, we invite you to call this method with the advanced ShapeValidationMode. One thing to consider is that for complex polygon shapes this operation could take some time, which is why we only run the basic, faster test. If you are dealing with polygon shapes that are suspect, we suggest you run the advanced test.
GetCrossingCore(BaseShape)¶
This method returns the crossing points between the current shape and the passed-in target shape.
protected MultipointShape GetCrossingCore(BaseShape targetShape)
Parameters¶
targetShape
BaseShape
The target shape you wish to get crossing with.
Returns¶
This method returns the crossing points between the current shape and the passed-in target shape.
Exceptions¶
InvalidOperationException
In the event you attempt to call this method on a shape which has no points, it will throw an InvalidOperationException.
ArgumentNullException
If you pass a null as the targetShape, we will throw an ArgumentNullException.
Remarks:
As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework.
RemoveVertex(Vertex, MultilineShape)¶
This method removes the selected vertex from multiline shape.
public static bool RemoveVertex(Vertex selectedVertex, MultilineShape multilineShape)
Parameters¶
selectedVertex
Vertex
The selected vertex must be a vertex of multiline shape, otherwise it will return false and multiline shape will keep the same.
multilineShape
MultilineShape
The multiline shape will be removed one vertex.
Returns¶
Boolean
If remove sucess it will return true, otherwise return false.
RemoveVertex(Vertex)¶
This method removes the selected vertex from multiline shape.
public bool RemoveVertex(Vertex selectedVertex)
Parameters¶
selectedVertex
Vertex
The selected vertex must be a vertex of multiline shape, otherwise it will return false and multiline shape will keep the same.
Returns¶
Boolean
If remove sucess it will return true, otherwise return false.
ToMultiPolygonShape()¶
public MultipolygonShape ToMultiPolygonShape()
Returns¶
Scale(Double)¶
internal void Scale(double factor)
Parameters¶
factor
Double