Beispiel #1
0
        /// <summary>
        /// Converts any <see cref="SharpMap.Geometries.Geometry"/> to the correspondant
        /// <see cref=GisSharpBlog.NetTopologySuite.Geometries.Geometry"/>.
        /// </summary>
        /// <param name="geometry"></param>
        /// <returns></returns>
        public static Geometries.Geometry ToSharpMapGeometry(Geometry geometry)
        {
            if (geometry == null)
            {
                throw new NullReferenceException("geometry");
            }

            if (geometry.GetType() == typeof(GisSharpBlog.NetTopologySuite.Geometries.Point))
            {
                return(ToSharpMapPoint(geometry as GisSharpBlog.NetTopologySuite.Geometries.Point));
            }

            else if (geometry.GetType() == typeof(LineString))
            {
                return(ToSharpMapLineString(geometry as LineString));
            }

            else if (geometry.GetType() == typeof(Polygon))
            {
                return(ToSharpMapPolygon(geometry as Polygon));
            }

            else if (geometry.GetType() == typeof(MultiPoint))
            {
                return(ToSharpMapMultiPoint(geometry as MultiPoint));
            }

            else if (geometry.GetType() == typeof(MultiLineString))
            {
                return(ToSharpMapMultiLineString(geometry as MultiLineString));
            }

            else if (geometry.GetType() == typeof(MultiPolygon))
            {
                return(ToSharpMapMultiPolygon(geometry as MultiPolygon));
            }

            else if (geometry.GetType() == typeof(GeometryCollection))
            {
                return(ToSharpMapGeometryCollection(geometry as GeometryCollection));
            }

            else
            {
                throw new NotSupportedException("Type " + geometry.GetType().FullName + " not supported");
            }
        }
Beispiel #2
0
        private bool CompareGeometries(Geometry a, Geometry b)
        {
            if (a != null && b != null && a.GetType().Name == b.GetType().Name)
            {
                Geometry aClone = (Geometry)a.Clone();
                Geometry bClone = (Geometry)b.Clone();

                aClone.Normalize();
                bClone.Normalize();

                return aClone.EqualsExact(bClone, m_dTolerance);
            }

            return false;
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="geometry"></param>
 /// <returns></returns>
 protected ShapeGeometryType GetShapeType(Geometry geometry)
 {
     if (geometry is Point)
         return ShapeGeometryType.Point;
     else if (geometry is LinearRing)
         return ShapeGeometryType.LineString;
     else if (geometry is LineString)
         return ShapeGeometryType.LineString;
     else if (geometry is Polygon)
         return ShapeGeometryType.Polygon;
     else if (geometry is MultiPoint)
         return ShapeGeometryType.MultiPoint;
     else if (geometry is MultiLineString)
         return ShapeGeometryType.LineString;
     else if (geometry is MultiPolygon)
         return ShapeGeometryType.Polygon;
     else throw new NotSupportedException("Unsupported Geometry implementation:" + geometry.GetType());            
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="geometry"></param>
 /// <param name="leWriter"></param>
 /// <param name="beWriter"></param>
 protected void Write(Geometry geometry, BinaryWriter leWriter, BigEndianBinaryWriter beWriter)
 {
     WriteFeatureHeader(geometry, beWriter);             
                   
     if (geometry is Point)                
         shapeWriter.Write(geometry as Point, leWriter);
     else if (geometry is LineString)
         shapeWriter.Write(geometry as LineString, leWriter);
     else if (geometry is Polygon)
         shapeWriter.Write(geometry as Polygon, leWriter);
     else if (geometry is MultiPoint)
         shapeWriter.Write(geometry as MultiPoint, leWriter);
     else if (geometry is MultiLineString)
         shapeWriter.Write(geometry as MultiLineString, leWriter);
     else if (geometry is MultiPolygon)
         shapeWriter.Write(geometry as MultiPolygon, leWriter);
     else throw new NotSupportedException("Unsupported Geometry implementation:" + geometry.GetType());
 }        
        /// <summary>
        /// Converts any <see cref="SharpMap.Geometries.Geometry"/> to the correspondant 
        /// <see cref=GisSharpBlog.NetTopologySuite.Geometries.Geometry"/>.
        /// </summary>
        /// <param name="geometry"></param>
        /// <returns></returns>
        public static Geometries.Geometry ToSharpMapGeometry(Geometry geometry)
        {
            if (geometry == null)
                throw new NullReferenceException("geometry");

            if (geometry.GetType() == typeof (GisSharpBlog.NetTopologySuite.Geometries.Point))
                return ToSharpMapPoint(geometry as GisSharpBlog.NetTopologySuite.Geometries.Point);

            else if (geometry.GetType() == typeof (LineString))
                return ToSharpMapLineString(geometry as LineString);

            else if (geometry.GetType() == typeof (Polygon))
                return ToSharpMapPolygon(geometry as Polygon);

            else if (geometry.GetType() == typeof (MultiPoint))
                return ToSharpMapMultiPoint(geometry as MultiPoint);

            else if (geometry.GetType() == typeof (MultiLineString))
                return ToSharpMapMultiLineString(geometry as MultiLineString);

            else if (geometry.GetType() == typeof (MultiPolygon))
                return ToSharpMapMultiPolygon(geometry as MultiPolygon);

            else if (geometry.GetType() == typeof (GeometryCollection))
                return ToSharpMapGeometryCollection(geometry as GeometryCollection);

            else throw new NotSupportedException("Type " + geometry.GetType().FullName + " not supported");
        }