[R-sig-Geo] how to filter a shapefile ?

Roger Bivand Roger.Bivand at nhh.no
Thu Sep 16 14:44:47 CEST 2010


On Thu, 16 Sep 2010, Arnald Marcer wrote:

> Thank you very much Roger.
>
> Still another question: Can you plot a polygon shapefile with borders but 
> transparent interiors ?

This is what happens anyway (maybe not on all graphics devices?):

library(rgdal)
dsn <- system.file("vectors", package = "rgdal")[1]
scot_BNG <- readOGR(dsn=dsn, layer="scot_BNG")
pts <- SpatialPoints(coordinates(scot_BNG),
   proj4string=CRS(proj4string(scot_BNG)))
plot(pts)
plot(scot_BNG, border="grey", add=TRUE)
dev.cur()
# shows the device type

and the points are not over-painted (X11cairo device).

Roger

>
> Arnald Marcer
> CREAF
>
> On 09/16/2010 02:10 PM, Roger Bivand wrote:
>> On Thu, 16 Sep 2010, Mayeul KAUFFMANN wrote:
>> 
>>> You can read your shapefile with:
>>> library(rgdal)
>>> countries_spdf <- readOGR(dsn=root_path, 
>>> "countries_file_without_extension")
>>> #You'll have a spatial point data frame with marks. Look at 
>>> str(countries_spdf).
>>> Try:
>>> plot(countries_spdf[countries_spdf at data$AREA>1000])
>> 
>> Correct, subset with the "[" method as with data.frame objects. But avoid 
>> using the data slot directly, use the "$" method as with data.frame 
>> objects:
>> 
>> plot(countries_spdf[countries_spdf$AREA>1000,])
>> 
>> and insert a comma in the "[" method to choose the rows matching the 
>> condition:
>> 
>> library(rgdal)
>> dsn <- system.file("vectors", package = "rgdal")[1]
>> scot_BNG <- readOGR(dsn=dsn, layer="scot_BNG")
>> plot(scot_BNG, border="grey")
>> plot(scot_BNG[scot_BNG$SMR > 100,], border="black", lwd=2, add=TRUE)
>> 
>> Hope this helps,
>> 
>> Roger
>> 
>> 
>>> Mayeul
>>> _____________________________________________________
>>> Dr. Mayeul KAUFFMANN, Conflict Specialist
>>> European Commission, Joint Research Centre (JRC)
>>> Institute for the Protection and Security of the Citizen (IPSC)
>>> Global Security and Crisis Management - ISFEREA
>>> Via E. Fermi 2749 - I-21027 Ispra (VA), ITALY
>>> Phone: (+39) 033278 5071
>>> http://isferea.jrc.ec.europa.eu/Staff/Pages/Kauffmann-Mayeul.aspx
>>> 
>>> (Office: building 48c, 1st floor, room 123. TP: 483)
>>> 
>>> _____________________________________________________
>>> Dr. Mayeul KAUFFMANN, Conflict Specialist
>>> European Commission, Joint Research Centre (JRC)
>>> Institute for the Protection and Security of the Citizen (IPSC)
>>> Global Security and Crisis Management - ISFEREA
>>> Via E. Fermi 2749 - I-21027 Ispra (VA), ITALY
>>> Phone: (+39) 033278 5071
>>> http://isferea.jrc.ec.europa.eu/Staff/Pages/Kauffmann-Mayeul.aspx
>>> 
>>> (Office: building 48c, 1st floor, room 123. TP: 483)
>>> 
>>> 
>>> -----Original Message-----
>>> From: r-sig-geo-bounces at stat.math.ethz.ch
>>> [mailto:r-sig-geo-bounces at stat.math.ethz.ch] On Behalf Of Arnald Marcer
>>> Sent: Thursday, September 16, 2010 12:58 PM
>>> To: r-sig-geo
>>> Subject: [R-sig-Geo] how to filter a shapefile ?
>>> 
>>> Hi,
>>> 
>>> Can anyone give me a hint on how to extract/filter/subset
>>> polygons from a shapefile based on an attribute of its dbf
>>> table ?
>>> 
>>> Example:
>>> 
>>> shapefile: world.shp
>>> attributes of its dbf table: ID, AREA, COUNTRY, ...
>>> 
>>> How can I plot a shapefile with only countries above a certain AREA value 
>>> ?
>>> 
>>> Thank you very much,
>>> 
>>> Arnald Marcer
>>> CREAF
>>> 
>>> _______________________________________________
>>> R-sig-Geo mailing list
>>> R-sig-Geo at stat.math.ethz.ch
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>> 
>>> _______________________________________________
>>> R-sig-Geo mailing list
>>> R-sig-Geo at stat.math.ethz.ch
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>> 
>> 
>
>
>

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no



More information about the R-sig-Geo mailing list