-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtypes.go
82 lines (66 loc) · 1.53 KB
/
types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
Copyright [2015] Alex Davies-Moore
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package twkb
// Coordinate is the base position: it differs from a point in that in contains no further
// information apart from dims and values
type Coordinate []float64
// Geometry is the base type for all twkb representations
type Geometry interface {
Type() GeomType
Dim() uint8
}
// Hdr represents the metadata information about a geometry
type Hdr struct {
gtype GeomType
dim uint8
bbox BBox
}
func (h *Hdr) Type() GeomType {
return h.gtype
}
func (h *Hdr) Dim() uint8 {
return h.dim
}
type Point struct {
*Hdr
Coord Coordinate
}
type LineString struct {
*Hdr
Coords []Coordinate
}
type Polygon struct {
*Hdr
Rings []LinearRing
}
type LinearRing []Coordinate
type MultiPoint struct {
*Hdr
Ids []int64
Points []Point
}
type MultiLineString struct {
*Hdr
Ids []int64
LineStrings []LineString
}
type MultiPolygon struct {
*Hdr
Ids []int64
Polygons []Polygon
}
type GeometryCollection struct {
*Hdr
Ids []int64
Geometries []Geometry
}