library(rgeos)
library(dismo)
URLs <- c("http://gis.tirol.gv.at/ogd/umwelt/wasser/wis_gew_pl.zip", # all water bodies in Tyrol
"http://gis.tirol.gv.at/ogd/umwelt/wasser/wis_tseepeicher_pl.zip") # only artificial..
y <- lapply(URLs, url_shp_to_spdf)
z <- unlist(unlist(y))
a <- getData('GADM', country = "AT", level = 2)
b <- a[a$NAME_2=="Innsbruck Land", ] # political district's boundaries
c <- spTransform(b, z[[1]]@proj4string) # (a ring polygon)
z1_c <- gIntersection(z[[1]], c, byid = TRUE)
z2_c <- gIntersection(z[[2]], c, byid = TRUE)
plot(c)
plot(z1_c, lwd = 5, border = "red", add = T)
plot(z2_c, lwd = 5, border = "green", add = T)
plot(z[[1]], border = "blue", add = T) # I plot this on top, so it will be easier to identify
plot(z[[2]], border = "brown", add = T)
16 Sept 2013
R GIS: Polygon Intersection with gIntersection{rgeos}
A short tutorial on doing intersections in R GIS. gIntersection{rgeos} will pick the polygons of the first submitted polygon contained within the second poylgon - this is done without cutting the polygon's edges which cross the clip source polygon. For the function that I use to download the example data, url_shp_to_spdf() please see HERE.
Batch Downloading Zipped Shapefiles with R
Here's a function I use to download multiple zipped shapefiles from url and load them to the workspace:
URLs <- c("http://gis.tirol.gv.at/ogd/umwelt/wasser/wis_gew_pl.zip",
"http://gis.tirol.gv.at/ogd/umwelt/wasser/wis_tseepeicher_pl.zip")
url_shp_to_spdf <- function(URL) {
require(rgdal)
wd <- getwd()
td <- tempdir()
setwd(td)
temp <- tempfile(fileext = ".zip")
download.file(URL, temp)
unzip(temp)
shp <- dir(tempdir(), "*.shp$")
lyr <- sub(".shp$", "", shp)
y <- lapply(X = lyr, FUN = function(x) readOGR(dsn=shp, layer=lyr))
names(y) <- lyr
unlink(dir(td))
setwd(wd)
return(y)
}
y <- lapply(URLs, url_shp_to_spdf)
z <- unlist(unlist(y))
# finally use it:
plot(z[[1]])
Follow Up on Spatial Overlays with R - Getting Altitude for a Set of Points
A short follow up on a previous post on spatial overlays with R.
library(sp)
library(dismo)
# some addresses in Austria
pts <- geocode(c("Aldrans, Grubenweg", "Wien, Stephansdom", "Salzburg, Mozartplatz"))
# make pts spatial
coords <- SpatialPoints(pts[, c("longitude", "latitude")])
spdf_pts <- SpatialPointsDataFrame(coords, pts)
# assign CRS/projection (which is WGS 1984)
crs <- CRS(" +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")
proj4string(spdf_pts) <- crs
# spatial data to extract (altitude)
alt <- getData('alt', country = "AT")
# convert alt from raster to grid (needed for over::sp)
# and assign CRS (which is the same as spdf_pts, see > alt@crs)
# don't mind warning - the CRS is the same..
spdf_alt <- as(alt, 'SpatialGridDataFrame')
proj4string(spdf_alt) <- crs
# view
plot(alt)
# plot pts on top
plot(spdf_pts, cex = 2, col = 2, add = T)
# check data
str(spdf_pts)
str(spdf_alt)
# get the raster/pixel/grid data (> ?over):
cbind(spdf_pts$interpretedPlace, over(spdf_pts, spdf_alt))
# result:
# spdf_pts$interpretedPlace AUT_msk_alt
# 1 Grubenweg, 6071 Aldrans, Austria 736
# 3 Saint Stephen's Vienna, Stephansplatz 1, 1010 Vienna, Austria 183
# 2 Mozartplatz, 5020 Salzburg, Austria 450
10 Sept 2013
Loading Multiple Shapefiles to the R-Console Simultaneously
A quick tip on how to load multiple shapefiles (point shapefiles, i.e.) to the R console in one go:
library(maptools)
# get all files with the .shp extension from working directory
setwd("D:/GIS_DataBase/GIS_Tirol/Tirol_Verbreitungskarten/Verbreitungs_Daten")
shps <- dir(getwd(), "*.shp")
# the assign function will take the string representing shp and turn it into a variable
# which holds the spatial points data
for (shp in shps) assign(shp, readShapePoints(shp))
plot(get(shp[1])) # i.e.
# ...done
6 Sept 2013
Quick Tip for Austrian QGIS Users: How to Use Bergfex (OEK 50) Topographic Map as Base Map in QGIS
In the below stackexchange postings you will learn how to get a custom tile source running on QGIS using the OpenLayers Plugin.
http://gis.stackexchange.com/questions/69907/easiest-way-to-create-historical-street-maps-using-qgis
http://gis.stackexchange.com/questions/56615/how-to-add-another-layer-origin-in-my-installed-openlayers-plugin
http://gis.stackexchange.com/questions/70648/using-custom-source-for-qgis-openlayers-plugin
For the Bergfex tile source you can find the working html-file here:
https://gist.github.com/gimoya/6450983
http://gis.stackexchange.com/questions/69907/easiest-way-to-create-historical-street-maps-using-qgis
http://gis.stackexchange.com/questions/56615/how-to-add-another-layer-origin-in-my-installed-openlayers-plugin
http://gis.stackexchange.com/questions/70648/using-custom-source-for-qgis-openlayers-plugin
For the Bergfex tile source you can find the working html-file here:
https://gist.github.com/gimoya/6450983
Subscribe to:
Posts
(
Atom
)