Questions tagged «sp»

3
合并R中的空间多边形对象列表
我有一个使用该函数构建的空间缓冲区(30000个缓冲区)列表lapply: buff.pts <- lapply(1:nrow(pts.prj), FUN=function(l){ buff <- gBuffer(pts.prj[l,], width=1000) ## 1km return(buff) })) > head(buff.pts) [[1]] class : SpatialPolygons features : 1 extent : 307941.8, 311941.8, 4994518, 4998518 (xmin, xmax, ymin, ymax) coord. ref. : +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs +towgs84=0,0,0 [[2]] class : SpatialPolygons …
16 polygon  r  sp  rgeos 

1
等价于sp包在多边形中的点/使用sf覆盖
我正在将代码从sp包迁移到较新的sf包。我之前的代码中有一个多边形SpatialDataFrame(censimentoMap)和一个SpatialPointDataFrame(indirizzi.sp),并使用下面的指令获取了放置在其中的每个点的多边形单元格ID(“ Cell110”): points.data <- over(indirizzi.sp, censimentoMap[,"Cell110"]) 实际上,我创建了两个SF对象: shape_sf <- st_read(dsn = shape_dsn) shape_sf <- st_transform(x=shape_sf, crs=crs_string) 和 indirizzi_sf = st_as_sf(df, coords = c("lng", "lat"), crs = crs_string) 而且我正在寻找上述说明的SF…可能是: ids<-sapply(st_intersects(x=indirizzi_sf,y=shshape_sfpeCrif), function(z) if (length(z)==0) NA_integer_ else z[1]) cell_ids <- shape_sf[ids,"Cell110"]
16 r  overlay  sp  sf 

2
汇总r中的值时,空间多边形%over%多边形如何工作?
我正在进行一个环境流行病学项目,该项目中我有接触点(约2000头工业猪操作-IHO)。这些IHO喷洒在附近的田地上,但粪便中的水滴和气味可能传播数英里。因此,这些点曝光获得了3mi的缓冲区,我想知道每个NC人口普查区块的IHO曝光数量(各种-粪便量,猪的数量之和;最简单的,只是重叠曝光缓冲区的数量) (〜200,000)。排除人口普查区(蓝色)是(1)在人口最多的前5个城市中的任何事物,以及(2)不与县内有IHO接壤的县(注:这是使用gRelate函数和DE-9IM代码完成的-非常光滑!)。见下图可见 最后一步是将缓冲的曝光量表示汇总到每个人口普查区块。这就是我感到难过的地方。 到目前为止,我在sp程序包中使用%over%函数已经过得很愉快,但是从过分的插图中了解到poly-poly和poly-line over是在rgeos中实现的。该小插图仅涵盖线型多边形和自引用多边形,而不涉及聚合,因此,对于具有函数聚合(例如求和或均值)的多边形的选择,我有些困惑。 对于测试用例,请考虑以下使用世界国家边界文件的冗长代码段。这应该能够被复制出来并按原样运行,因为我为这些点使用了随机种子,并且由于我正在代码中下载和解压缩世界文件。 首先,我们创建100个点,然后将over函数与fn参数一起使用以在数据框中添加元素。这里有很多要点,但请看一下澳大利亚:3分,标号3。到目前为止,一切都很好。 现在,我们变换几何形状,以便我们可以创建缓冲区,向后变换并映射这些缓冲区。(包括在以前的地图中,因为我仅限于两个链接。)我们想知道每个国家/地区重叠了多少缓冲区-以澳大利亚为例,这是4。虽然要通过over函数来实现。在最后的代码行中看到我的一团糟。 编辑:请注意,关于r-sis-geo的评论者提到了聚合函数-也引用了堆栈交换问题63577-因此,解决/流程可能通过该函数进行,但是我不明白为什么我需要去当结束似乎具有其他空间对象的功能时聚合。 require(maptools) require(sp) require(rgdal) require(rgeos) download.file("http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip", destfile="world.zip") unzip("world.zip") world.map = readOGR(dsn=".", "TM_WORLD_BORDERS_SIMPL-0.3", stringsAsFactors = F) orig.world.map = world.map #hold the object, since I'm going to mess with it. #Let's create 500 random lat/long points with a single value in the data frame: …

3
使用R计数多边形中的点数
我有两个共享相同CRS的课程(纬度和经度): bolognaQuartieriMap:SpatialPolygonDataFrame包含城市行政区的数据。 crashPoints:SpatialPointsDataFrame包含事故数据。 使用以下命令可以很好地绘制它们: plot(bolognaQuartieriMap) title("Crash per quartiere") plot(crashPoints, col="red",add=TRUE) 我需要的是获取crashPoints构成多边形的每个多边形中的点数bolognaQuartieriMap。建议使用,over()但没有成功。
11 r  sp 

2
R中的缓冲区和并集,而不减少为多多边形
我想执行空间叠加以识别一组点落入的多边形。但是,我首先要缓冲和溶解多边形,以使落入合并多边形内任意位置(而不是任何孔内)的点将通过叠加过程进行类似标记。 不幸的是,我正在使用的缓冲和/或溶解过程将SpatialPolygons对象简化为多面体。在时使用gBuffer会创建一个多面byid=FALSE,但在时无法合并重叠的多边形byid=TRUE。在后一种情况下,随后gUnaryUnion再次将其溶解会创建一个多多边形。SpatialPoints用这些多面叠加会导致所有包含的点都报告为落在面1内。 这是一个带有缓冲点的相关玩具示例,在这里我想用缓冲多边形对这些点进行覆盖: library(sp) library(rgeos) pts <- SpatialPoints(cbind(c(1, 1, 2, 3), c(1, 2, 1.5, 2.5))) plot(gBuffer(pts, width=0.6), lwd=2) points(pts, pch=20, cex=2) text(coordinates(pts), labels=seq_len(length(pts)), pos=4, font=2) 还有一些叠加的结果... 与byid=FALSE: b <- gBuffer(pts, width=0.6) over(pts, b) # [1] 1 1 1 1 与byid=TRUE: b2 <- gBuffer(pts, width=0.6, byid=TRUE) over(pts, b2) # [1] 1 …
9 r  sp 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.