我正在玩空间数据集(主要是城市某个区域的多边形),我想根据不同的缩放级别生成不同的视图.当我的绘图边界框大于包含多边形的区域时,一切都很好.但是在放大时,一些多边形会获得位于边界框外部的部分,并且这些多边形的输出会出现问题:边界框外部的多边形点不会显示,从而导致多边形未在边界框限制处被裁剪(正如预期的那样)但不考虑.多边形不完整,多边形只连接图上剩余的点(正常行为,但不是必需的).
一个值得所有讨论的好例子,这是一个问题的演示:
#initialisation
library(ggmap)
require(MASS)
data(zips)
# overview
ggmap(get_map(maptype = "satellite", zoom = 8), extent = "device") +
geom_polygon(aes(x = lon, y = lat, group = plotOrder),
data = zips, colour = NA, fill = "red", alpha = .5) +
geom_path(aes(x = lon, y = lat, group = plotOrder),
data = zips, colour = "white", alpha = .7, size = .4)
# problematic view
x11()
ggmap(get_map(maptype = "satellite", zoom = 12), extent = "device") +
geom_polygon(aes(x = lon, y = …Run Code Online (Sandbox Code Playgroud) 我想知道在R中是否存在适当的区间操作和比较框架.
经过一些搜索,我只能找到以下内容: - 基本包中的函数findInterval.(但我很难理解) - 这里和那里有关于联合和交叉的答案(特别是:http://r.789695.n4.nabble.com/Union-Intersect-two-continuous-sets-td4224545.html)
您是否知道实施一套全面的工具以轻松处理区间操作中的频繁任务,如包含/ setdiff/union/intersection /等.(例如,请参阅此处获取功能列表)?或者你会有建议这种方法的建议吗?
以下是我这方面的一些草案.它肯定很尴尬,仍然有一些错误,但它可能说明我在寻找什么.
关于所采用的选项的初步方面 - 应无缝地处理间隔或间隔设置 - 间隔表示为2列data.frames(下边界,更高边界),在一行上 - 间隔集表示为2列,有几行 - 第三行可能需要列来识别间隔集
联盟
interval_union <- function(df){ # for data frame
df <- interval_clean(df)
if(is.empty(df)){
return(as.data.frame(NULL))
} else {
if(is.POSIXct(df[,1])) {
dated <- TRUE
df <- colwise(as.numeric)(df)
} else {
dated <- FALSE
}
M <- as.matrix(df)
o <- order(c(M[, 1], M[, 2]))
n <- cumsum( rep(c(1, -1), each=nrow(M))[o])
startPos <- c(TRUE, n[-1]==1 & n[-length(n)]==0)
endPos <- c(FALSE, n[-1]==0 & …Run Code Online (Sandbox Code Playgroud)