Dear Ben,

Thank you for your help. I will try this out. What I want to do is combine
the polygons of Cyprus and Northern Cyprus into one single polygon
eliminating the border. For the GADM, I am only interested in the
country-level shapefile. Thanks again!

Best regards,

Milu

On Fri, Apr 28, 2023 at 4:41 PM Ben Tupper <btup...@bigelow.org> wrote:

> Hi Milu,
>
> If you want to combine just a few of the thousands of features in
> world then you will have to manage them individually.  Essentially
> extract the subset to be combined, do the combination steps, and then
> add them back to the world.  I am very not familiar with GADM and I
> only have version 4.1, but all of the attributes appear to be
> character type, which raises the question about what you want
> aggregate() to do - it can't take the mean of a character attribute.
> In the example below I show how you might take just the first value of
> each attribute.  While this combining is possible, it doesn't mean
> that you will have "correct" attributes with your new single feature.
> I guess you'll have to figure out what you really want to do with
> that.
>
> ### start here
> library(sf)
> library(dplyr)
> # a function called by aggregate() for each attribute
> first_item = function(x){
>   x[[1]]
> }
> # read in the database downlaoded from https://gadm.org/data.html
> world = read_sf("~/Downloads/gadm_410.gpkg")
> # find the Cypriot features (we'll use this twice)
> ix = grepl("Cyp", world$NAME_0, fixed = TRUE)
> # pull them out of world
> Cyp_features = dplyr::filter(world, ix)
> # aggregate - which works for the geometry but is wrong in terms of
> handling the attributes
> Cyp_union = aggregate(Cyp_features,
>                       sf::st_union(Cyp_features),
>                       first_item)
> # bind the world (less Cypriot features) with the combined Cypriot
> aggregation
> new_world = dplyr::bind_rows(dplyr::filter(world, !ix), Cyp_union)
> ### end here
>
>
> Does that help?
>
> Ben
>
>
> On Fri, Apr 28, 2023 at 8:28 AM Roger Bivand <roger.biv...@nhh.no> wrote:
> >
> > Briefly, is sf::aggregate() what you are looking for? Or
> terra::aggregate() if you read with terra::vect()?
> >
> > ---
> > Roger Bivand
> > Emeritus Professor
> > Department of Economics
> > Norwegian School of Economics, Bergen, Norway
> >
> > ________________________________
> > Fra: Miluji Sb <miluj...@gmail.com>
> > Sendt: fredag 28. april 2023, 14:18
> > Til: Roger Bivand <roger.biv...@nhh.no>
> > Kopi: Michael Sumner <mdsum...@gmail.com>; R-sig-geo mailing list <
> r-sig-geo@r-project.org>
> > Emne: Re: [R-sig-Geo] Combine two polygons
> >
> > Thank you for your replies. I think I am misunderstanding something. I
> have read the shapefile using sf. I would like to combine polygons for
> Cyprus and Northern Cyprus only within the world shapefile and keep all the
> other polygons as they are.
> >
> > world <- sf::st_read(dsn = "~/gadm36_levels_shp", layer = "gadm36_0")
> >
> > Is something like the following correct? I was thinking of generating a
> group variable which is unique to all the countries except Cyprus and
> Northern Cyprus. I a probably making this too complicated.
> >
> > world %>%
> >   group_by(group) %>%
> >   summarise(geometry = sf::st_union(geometry)) %>%
> >   ungroup()
> >
> > Thank you again.
> >
> > Best regards,
> >
> > Milu
> >
> > On Fri, Apr 28, 2023 at 8:56 AM Roger Bivand <roger.biv...@nhh.no
> <mailto:roger.biv...@nhh.no>> wrote:
> > On Fri, 28 Apr 2023, Michael Sumner wrote:
> >
> > > fwiw, a method with geodata/terra
> > >
> > > cyp <- geodata::gadm(country = c("CYP", "XNC"), path = tempdir(),
> version =
> > > "3.6")
> > >
> > > terra::aggregate(cyp)
> > >
> >
> > and as per
> > https://github.com/r-spatial/evolution/blob/main/pkgapi_230305_refs.csv.
> >
> > > see ?terra::writeVector to write it out
> > >
> > > (rgdal is very old and you should abandon it, it will be removed from
> > > support by the end of this year)
> >
> > Thank you! Yes, sp will by default switch to using sf in place of rgdal
> > for creating "CRS" objects, and under sp::spTransform in June, and all
> > three retiring packages rgdal, rgeos, and maptools will be gone by
> October
> > 2023. An sp release will appear in May with a transition guide.
> >
> > It seems that terra does not have an object corresponding to sp's "CRS"
> or
> > sf's "crs". As far as I can see, one needs to create an empty
> > SpatVector/SpatRaster object and assign a CRS, coerce to "Spatial", and
> > extract its slot. If this makes sense, sp could use terra (and
> > raster, needed for coercion) rather than sf where workflows did not
> > otherwise use sf. Very grateful for input here or
> > https://github.com/r-spatial/evolution/issues.
> >
> > Roger
> >
> > >
> > >
> > > (just as an aside, we can't hit the geodata vector urls directly with
> gdal
> > > as we can with the rasters, as they are in an R specific format)
> > >
> > > Cheers, Mike
> > >
> > >
> > > On Fri, Apr 28, 2023 at 10:52 AM Ben Tupper <btup...@bigelow.org
> <mailto:btup...@bigelow.org>> wrote:
> > >
> > >> Hi,
> > >>
> > >> You might try st_union() from the sf package
> > >>
> https://r-spatial.github.io/sf/articles/sf3.html#geometrical-operations
> > >>
> > >>
> > >>
> > >> On Thu, Apr 27, 2023 at 5:37 PM Miluji Sb <miluj...@gmail.com<mailto:
> miluj...@gmail.com>> wrote:
> > >>
> > >>> Dear all,
> > >>>
> > >>> I am using the country-level shapefile from GADM. I would like to
> merge
> > >>> Cyprus and North Cyprus into one polygon. Is this possible? I am
> using
> > >>> rgdal to read the shapefile, subset, and then rewrite it. Any help
> will
> > >> be
> > >>> highly appreciated.
> > >>>
> > >>> ##
> > >>> world <- readOGR("~/gadm36_levels_shp", layer = "gadm36_0")
> > >>>
> > >>> Best regards,
> > >>>
> > >>> Milu
> > >>>
> > >>>         [[alternative HTML version deleted]]
> > >>>
> > >>> _______________________________________________
> > >>> R-sig-Geo mailing list
> > >>> R-sig-Geo@r-project.org<mailto:R-sig-Geo@r-project.org>
> > >>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> > >>>
> > >>
> > >>         [[alternative HTML version deleted]]
> > >>
> > >> _______________________________________________
> > >> R-sig-Geo mailing list
> > >> R-sig-Geo@r-project.org<mailto:R-sig-Geo@r-project.org>
> > >> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> > >>
> > >
> > >
> > >
> >
> > --
> > Roger Bivand
> > Emeritus Professor
> > Department of Economics, Norwegian School of Economics,
> > Postboks 3490 Ytre Sandviken, 5045 Bergen, Norway.
> > e-mail: roger.biv...@nhh.no<mailto:roger.biv...@nhh.no>
> > https://orcid.org/0000-0003-2392-6140
> >
> https://scholar.google.no/citations?user=AWeghB0AAAAJ&hl=en_______________________________________________
> > R-sig-Geo mailing list
> > R-sig-Geo@r-project.org<mailto:R-sig-Geo@r-project.org>
> > https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> >
> >
> >         [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-sig-Geo mailing list
> > R-sig-Geo@r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Reply via email to