示例#1
0
        public static GeometryType Convert(SmGeometries.GeometryType2 type)
        {

            switch (type)
            {
            case SmGeometries.GeometryType2.GeometryCollection:
                return GeometryType.GeometryCollection;
            case SmGeometries.GeometryType2.LineString:
                return GeometryType.LineString;
            case SmGeometries.GeometryType2.MultiLineString:
                return GeometryType.MultiLineString;
            case SmGeometries.GeometryType2.MultiPoint:
                return GeometryType.MultiPoint;
            case SmGeometries.GeometryType2.MultiPolygon:
                return GeometryType.MultiPolygon;
            case SmGeometries.GeometryType2.MultiSurface:
                return GeometryType.Point;
            case SmGeometries.GeometryType2.Polygon:
                return GeometryType.Polygon;
            }

            throw new NotSupportedException(
                string.Format(
                    CultureInfo.CurrentCulture,
                    SR.UnsupportedGeometryTypeException,
                    type
                )
            );
        }
示例#2
0
        /// <summary>Creates a new instance of the <see cref="SharpGeometry" /> class.</summary>
        /// <param name="geometry">The <see cref="SmGeometries.Geometry" /> to encapsulate.
        /// Its spatial reference must be initialized. </param>
        /// <exception cref="ArgumentNullException">
        ///  <para>The <paramref name="geometry" /> is <c>null</c>.</para>
        /// </exception>
        /// <exception cref="ArgumentException">
        ///   <para>The spatial reference of the specified <paramref name="geometry" /> was
        /// not initialized.</para>
        /// </exception>
        public SharpGeometry(SmGeometries.Geometry geometry)
        {
            Debug.Assert(geometry!=null);
            if (geometry==null)
                throw new ArgumentNullException("geometry");
            Debug.Assert(geometry.SpatialReference!=null);
            if (geometry.SpatialReference==null)
                throw new ArgumentException(SR.SharpMapSpatialReferenceMustBeInitializedException, "geometry");

            _Geometry=geometry;
        }
示例#3
0
 /// <summary>
 /// Creates an R-Tree query rectangle from a SharpMap bounding box
 /// </summary>
 /// <param name="bbox">The SharpMap bounding box</param>
 /// <returns></returns>
 public static Rectangle RectFromBoundingBox(Sm.BoundingBox bbox)
 {
     return new Rectangle((float)bbox.Left, (float)bbox.Bottom, (float)bbox.Right, (float)bbox.Top, (float)0.0, (float)0.0);
 }
示例#4
0
 /// <summary>
 /// Creates an FDO envelope from a SharpMap bounding box
 /// </summary>
 /// <param name="bbox">The SharpMap bounding box.</param>
 /// <returns></returns>
 public static Fdo.IEnvelope EnvelopeFromBoundingBox(Sm.BoundingBox bbox)
 {
     return FdoGeometryFactory.Instance.CreateEnvelopeXY(bbox.Left, bbox.Bottom, bbox.Right, bbox.Top);
 }
示例#5
0
 /// <summary>
 /// Converts an SharpMap Geometry to a FDO geometry
 /// </summary>
 /// <param name="geom">The SharpMap geometry</param>
 /// <returns></returns>
 public static FdoGeometry ToFdoGeometry(Sm.Geometry geom)
 {
     //Get the WKB form of the geometry
     byte[] wkb = GeometryToWKB.Write(geom);
     Fdo.IGeometry fg = FdoGeometryFactory.Instance.CreateGeometryFromWkb(wkb);
     return new FdoGeometry(fg);
 }
示例#6
0
 /// <summary>Converts the specified <paramref name="geometry" /> into a <see cref="SharpGeometry" />.</summary>
 /// <param name="geometry">The geometry to convert.</param>
 /// <returns>The converted geometry.</returns>
 public static SharpGeometry ToSharpGeometry(SmGeometries.Geometry geometry)
 {
     return new SharpGeometry(geometry);
 }
示例#7
0
        private static void _PopulateSimpleType(IGeometrySink sink, SmGeometries.Geometry geometry)
        {
            sink.BeginGeometry(GeometryTypeUtils.Convert(geometry.GeometryType));

            switch (geometry.GeometryType)
            {
            case SmGeometries.GeometryType2.LineString:
                CreateFigure(sink, ((SmGeometries.LineString)geometry).Vertices);
                break;
            case SmGeometries.GeometryType2.Point:
                CreateFigure(sink, new SmGeometries.Point[] { (SmGeometries.Point)geometry });
                break;
            case SmGeometries.GeometryType2.Polygon:
                {
                    var pol=(SmGeometries.Polygon)geometry;
                    CreateFigure(sink, pol.ExteriorRing.Vertices);

                    if (pol.InteriorRings!=null)
                        foreach (SmGeometries.LinearRing lr in pol.InteriorRings)
                            CreateFigure(sink, lr.Vertices);
                }
                break;
            default:
                throw new NotSupportedException(
                    string.Format(
                        CultureInfo.CurrentCulture,
                        SR.UnsupportedGeometryTypeException,
                        geometry.GeometryType
                    )
                );
            }

            sink.EndGeometry();
        }