Werner Wernersen
2005-Sep-08 08:52 UTC
[R] Using R map data to determine associated state for a coordinate?
Hi! I have no idea if this is maybe an easy task utilizing R since I read there is geographical map data in some package: I have a huge number of geographical points with their coordinates in Germany. Now I want to determine for each point in which "Bundesland" = state it is located. Can anybody tell me if this is doable relatively easy in R and if so give me some hints or links how to do it? Thanks a million, Werner
Thomas Petzoldt
2005-Sep-08 10:32 UTC
[R] Using R map data to determine associated state for a coordinate?
Werner Wernersen wrote:> Hi! > > I have no idea if this is maybe an easy task utilizing > R since I read there is > geographical map data in some package: > > I have a huge number of geographical points with their > coordinates in Germany. > Now I want to determine for each point in which > "Bundesland" = state it is located. > > Can anybody tell me if this is doable relatively easy > in R and if so give me > some hints or links how to do it? > > Thanks a million, > WernerHello Werner, two building blocks, but don't know if the precision meets your needs. 1. Do you have a good map of Germany *with* Federal States? * If YES and if it's free: ==> I would be interested! Please post it's source. * If NO: ==> Downloadable map data are available on: http://www.vdstech.com/map_data.htm 2. The following approach reads and converts a shapefile with functions from maptools and then follows the example of inside.owin() from the spatstat package. Hope that helps Thomas Petzoldt ########################################################## library(maptools) library(spatstat) ger <- read.shape("germany.shp") plot(ger) pger <- Map2poly(ger) sx<- pger[[13]] lines(sx, type="l", col="red") # Saxony ;-) ## Create an owin (observation window) object # direction of coordinates must be reversed, in some cases # if error message: remove rev()'s saxony <- owin(poly=list(x=rev(sx[,1]), y=rev(sx[,2]))) # random points in rectangle x <- runif(1000, min= 6, max=15) y <- runif(1000, min=46, max=56) ok <- inside.owin(x, y, saxony) points(x[ok], y[ok]) points(x[!ok], y[!ok], pch=".") ##########################################################