57 lines
777 B
Go
57 lines
777 B
Go
package orb
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
// Clone will make a deep copy of the geometry.
|
|
func Clone(g Geometry) Geometry {
|
|
if g == nil {
|
|
return nil
|
|
}
|
|
|
|
switch g := g.(type) {
|
|
case Point:
|
|
return g
|
|
case MultiPoint:
|
|
if g == nil {
|
|
return nil
|
|
}
|
|
return g.Clone()
|
|
case LineString:
|
|
if g == nil {
|
|
return nil
|
|
}
|
|
return g.Clone()
|
|
case MultiLineString:
|
|
if g == nil {
|
|
return nil
|
|
}
|
|
return g.Clone()
|
|
case Ring:
|
|
if g == nil {
|
|
return nil
|
|
}
|
|
return g.Clone()
|
|
case Polygon:
|
|
if g == nil {
|
|
return nil
|
|
}
|
|
return g.Clone()
|
|
case MultiPolygon:
|
|
if g == nil {
|
|
return nil
|
|
}
|
|
return g.Clone()
|
|
case Collection:
|
|
if g == nil {
|
|
return nil
|
|
}
|
|
return g.Clone()
|
|
case Bound:
|
|
return g
|
|
}
|
|
|
|
panic(fmt.Sprintf("geometry type not supported: %T", g))
|
|
}
|