shp

package
v0.0.0-...-55990d1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 25, 2024 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Box

type Box struct {
	MinX, MinY, MaxX, MaxY float64
}

Box structure made up from four coordinates. This type is used to represent bounding boxes

func BBoxFromPoints

func BBoxFromPoints(points []Point) (box Box)

BBoxFromPoints returns the bounding box calculated from points.

func (*Box) Extend

func (b *Box) Extend(box Box)

Extend extends the box with coordinates from the provided box. This method calls Box.ExtendWithPoint twice with {MinX, MinY} and {MaxX, MaxY}

func (*Box) ExtendWithPoint

func (b *Box) ExtendWithPoint(p Point)

ExtendWithPoint extends box with coordinates from point if they are outside the range of the current box.

type Field

type Field struct {
	Name      [11]byte
	Fieldtype byte
	Addr      [4]byte // not used
	Size      uint8
	Precision uint8
	Padding   [14]byte
}

Field representation of a field object in the DBF file

type MultiPatch

type MultiPatch struct {
	Box       Box
	NumParts  int32
	NumPoints int32
	Parts     []int32
	PartTypes []int32
	Points    []Point
	ZRange    [2]float64
	ZArray    []float64
	MRange    [2]float64
	MArray    []float64
}

MultiPatch consists of a number of surfaces patches. Each surface path descries a surface. The surface patches of a MultiPatch are referred to as its parts, and the type of part controls how the order of vertices of an MultiPatch part is interpreted.

func (MultiPatch) BBox

func (p MultiPatch) BBox() Box

BBox returns the bounding box of the MultiPatch feature

type MultiPoint

type MultiPoint struct {
	Box       Box
	NumPoints int32
	Points    []Point
}

MultiPoint is the shape that consists of multiple points.

func (MultiPoint) BBox

func (p MultiPoint) BBox() Box

BBox returns the bounding box of the MultiPoint feature

type MultiPointM

type MultiPointM struct {
	Box       Box
	NumPoints int32
	Points    []Point
	MRange    [2]float64
	MArray    []float64
}

MultiPointM is the collection of multiple points with measures.

func (MultiPointM) BBox

func (p MultiPointM) BBox() Box

BBox eturns the bounding box of the MultiPointM feature

type MultiPointZ

type MultiPointZ struct {
	Box       Box
	NumPoints int32
	Points    []Point
	ZRange    [2]float64
	ZArray    []float64
	MRange    [2]float64
	MArray    []float64
}

MultiPointZ consists of one ore more PointZ.

func (MultiPointZ) BBox

func (p MultiPointZ) BBox() Box

BBox eturns the bounding box of the MultiPointZ feature.

type Null

type Null struct {
}

Null is an empty shape.

func (Null) BBox

func (n Null) BBox() Box

BBox Returns an empty BBox at the geometry origin.

type Point

type Point struct {
	X, Y float64
}

Point is the shape that consists of single a geometry point.

func (Point) BBox

func (p Point) BBox() Box

BBox returns the bounding box of the Point feature, i.e. an empty area at the point location itself.

type PointM

type PointM struct {
	X float64
	Y float64
	M float64
}

PointM is a point with a measure.

func (PointM) BBox

func (p PointM) BBox() Box

BBox returns the bounding box of the PointM feature which is a zero-sized area at the X- and Y-coordinates of the point.

type PointZ

type PointZ struct {
	X float64
	Y float64
	Z float64
	M float64
}

PointZ is a triplet of double precision coordinates plus a measure.

func (PointZ) BBox

func (p PointZ) BBox() Box

BBox eturns the bounding box of the PointZ feature which is an zero-sized area at the X and Y coordinates of the feature.

type PolyLine

type PolyLine struct {
	Box
	NumParts  int32
	NumPoints int32
	Parts     []int32
	Points    []Point
}

PolyLine is a shape type that consists of an ordered set of vertices that consists of one or more parts. A part is a connected sequence of two ore more points. Parts may or may not be connected to another and may or may not intersect each other.

func NewPolyLine

func NewPolyLine(parts [][]Point) *PolyLine

NewPolyLine returns a pointer a new PolyLine created with the provided points. The inner slice should be the points that the parent part consists of.

func (PolyLine) BBox

func (p PolyLine) BBox() Box

BBox returns the bounding box of the PolyLine feature

type PolyLineM

type PolyLineM struct {
	Box       Box
	NumParts  int32
	NumPoints int32
	Parts     []int32
	Points    []Point
	MRange    [2]float64
	MArray    []float64
}

PolyLineM is the polyline in which each point also has a measure.

func (PolyLineM) BBox

func (p PolyLineM) BBox() Box

BBox returns the bounding box of the PolyLineM feature.

type PolyLineZ

type PolyLineZ struct {
	Box       Box
	NumParts  int32
	NumPoints int32
	Parts     []int32
	Points    []Point
	ZRange    [2]float64
	ZArray    []float64
	MRange    [2]float64
	MArray    []float64
}

PolyLineZ is a shape which consists of one or more parts. A part is a connected sequence of two or more points. Parts may or may not be connected and may or may not intersect one another.

