File tree Expand file tree Collapse file tree 1 file changed +9
-5
lines changed Expand file tree Collapse file tree 1 file changed +9
-5
lines changed Original file line number Diff line number Diff line change @@ -115,7 +115,7 @@ message_longlat = function(caller) {
115
115
# ' st_perimeter(mpoly)
116
116
st_perimeter = function (x , ... ) {
117
117
x = st_geometry(x )
118
- if (isTRUE(st_is_longlat(x ))) { # for spherical geometries we use s2
118
+ if (sf_use_s2() && isTRUE(st_is_longlat(x ))) { # for spherical geometries we use s2
119
119
if (! requireNamespace(" s2" , quietly = TRUE ))
120
120
stop(" package s2 required to calculate the perimeter of spherical geometries" )
121
121
# ensure units are set to meters
@@ -125,10 +125,14 @@ st_perimeter = function(x, ...) {
125
125
mode = " standard"
126
126
)
127
127
} else { # non-spherical geometries use lwgeom:
128
- if (! requireNamespace(" lwgeom" , quietly = TRUE ))
129
- stop(" package lwgeom required, please install it first" )
130
- # note that units are handled appropriately by lwgeom
131
- lwgeom :: st_perimeter_lwgeom(x )
128
+ if (isTRUE(st_is_longlat(x )))
129
+ units :: set_units(st_length(st_boundary(x )), " m" , mode = " standard" )
130
+ else {
131
+ if (! requireNamespace(" lwgeom" , quietly = TRUE ))
132
+ stop(" package lwgeom required, please install it first" )
133
+ # note that units are handled appropriately by lwgeom
134
+ lwgeom :: st_perimeter_lwgeom(x )
135
+ }
132
136
}
133
137
}
134
138
You can’t perform that action at this time.
0 commit comments