我正在处理一个包含空间数据(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
我所拥有的数据来自以下地图所涵盖的所有区域。我想只在波罗的海上工作,所以(差不多)只有这条暗线左边的点。
有人听说过有关如何处理这个问题的方法或有一些想法吗?
另一种解决方案可能是在波罗的海周围绘制一个多边形,并且只选择该多边形内的点。
答案 0 :(得分:1)
我假设你的意思是“向右”,因为你说“另一种解决办法可能是在波罗的海周围绘制一个多边形,只选择这个多边形内的点”
# 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
您可以根据需要制作多边形,以获得要包含的点。记住,我把它做得足够小,可以故意排除那个“红色”点。