func (PolyLineZ) BBox

func (p PolyLineZ) BBox() Box

BBox eturns the bounding box of the PolyLineZ feature.

type Polygon

type Polygon PolyLine

Polygon is identical to the PolyLine struct. However the parts must form rings that may not intersect.

func (Polygon) BBox

func (p Polygon) BBox() Box

BBox returns the bounding box of the Polygon feature

type PolygonM

type PolygonM PolyLineZ

PolygonM structure is identical to the PolyLineZ structure.

func (PolygonM) BBox

func (p PolygonM) BBox() Box

BBox returns the bounding box of the PolygonM feature.

type PolygonZ

type PolygonZ PolyLineZ

PolygonZ structure is identical to the PolyLineZ structure.

func (PolygonZ) BBox

func (p PolygonZ) BBox() Box

BBox returns the bounding box of the PolygonZ feature

type Reader

type Reader struct {
	GeometryType ShapeType
	// contains filtered or unexported fields
}

Reader provides a interface for reading Shapefiles. Calls to the Next method will iterate through the objects in the Shapefile. After a call to Next the object will be available through the Shape method.

func ReadFrom

func ReadFrom(r io.Reader) (*Reader, error)

ReadFrom read from io.Reader

func (*Reader) BBox

func (r *Reader) BBox() Box

BBox returns the bounding box of the shapefile.

func (*Reader) Err

func (r *Reader) Err() error

Err returns the last non-EOF error encountered.

func (*Reader) Next

func (r *Reader) Next() bool

Next reads in the next Shape in the Shapefile, which will then be available through the Shape method. It returns false when the reader has reached the end of the file or encounters an error.

func (*Reader) Shape

func (r *Reader) Shape() (int, Shape)

Shape returns the most recent feature that was read by a call to Next. It returns two values, the int is the object index starting from zero in the shapefile which can be used as row in ReadAttribute, and the Shape is the object.

type SequentialReader

type SequentialReader interface {
	// Closer frees the resources allocated by the SequentialReader.
	io.Closer

	// Next tries to advance the reading by one shape and one attribute row
	// and returns true if the read operation could be performed without any
	// error.
	Next() bool

	// Shape returns the index and the last read shape. If the SequentialReader
	// encountered any errors, nil is returned for the Shape.
	Shape() (int, Shape)

	// Err returns the last non-EOF error encountered.
	Err() error
}

SequentialReader is the interface that allows reading shapes and attributes one after another. It also embeds io.Closer.

func SequentialReaderFromExt

func SequentialReaderFromExt(shp io.ReadCloser) SequentialReader

SequentialReaderFromExt returns a new SequentialReader that interprets shp as a source of shapes whose attributes can be retrieved from dbf.

type Shape

type Shape interface {
	BBox() Box
	// contains filtered or unexported methods
}

Shape interface

type ShapeType

type ShapeType int32

ShapeType is a identifier for the the type of shapes.

const (
	NULL        ShapeType = 0
	POINT       ShapeType = 1
	POLYLINE    ShapeType = 3
	POLYGON     ShapeType = 5
	MULTIPOINT  ShapeType = 8
	POINTZ      ShapeType = 11
	POLYLINEZ   ShapeType = 13
	POLYGONZ    ShapeType = 15
	MULTIPOINTZ ShapeType = 18
	POINTM      ShapeType = 21
	POLYLINEM   ShapeType = 23
	POLYGONM    ShapeType = 25
	MULTIPOINTM ShapeType = 28
	MULTIPATCH  ShapeType = 31
)

These are the possible shape types.

func (ShapeType) String

func (i ShapeType) String() string

type Writer

type Writer struct {
	GeometryType ShapeType
	// contains filtered or unexported fields
}

Writer is the type that is used to write a new shapefile.

func CreateFrom

func CreateFrom(ws io.WriteSeeker, t ShapeType) (*Writer, error)

func (*Writer) Close

func (w *Writer) Close() error

Close closes the writer.

func (*Writer) Write

func (w *Writer) Write(shape Shape) (int32, error)

Write shape to the writer. Returns the index of the written object which can be used in WriteAttribute.

type ZipReader

type ZipReader struct {
	// contains filtered or unexported fields
}

ZipReader provides an interface for reading Shapefiles that are compressed in a ZIP archive.

func ReadZipFrom

func ReadZipFrom(r io.Reader) (*ZipReader, error)

ReadZipFrom read zip file from io.Reader, zip file must contain only one shape file

func (*ZipReader) Close

func (zr *ZipReader) Close() error

Close closes the ZipReader and frees the allocated resources.

func (*ZipReader) Err

func (zr *ZipReader) Err() error

Err returns the last non-EOF error that was encountered by this ZipReader.

func (*ZipReader) Next

func (zr *ZipReader) Next() bool

Next reads the next shape in the shapefile and the next row in the DBF. Call Shape() and Attribute() to access the values.

func (*ZipReader) Shape

func (zr *ZipReader) Shape() (int, Shape)

Shape returns the shape that was last read as well as the current index.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL