Skip to content

Commit cfdc154

Browse files
committed
provide additional constructors
1 parent 1b6cdf1 commit cfdc154

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

src/geos_types.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ type Point <: GeoInterface.AbstractPoint
99
Point(coords::Vector{Float64}) = Point(createPoint(coords))
1010
Point(x::Float64, y::Float64) = Point(createPoint(x,y))
1111
Point(x::Float64, y::Float64, z::Float64) = Point(createPoint(x,y,z))
12+
Point{T<:GeoInterface.AbstractPoint}(obj::T) = Point(GeoInterface.coordinates(obj))
1213
end
1314

1415
type MultiPoint <: GeoInterface.AbstractMultiPoint
@@ -20,6 +21,7 @@ type MultiPoint <: GeoInterface.AbstractMultiPoint
2021
multipoint
2122
end
2223
MultiPoint(multipoint::Vector{Vector{Float64}}) = MultiPoint(createCollection(GEOS_MULTIPOINT, GEOSGeom[createPoint(coords) for coords in multipoint]))
24+
MultiPoint{T<:GeoInterface.AbstractMultiPoint}(obj::T) = MultiPoint(GeoInterface.coordinates(obj))
2325
end
2426

2527
type LineString <: GeoInterface.AbstractLineString
@@ -31,6 +33,7 @@ type LineString <: GeoInterface.AbstractLineString
3133
line
3234
end
3335
LineString(line::Vector{Vector{Float64}}) = LineString(createLineString(line))
36+
LineString{T<:GeoInterface.AbstractLineString}(obj::T) = LineString(GeoInterface.coordinates(obj))
3437
end
3538

3639
type MultiLineString <: GeoInterface.AbstractMultiLineString
@@ -42,6 +45,7 @@ type MultiLineString <: GeoInterface.AbstractMultiLineString
4245
multiline
4346
end
4447
MultiLineString(multiline::Vector{Vector{Vector{Float64}}}) = MultiLineString(createCollection(GEOS_MULTILINESTRING, GEOSGeom[createLineString(coords) for coords in multiline]))
48+
MultiLineString{T<:GeoInterface.AbstractMultiLineString}(obj::T) = MultiLineString(GeoInterface.coordinates(obj))
4549
end
4650

4751
type LinearRing <: GeoInterface.AbstractLineString
@@ -53,6 +57,7 @@ type LinearRing <: GeoInterface.AbstractLineString
5357
ring
5458
end
5559
LinearRing(ring::Vector{Vector{Float64}}) = LinearRing(createLinearRing(ring))
60+
LinearRing{T<:GeoInterface.AbstractLineString}(obj::T) = LinearRing(GeoInterface.coordinates(obj))
5661
end
5762

5863
type Polygon <: GeoInterface.AbstractPolygon
@@ -70,6 +75,7 @@ type Polygon <: GeoInterface.AbstractPolygon
7075
finalizer(polygon, destroyGeom)
7176
polygon
7277
end
78+
Polygon{T<:GeoInterface.AbstractPolygon}(obj::T) = Polygon(GeoInterface.coordinates(obj))
7379
end
7480

7581
type MultiPolygon <: GeoInterface.AbstractMultiPolygon
@@ -81,6 +87,7 @@ type MultiPolygon <: GeoInterface.AbstractMultiPolygon
8187
multipolygon
8288
end
8389
MultiPolygon(multipolygon::Vector{Vector{Vector{Vector{Float64}}}}) = MultiPolygon(createCollection(GEOS_MULTIPOLYGON, GEOSGeom[createPolygon(coords) for coords in multipolygon]))
90+
MultiPolygon{T<:GeoInterface.AbstractMultiPolygon}(obj::T) = MultiPolygon(GeoInterface.coordinates(obj))
8491
end
8592

8693
type GeometryCollection <: GeoInterface.AbstractGeometryCollection

0 commit comments

Comments
 (0)