Select / R 中的空间数据子集

Select / subset spatial data in R

我正在处理一个包含空间数据的大型数据集 (lat/long)。我的数据集包含一些我不想在我的分析中使用的位置(这使得在 ArcMap 中处理文件变得很重 - 许多 Go 数据)。

这就是为什么我要为我的工作对相关数据进行子集化。这是我的数据示例:

lat        long
59.979687  29.706236
60.136177  28.148186
59.331383  22.376234
57.699154  11.667305
54.90566   17.768538
57.122417  8.59762
55.8108    10.820534
57.86072   22.616697
59.912144  30.24504

我的数据来自以下地图中涵盖的所有区域。我只想在波罗的海工作,所以(几乎)只使用这条黑线左侧的点。

是否有人听说过一个包裹或对如何处理这个有一些想法?

另一个解决方案可能是在波罗的海周围绘制一个多边形,并且只绘制到该多边形内的 select 个点。

我假设你的意思是 "to the right" 因为你说 "Another solution might be to drawn a polygon around the Baltic Sea and only to select the points within this polygon"

# your sample data

pts <- read.table(text="lat        long
59.979687  29.706236
60.136177  28.148186
59.331383  22.376234
57.699154  11.667305
54.90566   17.768538
57.122417  8.59762
55.8108    10.820534
57.86072   22.616697
59.912144  30.24504", header=TRUE)

library(ggplot2)
library(sp)
library(rgdal)

# a rough baltic polygon that I deliberately made to exclude one point

baltic <- data.frame(lat=c(69.91, 57.98, 51.0, 60, 69.91),
                     long=c(23.07, 7.05, 12.0, 30, 23.07))

# only doing this to show the points, you can filter out in similar fashion

pts$is_in <- factor(point.in.polygon(pts$long, pts$lat, baltic$long, baltic$lat))

# I made an _extremely_ oversimplified map of europe for speedy plotting
europe <- readOGR("http://rud.is/dl/simple_europe.geojson", "OGRGeoJSON")
europe_map <- fortify(europe)


# plot to show it works
gg <- ggplot()
gg <- gg + geom_map(map=europe_map, data=europe_map,
                    aes(x=long, y=lat, map_id=id),
                    fill="white", color="black", size=0.25)
gg <- gg + geom_point(data=pts, aes(x=long, y=lat, color=is_in))
gg <- gg + geom_path(data=baltic, (aes(x=long, y=lat)), linetype=2)

# lambert isn't a bad projection for the region
gg <- gg + coord_map("lambert", lat0=50, lat1=70, xlim=c(5,31), ylim=c(50, 70))
gg

您可以根据需要使多边形变大以获得要包括的点。请记住,我把它做得足够小以故意排除那个 "red" 点。