[R-sig-Geo] st_union crashes RStudio - bug?
Roger Bivand
Roger@Biv@nd @ending from nhh@no
Fri Sep 14 18:59:52 CEST 2018
On Fri, 14 Sep 2018, Roman Luštrik wrote:
> Crashes R or Rstudio?
I guess the OP will get up sometime soon; of course one should always run
R in a console, not RStudio when reporting issues of this kind. Further,
one should run R -d gdb (if possible - see RW FAQ) to trap any important
information. I can see that crash <- st_union(noACT) is long-running, with
one thread at 100%, but no obvious memory issues (Fedora 28, sf 0.6-3,
GEOS 3.7.0). It would further make sense to go the sp/rgeos route to see
if it is data+GEOS or that the behavious is R-implementation dependent.
Roger
>
> Cheers,
> Roman
>
> On Fri, Sep 14, 2018 at 8:33 AM Bertram Ostendorf <
> bertram.ostendorf using adelaide.edu.au> wrote:
>
>> I am trying to dissolve internal boundaries using sf. This crashes R in
>> the example geojson map below, a simple map of Australia’s states and
>> territories. I am using a polygon layer that processes fine in other GIS
>> and also works fine using sp (casting to sp and using gUnaryUnion). I am
>> not after a workaround but I'd like to explore what's different in sf and
>> why this particular layer causes problems.
>>
>> My questions: Is this a bug in sf? Have others experienced similar issues
>> using simple features?
>>
>> Thanks
>>
>> Bertram Ostendorf
>> Chair for Spatial Environmental Sciences
>> Director: Spatial Information Group
>> The University of Adelaide, AUSTRALIA 5005
>>
>>
>> # Here's my example layer and code:
>> # Note: Neither ArcGIS ‘repair geometry’ nor ‘st_is_valid’ show any
>> issues.
>> library(sf)
>> library(ggplot2)
>> # read Australia.geojson from dropbox, 15.5Mb
>> test <- st_read("
>> https://www.dropbox.com/s/060c6lfijyx1e5v/Australia.geojson?dl=1")
>> st_is_valid(test)
>>
>> # The next lines work fine, I added them to illustrate what works
>> ggplot(test) + geom_sf(aes(fill=STATE))
>> ACT <- test[test$STATE == 'ACT', ]
>> NSW <- test[test$STATE == 'NSW', ]
>> ACTandNSW <- test[test$STATE %in% c('NSW','ACT'), ]
>> noACT <- test[test$STATE != 'ACT', ]
>> noNSW <- test[test$STATE != 'NSW', ]
>> noACTandNSW <- test[!test$STATE %in% c('NSW','ACT'), ]
>> # st_union works ok for most subsets. But note that some internal
>> boundaries are not removed.
>> ok <- st_union(ACT)
>> # donut polygons work fine
>> ok <- st_union(NSW)
>> # donut polygons (NSW) filled (ACT) work fine
>> ok <- st_union(ACTandNSW)
>> # all states except NSW work fine
>> ok <- st_union(noNSW)
>> # ok if both ACT and NSW are removed
>> ok <- st_union(noACTandNSW)
>> ggplot(ok) + geom_sf()
>>
>> # Thing go pear-shaped if the hole is filled (ACT in NSW), but only if
>> neighbours of the filled donut polygon are present.
>> # The two lines below stall R and eventually crash RStudio
>> crash <- st_union(test)
>> # Australia without its governing territory kills R
>> crash <- st_union(noACT)
>>
>>
>>> sessionInfo()
>> R version 3.5.1 (2018-07-02)
>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>> Running under: Windows >= 8 x64 (build 9200)
>>
>> Matrix products: default
>>
>> locale:
>> [1] LC_COLLATE=English_Australia.1252 LC_CTYPE=English_Australia.1252
>> LC_MONETARY=English_Australia.1252
>> [4] LC_NUMERIC=C LC_TIME=English_Australia.1252
>>
>> attached base packages:
>> [1] stats graphics grDevices utils datasets methods base
>>
>> other attached packages:
>> [1] ggplot2_3.0.0 sf_0.6-3
>>
>> loaded via a namespace (and not attached):
>> [1] Rcpp_0.12.18 rstudioapi_0.7 bindr_0.1.1 magrittr_1.5
>> units_0.6-0 tidyselect_0.2.4 munsell_0.5.0
>> [8] colorspace_1.3-2 R6_2.2.2 rlang_0.2.2 plyr_1.8.4
>> dplyr_0.7.6 tools_3.5.1 grid_3.5.1
>> [15] gtable_0.2.0 e1071_1.7-0 DBI_1.0.0 withr_2.1.2
>> class_7.3-14 digest_0.6.16 yaml_2.2.0
>> [22] lazyeval_0.2.1 assertthat_0.2.0 tibble_1.4.2 crayon_1.3.4
>> bindrcpp_0.2.2 spData_0.2.9.3 purrr_0.2.5
>> [29] glue_1.3.0 compiler_3.5.1 pillar_1.3.0 scales_1.0.0
>> classInt_0.2-3 pkgconfig_2.0.2
>>
>>
>>
>>
>>
>> [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo using r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>
>
>
--
Roger Bivand
Department of Economics, Norwegian School of Economics,
Helleveien 30, N-5045 Bergen, Norway.
voice: +47 55 95 93 55; e-mail: Roger.Bivand using nhh.no
http://orcid.org/0000-0003-2392-6140
https://scholar.google.no/citations?user=AWeghB0AAAAJ&hl=en
More information about the R-sig-Geo
mailing list