I would just like to remove some polygons from the SpatialPolygonsDataFrame object based on the corresponding attribute values ββin the @data data frame so that I can build a simplified / multiple necked file. Until I found a way to do this.
For example, let's say I want to remove all polygons from this world shapefile , which has an area of ββless than 30,000. How can I go about this?
Or similarly, how can I remove Antartica?
require(maptools) getinfo.shape("TM_WORLD_BORDERS_SIMPL-0.3.shp") # Shapefile type: Polygon, (5), # of Shapes: 246 world.map <- readShapeSpatial("TM_WORLD_BORDERS_SIMPL-0.3.shp") class(world.map) # [1] "SpatialPolygonsDataFrame" # attr(,"package") # [1] "sp" head(world.map@data) # FIPS ISO2 ISO3 UN NAME AREA POP2005 REGION SUBREGION LON LAT # 0 AC AG ATG 28 Antigua and Barbuda 44 83039 19 29 -61.783 17.078 # 1 AG DZ DZA 12 Algeria 238174 32854159 2 15 2.632 28.163 # 2 AJ AZ AZE 31 Azerbaijan 8260 8352021 142 145 47.395 40.430 # 3 AL AL ALB 8 Albania 2740 3153731 150 39 20.068 41.143 # 4 AM AM ARM 51 Armenia 2820 3017661 142 145 44.563 40.534 # 5 AO AO AGO 24 Angola 124670 16095214 2 17 17.544 -12.296
If I do something like this, the plot will not reflect any changes.
world.map@data = world.map@data[world.map@data$AREA > 30000,] plot(world.map)
same result if i do this:
world.map@data = world.map@data[world.map@data$NAME != "Antarctica",] plot(world.map)
Any help is appreciated!
mapping r spatial maptools
baha-kev Nov 18 '12 at 18:50 2012-11-18 18:50
source share