📄 ntsgeometryconverter.cs
字号:
SharpMap.Geometries.LinearRing exterior = new SharpMap.Geometries.LinearRing(vertices);
return new SharpMap.Geometries.Polygon(exterior);
}
/// <summary>
/// Converts the <see cref="SharpMap.Geometries.BoundingBox"/> instance <paramref name="boundingBox"/>
/// into a correspondant <see cref="GisSharpBlog.NetTopologySuite.Geometries.Envelope"/>.
/// </summary>
/// <param name="boundingBox"></param>
/// <returns></returns>
public static GisSharpBlog.NetTopologySuite.Geometries.Envelope ToNTSEnvelope(SharpMap.Geometries.BoundingBox boundingBox)
{
return new GisSharpBlog.NetTopologySuite.Geometries.Envelope(boundingBox.Min.X, boundingBox.Max.X, boundingBox.Min.Y, boundingBox.Max.Y);
}
#region Internal NTS Converters
internal static GisSharpBlog.NetTopologySuite.Geometries.Coordinate ToNTSCoordinate(SharpMap.Geometries.Point point,
GisSharpBlog.NetTopologySuite.Geometries.GeometryFactory factory)
{
return new GisSharpBlog.NetTopologySuite.Geometries.Coordinate(point.X, point.Y);
}
internal static GisSharpBlog.NetTopologySuite.Geometries.Point ToNTSPoint(SharpMap.Geometries.Point point,
GisSharpBlog.NetTopologySuite.Geometries.GeometryFactory factory)
{
return factory.CreatePoint(ToNTSCoordinate(point, factory));
}
internal static GisSharpBlog.NetTopologySuite.Geometries.LineString ToNTSLineString(SharpMap.Geometries.LineString lineString,
GisSharpBlog.NetTopologySuite.Geometries.GeometryFactory factory)
{
GisSharpBlog.NetTopologySuite.Geometries.Coordinate[] coordinates = new GisSharpBlog.NetTopologySuite.Geometries.Coordinate[lineString.NumPoints];
int index = 0;
foreach (SharpMap.Geometries.Point point in lineString.Vertices)
coordinates[index++] = ToNTSCoordinate(point, factory);
return factory.CreateLineString(coordinates);
}
internal static GisSharpBlog.NetTopologySuite.Geometries.LinearRing ToNTSLinearRing(SharpMap.Geometries.LinearRing linearRing,
GisSharpBlog.NetTopologySuite.Geometries.GeometryFactory factory)
{
GisSharpBlog.NetTopologySuite.Geometries.Coordinate[] coordinates = new GisSharpBlog.NetTopologySuite.Geometries.Coordinate[linearRing.NumPoints];
int index = 0;
foreach (SharpMap.Geometries.Point point in linearRing.Vertices)
coordinates[index++] = ToNTSCoordinate(point, factory);
return factory.CreateLinearRing(coordinates);
}
internal static GisSharpBlog.NetTopologySuite.Geometries.Polygon ToNTSPolygon(SharpMap.Geometries.Polygon polygon,
GisSharpBlog.NetTopologySuite.Geometries.GeometryFactory factory)
{
GisSharpBlog.NetTopologySuite.Geometries.LinearRing shell = ToNTSLinearRing(polygon.ExteriorRing, factory);
GisSharpBlog.NetTopologySuite.Geometries.LinearRing[] holes = new GisSharpBlog.NetTopologySuite.Geometries.LinearRing[polygon.InteriorRings.Count];
int index = 0;
foreach (SharpMap.Geometries.LinearRing hole in polygon.InteriorRings)
holes[index++] = ToNTSLinearRing(hole, factory);
return factory.CreatePolygon(shell, holes);
}
internal static GisSharpBlog.NetTopologySuite.Geometries.MultiPoint ToNTSMultiPoint(SharpMap.Geometries.MultiPoint multiPoint,
GisSharpBlog.NetTopologySuite.Geometries.GeometryFactory factory)
{
GisSharpBlog.NetTopologySuite.Geometries.Point[] points = new GisSharpBlog.NetTopologySuite.Geometries.Point[multiPoint.Points.Count];
int index = 0;
foreach (SharpMap.Geometries.Point point in multiPoint.Points)
points[index++] = ToNTSPoint(point, factory);
return factory.CreateMultiPoint(points);
}
internal static GisSharpBlog.NetTopologySuite.Geometries.MultiLineString ToNTSMultiLineString(SharpMap.Geometries.MultiLineString multiLineString,
GisSharpBlog.NetTopologySuite.Geometries.GeometryFactory factory)
{
GisSharpBlog.NetTopologySuite.Geometries.LineString[] lstrings = new GisSharpBlog.NetTopologySuite.Geometries.LineString[multiLineString.LineStrings.Count];
int index = 0;
foreach (SharpMap.Geometries.LineString lstring in multiLineString.LineStrings)
lstrings[index++] = ToNTSLineString(lstring, factory);
return factory.CreateMultiLineString(lstrings);
}
internal static GisSharpBlog.NetTopologySuite.Geometries.MultiPolygon ToNTSMultiPolygon(SharpMap.Geometries.MultiPolygon multiPolygon,
GisSharpBlog.NetTopologySuite.Geometries.GeometryFactory factory)
{
GisSharpBlog.NetTopologySuite.Geometries.Polygon[] polygons = new GisSharpBlog.NetTopologySuite.Geometries.Polygon[multiPolygon.Polygons.Count];
int index = 0;
foreach (SharpMap.Geometries.Polygon polygon in multiPolygon.Polygons)
polygons[index++] = ToNTSPolygon(polygon, factory);
return factory.CreateMultiPolygon(polygons);
}
internal static GisSharpBlog.NetTopologySuite.Geometries.GeometryCollection ToNTSGeometryCollection(SharpMap.Geometries.GeometryCollection geometryCollection,
GisSharpBlog.NetTopologySuite.Geometries.GeometryFactory factory)
{
GisSharpBlog.NetTopologySuite.Geometries.Geometry[] geometries = new GisSharpBlog.NetTopologySuite.Geometries.Geometry[geometryCollection.Collection.Count];
int index = 0;
foreach (SharpMap.Geometries.Geometry geometry in geometryCollection.Collection)
geometries[index++] = ToNTSGeometry(geometry, factory);
return factory.CreateGeometryCollection(geometries);
}
#endregion
#region Internal SharpMap Converters
internal static SharpMap.Geometries.Point ToSharpMapPoint(GisSharpBlog.NetTopologySuite.Geometries.Coordinate coordinate)
{
return new SharpMap.Geometries.Point(coordinate.X, coordinate.Y);
}
internal static SharpMap.Geometries.Point ToSharpMapPoint(GisSharpBlog.NetTopologySuite.Geometries.Point point)
{
Debug.Assert(point.Coordinates.Length == 1);
return ToSharpMapPoint(point.Coordinate);
}
internal static SharpMap.Geometries.LineString ToSharpMapLineString(GisSharpBlog.NetTopologySuite.Geometries.LineString lineString)
{
Collection<SharpMap.Geometries.Point> vertices = new Collection<SharpMap.Geometries.Point>();
foreach (GisSharpBlog.NetTopologySuite.Geometries.Coordinate coordinate in lineString.Coordinates)
vertices.Add(ToSharpMapPoint(coordinate));
return new SharpMap.Geometries.LineString(vertices);
}
internal static SharpMap.Geometries.LinearRing ToSharpMapLinearRing(GisSharpBlog.NetTopologySuite.Geometries.LinearRing lineString)
{
Collection<SharpMap.Geometries.Point> vertices = new Collection<SharpMap.Geometries.Point>();
foreach (GisSharpBlog.NetTopologySuite.Geometries.Coordinate coordinate in lineString.Coordinates)
vertices.Add(ToSharpMapPoint(coordinate));
return new SharpMap.Geometries.LinearRing(vertices);
}
internal static SharpMap.Geometries.Polygon ToSharpMapPolygon(GisSharpBlog.NetTopologySuite.Geometries.Polygon polygon)
{
SharpMap.Geometries.LinearRing exteriorRing = ToSharpMapLinearRing((GisSharpBlog.NetTopologySuite.Geometries.LinearRing)polygon.ExteriorRing);
Collection<SharpMap.Geometries.LinearRing> interiorRings = new Collection<SharpMap.Geometries.LinearRing>();
foreach (GisSharpBlog.NetTopologySuite.Geometries.LineString interiorRing in polygon.InteriorRings)
interiorRings.Add(ToSharpMapLinearRing((GisSharpBlog.NetTopologySuite.Geometries.LinearRing)interiorRing));
return new SharpMap.Geometries.Polygon(exteriorRing, interiorRings);
}
internal static SharpMap.Geometries.MultiPoint ToSharpMapMultiPoint(GisSharpBlog.NetTopologySuite.Geometries.MultiPoint multiPoint)
{
SharpMap.Geometries.MultiPoint collection = new SharpMap.Geometries.MultiPoint();
foreach(GisSharpBlog.NetTopologySuite.Geometries.Point point in multiPoint.Geometries)
collection.Points.Add(ToSharpMapPoint(point));
return collection;
}
internal static SharpMap.Geometries.MultiLineString ToSharpMapMultiLineString(GisSharpBlog.NetTopologySuite.Geometries.MultiLineString multiLineString)
{
SharpMap.Geometries.MultiLineString collection = new SharpMap.Geometries.MultiLineString();
foreach (GisSharpBlog.NetTopologySuite.Geometries.LineString lineString in multiLineString.Geometries)
collection.LineStrings.Add(ToSharpMapLineString(lineString));
return collection;
}
internal static SharpMap.Geometries.MultiPolygon ToSharpMapMultiPolygon(GisSharpBlog.NetTopologySuite.Geometries.MultiPolygon multiPolygon)
{
SharpMap.Geometries.MultiPolygon collection = new SharpMap.Geometries.MultiPolygon();
foreach (GisSharpBlog.NetTopologySuite.Geometries.Polygon polygon in multiPolygon.Geometries)
collection.Polygons.Add(ToSharpMapPolygon(polygon));
return collection;
}
internal static SharpMap.Geometries.GeometryCollection ToSharpMapGeometryCollection(GisSharpBlog.NetTopologySuite.Geometries.GeometryCollection geometryCollection)
{
SharpMap.Geometries.GeometryCollection collection = new SharpMap.Geometries.GeometryCollection();
foreach (GisSharpBlog.NetTopologySuite.Geometries.Geometry geometry in geometryCollection.Geometries)
collection.Collection.Add(ToSharpMapGeometry(geometry));
return collection;
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -