public WhenCreatingAPointFromXyValues() { _fixture = new Fixture(); _x = _fixture.Create <double>(); _y = _fixture.Create <double>(); _sut = new PointM(_x, _y); }
internal static ShapeContent ReadPolyLineMFromRecord(BinaryReader reader, ShapeRecordHeader header) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } reader.ReadBytes(BoundingBoxByteLength.ToInt32()); // skip BoundingBox var numberOfParts = reader.ReadInt32LittleEndian(); var numberOfPoints = reader.ReadInt32LittleEndian(); var parts = new int[numberOfParts]; for (var partIndex = 0; partIndex < numberOfParts; partIndex++) { parts[partIndex] = reader.ReadInt32LittleEndian(); } var points = new PointM[numberOfPoints]; for (var pointIndex = 0; pointIndex < numberOfPoints; pointIndex++) { points[pointIndex] = new PointM( reader.ReadDoubleLittleEndian(), reader.ReadDoubleLittleEndian()); } var contentLengthWithoutMeasures = ContentHeaderLength .Plus(ByteLength.Int32.Times(numberOfParts)) // Parts .Plus(ByteLength.Double.Times(numberOfPoints * 2)); // Points(X,Y) if (header.ContentLength > contentLengthWithoutMeasures) { reader.ReadBytes(MeasureRangeByteLength.ToInt32()); // skip MeasureRange for (var measureIndex = 0; measureIndex < numberOfPoints; measureIndex++) { points[measureIndex].ChangeMeasurement(reader.ReadDoubleLittleEndian()); // Points[i].M } } var lines = new ILineString[numberOfParts]; var toPointIndex = points.Length; for (var partIndex = numberOfParts - 1; partIndex >= 0; partIndex--) { var fromPointIndex = parts[partIndex]; lines[partIndex] = new LineString( new PointSequence(new ArraySegment <PointM>(points, fromPointIndex, toPointIndex - fromPointIndex)), GeometryConfiguration.GeometryFactory); toPointIndex = fromPointIndex; } return(new PolyLineMShapeContent(new MultiLineString(lines))); }
public WhenCreatingAPointFromACoordinate() { _fixture = new Fixture(); _coordinate = new Coordinate( _fixture.Create <double>(), _fixture.Create <double>(), _fixture.Create <double>() ); _sut = new PointM(_coordinate); }
public WhenCreatingAPointFromAnCoordinateSequence() { _fixture = new Fixture(); _xySequence = new DotSpatialAffineCoordinateSequence(1, Ordinates.XYZ); _xySequence.SetOrdinate(0, Ordinate.X, _fixture.Create <double>()); _xySequence.SetOrdinate(0, Ordinate.Y, _fixture.Create <double>()); _xySequence.SetOrdinate(0, Ordinate.Z, _fixture.Create <double>()); _sut = new PointM(_xySequence); }
internal static ShapeContent ReadPolyLineMGeometry(BinaryReader reader) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } reader.ReadBytes(BoundingBoxByteLength.ToInt32()); // skip BoundingBox var numberOfParts = reader.ReadInt32LittleEndian(); var numberOfPoints = reader.ReadInt32LittleEndian(); var parts = new int[numberOfParts]; for (var partIndex = 0; partIndex < numberOfParts; partIndex++) { parts[partIndex] = reader.ReadInt32LittleEndian(); } var points = new PointM[numberOfPoints]; for (var pointIndex = 0; pointIndex < numberOfPoints; pointIndex++) { points[pointIndex] = new PointM( reader.ReadDoubleLittleEndian(), reader.ReadDoubleLittleEndian()); } if (reader.BaseStream.CanSeek && reader.BaseStream.Position != reader.BaseStream.Length) { reader.ReadBytes(MeasureRangeByteLength.ToInt32()); // skip MeasureRange for (var measureIndex = 0; measureIndex < numberOfPoints; measureIndex++) { points[measureIndex].ChangeMeasurement(reader.ReadDoubleLittleEndian()); // Points[i].M } } //else try-catch-EndOfStreamException?? or only support seekable streams? var lines = new ILineString[numberOfParts]; var toPointIndex = points.Length; for (var partIndex = numberOfParts - 1; partIndex >= 0; partIndex--) { var fromPointIndex = parts[partIndex]; lines[partIndex] = new LineString( new PointSequence(new ArraySegment <PointM>(points, fromPointIndex, toPointIndex - fromPointIndex)), GeometryConfiguration.GeometryFactory); toPointIndex = fromPointIndex; } return(new PolyLineMShapeContent(new MultiLineString(lines))); }
public void SetOrdinate(int index, Ordinate ordinate, double value) { if (index >= _points.Length) { return; } _points[index] = new PointM( ordinate == Ordinate.X ? value : _points[index].X, ordinate == Ordinate.Y ? value : _points[index].Y, ordinate == Ordinate.Z ? value : _points[index].Z, ordinate == Ordinate.M ? value : _points[index].M ); }
public PointShapeContent(PointM shape) { Shape = shape ?? throw new ArgumentNullException(nameof(shape)); ShapeType = ShapeType.Point; ContentLength = Length; }