/// <summary> /// /// </summary> /// <param name="geometry"></param> /// <returns></returns> protected ShapeGeometryTypes GetShapeType(Geometry geometry) { if (geometry is Point) return ShapeGeometryTypes.Point; else if (geometry is LinearRing) return ShapeGeometryTypes.LineString; else if (geometry is LineString) return ShapeGeometryTypes.LineString; else if (geometry is Polygon) return ShapeGeometryTypes.Polygon; else if (geometry is MultiPoint) return ShapeGeometryTypes.MultiPoint; else if (geometry is MultiLineString) return ShapeGeometryTypes.LineString; else if (geometry is MultiPolygon) return ShapeGeometryTypes.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> /// /// </summary> /// <param name="geometry"></param> /// <param name="beWriter"></param> protected void WriteFeatureHeader(Geometry geometry, BigEndianBinaryWriter beWriter) { // Write record number (big endian) beWriter.WriteIntBE((int)++recordCounter); // Write content length (big endian) int contentLength = shapeWriter.GetBytesLength(geometry); beWriter.WriteIntBE((int)(contentLength / 2)); // Write length in 16 bit words! }
/// <summary> /// Returns a list containing a Coordinate from each Polygon, LineString, and Point /// found inside the specified point. Thus, if the specified point is /// not a GeometryCollection, an empty list will be returned. /// </summary> public static IList GetCoordinates(Geometry geom) { IList pts = new ArrayList(); geom.Apply(new ConnectedElementPointFilter(pts)); return pts; }