R 如何将xy点重新编码为多边形空间连接中的新单位?
所以我想从数据框中映射xy点,然后用一个与新多边形相关的标记对它们重新编码,这样我就可以将它们链接到该单元;根据我的理解,这需要空间连接。我一直在关注这些链接: 我遗漏了一些关于数据帧转换过程的信息,我不确定我在哪里出错。我正在粘贴来自开放数据API的快速且肮脏的可复制代码作为示例。我使用的形状文件是位于以下位置的纽约社区区文件: 代码如下: 在这种情况下,作为一个可复制的样本,让我们从开放数据中获取这些点,并将它们映射到纽约市的社区地区文件中。感谢你们的帮助R 如何将xy点重新编码为多边形空间连接中的新单位?,r,ggplot2,geospatial,R,Ggplot2,Geospatial,所以我想从数据框中映射xy点,然后用一个与新多边形相关的标记对它们重新编码,这样我就可以将它们链接到该单元;根据我的理解,这需要空间连接。我一直在关注这些链接: 我遗漏了一些关于数据帧转换过程的信息,我不确定我在哪里出错。我正在粘贴来自开放数据API的快速且肮脏的可复制代码作为示例。我使用的形状文件是位于以下位置的纽约社区区文件: 代码如下: 在这种情况下,作为一个可复制的样本,让我们从开放数据中获取这些点,并将它们映射到纽约市的社区地区文件中。感谢你们的帮助 #libraries----
#libraries--------------------------
library(ggplot2)
library(ggmap)
library(sp)
library(jsonlite)
library(RJSONIO)
#call api data--------------------------
df = fromJSON("https://data.cityofnewyork.us/resource/24t3-xqyv.json?$query= SELECT Lat, Long_")
df = df[1:10000]
df <- data.frame(t(matrix(unlist(df), nrow=length(unlist(df[1])))))
names(df)[names(df) == 'X2'] = 'x'
names(df)[names(df) == 'X1'] = 'y'
df = df[, c("x", "y")]
df$x = as.numeric(as.character(df$x))
df$y = as.numeric(as.character(df$y))
df$x = round(df$x, 4)
df$y = round(df$y, 4)
df$x[df$x < -74.2] = NA
df$y[df$y < 40.5] = NA
df = na.omit(df)
#map data----------------------------
cd = readOGR("nycd.shp", layer = "nycd")
cd = spTransform(cd, CRS("+proj=longlat +datum=WGS84"))
cd_f = fortify(cd)
#map data
nyc = ggplot() +
geom_polygon(aes(x=long,
y=lat, group=group), fill='grey',
size=.2,color='black', data=cd_f, alpha=1)
nyc + geom_point(aes(x = x, y = y), data = df, size = 1)
#spatial join---------------------------
# Convert pointsDF to a SpatialPoints object
pointsSP <- SpatialPoints(df,
proj4string=CRS("+proj=longlat +datum=wgs84"))
Error in CRS("+proj=longlat +datum=wgs84") :
unknown elliptical parameter name
# Use 'over' to get _indices_ of the Polygons object containing each point
indices <- over(pointsSP, cd)
#库--------------------------
图书馆(GG2)
图书馆(ggmap)
图书馆(sp)
图书馆(jsonlite)
图书馆(RJSONIO)
#调用api数据--------------------------
df=fromJSON(“https://data.cityofnewyork.us/resource/24t3-xqyv.json?$query=选择横向、纵向
df=df[1:10000]
df您必须提供正确的CRS。我在(WGS 1984)上找到的
您必须提供正确的CRS。我在(WGS 1984)上找到的
像往常一样,你们都是最好的!非常感谢。像往常一样,你们都是最好的!非常感谢。
# Convert pointsDF to a SpatialPoints object
pointsSP <- SpatialPoints(df,
proj4string=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"))
pointsSP <- spTransform(pointsSP, proj4string(cd))
# Use 'over' to get _indices_ of the Polygons object containing each point
indices <- over(pointsSP, cd)
head(indices)
# BoroCD Shape_Leng Shape_Area
# 1 407 139168.79 328355685
# 2 407 139168.79 328355685
# 3 407 139168.79 328355685
# 4 407 139168.79 328355685
# 5 407 139168.79 328355685
# 6 105 35287.62 43796717