Nick Wray
2024-May-14 13:16 UTC
[R] Removing polygons from shapefile of Scotland and Islands
Hello I have a shapefile of Scotland, including the islands. The river flow data I am using is only for the mainland and for a clearer and larger map I would like to not plot Orkney and Shetland to the north of the mainland, as I don't need them. The map I have I got from https://borders.ukdataservice.ac.uk/easy_download_data.html?data=infuse_ctry_2011 then I put the uk shapefile onto my laptop with no problems (I have sf running) the_uk<-st_read(dsn="C:/Users/nickm/Desktop/Shapefiles/infuse_ctry_2011.shp") scotland<-the_uk[2,] plot(scotland$geometry) This gives me a nice map of Scotland plus islands but obviously there are lots of separate polygons and if I go into the points with something like scot_pts<-unlist(as.data.frame(scotland$geometry)) it's not at all clear how I can get rid of the points I don't want as they don't seem to be listed in any easy way to find where one polygon stops and another starts I am wondering whether this approach is right anyway or whether there is some sf function which would allow me to identify the polygons I want - essentially the big one which is the mainland without lots of elaborate conversions and manipulations Any pointers, thoughts etc much appreciated Thanks Nick Wray [[alternative HTML version deleted]]
Jan van der Laan
2024-May-14 15:39 UTC
[R] Removing polygons from shapefile of Scotland and Islands
I believe mapshaper has functionality for removing small 'islands'. There is a webinterface for mapshaper, but I see there is also an R-package (see https://search.r-project.org/CRAN/refmans/rmapshaper/html/ms_filter_islands.html for island removal). If you want to manually select which islands to keep and which to remove, you can split multipolygons into single polygons. I believe that is possible using st_cast. But if it is just getting the relevant portion of the map on screen. With the plot-command and using st_viewport it is possible to set the part of the map that is drawn. HTH, Jsn On 14-05-2024 15:16, Nick Wray wrote:> Hello I have a shapefile of Scotland, including the islands. The river > flow data I am using is only for the mainland and for a clearer and larger > map I would like to not plot Orkney and Shetland to the north of the > mainland, as I don't need them. > > The map I have I got from > https://borders.ukdataservice.ac.uk/easy_download_data.html?data=infuse_ctry_2011 > > then I put the uk shapefile onto my laptop with no problems (I have sf > running) > > the_uk<-st_read(dsn="C:/Users/nickm/Desktop/Shapefiles/infuse_ctry_2011.shp") > > scotland<-the_uk[2,] > > plot(scotland$geometry) > > This gives me a nice map of Scotland plus islands but obviously there are > lots of separate polygons and if I go into the points with something like > > scot_pts<-unlist(as.data.frame(scotland$geometry)) > > it's not at all clear how I can get rid of the points I don't want as they > don't seem to be listed in any easy way to find where one polygon stops and > another starts > > I am wondering whether this approach is right anyway or whether there is > some sf function which would allow me to identify the polygons I want - > essentially the big one which is the mainland without lots of elaborate > conversions and manipulations > > Any pointers, thoughts etc much appreciated > > Thanks Nick Wray > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.