初始
This commit is contained in:
87
api/v1/common/tool/shp/README.md
Normal file
87
api/v1/common/tool/shp/README.md
Normal file
@ -0,0 +1,87 @@
|
||||
go-shp
|
||||
======
|
||||
|
||||
[](https://travis-ci.org/jonas-p/go-shp)
|
||||
[](https://ci.appveyor.com/project/fawick/go-shp)
|
||||
[](https://goreportcard.com/report/github.com/jonas-p/go-shp)
|
||||
[](https://codecov.io/gh/jonas-p/go-shp)
|
||||
|
||||
Go library for reading and writing ESRI Shapefiles. This is a pure Golang implementation based on the ESRI Shapefile technical description.
|
||||
|
||||
### Usage
|
||||
#### Installation
|
||||
|
||||
go get github.com/jonas-p/go-shp
|
||||
|
||||
#### Importing
|
||||
|
||||
```go
|
||||
import "github.com/jonas-p/go-shp"
|
||||
```
|
||||
|
||||
### Examples
|
||||
#### Reading a shapefile
|
||||
|
||||
```go
|
||||
// open a shapefile for reading
|
||||
shape, err := shp.Open("points.shp")
|
||||
if err != nil { log.Fatal(err) }
|
||||
defer shape.Close()
|
||||
|
||||
// fields from the attribute table (DBF)
|
||||
fields := shape.Fields()
|
||||
|
||||
// loop through all features in the shapefile
|
||||
for shape.Next() {
|
||||
n, p := shape.Shape()
|
||||
|
||||
// print feature
|
||||
fmt.Println(reflect.TypeOf(p).Elem(), p.BBox())
|
||||
|
||||
// print attributes
|
||||
for k, f := range fields {
|
||||
val := shape.ReadAttribute(n, k)
|
||||
fmt.Printf("\t%v: %v\n", f, val)
|
||||
}
|
||||
fmt.Println()
|
||||
}
|
||||
```
|
||||
|
||||
#### Creating a shapefile
|
||||
|
||||
```go
|
||||
// points to write
|
||||
points := []shp.Point{
|
||||
shp.Point{10.0, 10.0},
|
||||
shp.Point{10.0, 15.0},
|
||||
shp.Point{15.0, 15.0},
|
||||
shp.Point{15.0, 10.0},
|
||||
}
|
||||
|
||||
// fields to write
|
||||
fields := []shp.Field{
|
||||
// String attribute field with length 25
|
||||
shp.StringField("NAME", 25),
|
||||
}
|
||||
|
||||
// create and open a shapefile for writing points
|
||||
shape, err := shp.Create("points.shp", shp.POINT)
|
||||
if err != nil { log.Fatal(err) }
|
||||
defer shape.Close()
|
||||
|
||||
// setup fields for attributes
|
||||
shape.SetFields(fields)
|
||||
|
||||
// write points and attributes
|
||||
for n, point := range points {
|
||||
shape.Write(&point)
|
||||
|
||||
// write attribute for object n for field 0 (NAME)
|
||||
shape.WriteAttribute(n, 0, "Point " + strconv.Itoa(n + 1))
|
||||
}
|
||||
```
|
||||
|
||||
### Resources
|
||||
|
||||
- [Documentation on godoc.org](http://godoc.org/github.com/jonas-p/go-shp)
|
||||
- [ESRI Shapefile Technical Description](http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf)
|
Reference in New Issue
Block a user