R中形状坐标系的转换

R中形状坐标系的转换,r,gis,R,Gis,大家好,我的社区 有人能帮我解决我面临的一个地理信息系统问题吗。我正在尝试将一个可识别变量分配给我已地理编码的地址列表。地理编码是从谷歌地图API获得的,因此我有纬度和经度信息(即-155.6019 18.99883)。我想将此信息用于特定的形状文件。我的难题是我的形状文件没有使用相同的纬度和经度系统。我附上了代码,以便您可以看到形状文件中使用的坐标系(即843662.6 2132942) 我想知道的是如何匹配我的地址列表和这个形状文件之间的坐标,以便我可以使用“覆盖”功能将两者匹配在一起 谢谢

大家好,我的社区

有人能帮我解决我面临的一个地理信息系统问题吗。我正在尝试将一个可识别变量分配给我已地理编码的地址列表。地理编码是从谷歌地图API获得的,因此我有纬度和经度信息(即-155.6019 18.99883)。我想将此信息用于特定的形状文件。我的难题是我的形状文件没有使用相同的纬度和经度系统。我附上了代码,以便您可以看到形状文件中使用的坐标系(即843662.6 2132942)

我想知道的是如何匹配我的地址列表和这个形状文件之间的坐标,以便我可以使用“覆盖”功能将两者匹配在一起

谢谢你抽出时间

#function to download shapefile from web
dlshapefile <- function(shploc,shpfile) {
temp <- tempfile()
download.file(shploc, temp)
unzip(temp)
}

temp <- tempfile()

require(maptools)
dlshapefile(shploc="http://files.hawaii.gov/dbedt/op/gis/data/highdist_n83.shp.zip", temp)
P4S.latlon <- CRS("+proj=longlat +datum=WGS84")
shapeFile <- readShapePoly("highdist_n83.shp", verbose=TRUE, proj4string=P4S.latlon)
#从web下载shapefile的函数

dlshapefile我将使用
rgdal
包中的
readOGR
,因为它保留了投影信息

require(rgdal)

in.dir <- "your_directory_name"

sh <- readOGR(in.dir, layer = "highdist_n83")
sh@proj4string # note projection details
sh2 <- spTransform(sh, CRS("+proj=longlat +datum=WGS84"))
sh2@proj4string # and after transforming
plot(sh2)
以及:

看看这是否适用于您希望添加的地址数据。 编辑如果要沿着
ggplot2
路线走,可以执行以下操作:

# Plotting with ggplot - first transform shapefile to data frame
sh2.df <- fortify(sh2)

# Fake address data taken from Google maps
add <- data.frame(name = c("University of Hawaii", "Mokuleia Beach Park"),
                      lat = c(21.298971, 21.580508),
                      long = c(-157.817722, -158.191017))

# And plot
ggplot(data = sh2.df, aes(x = long, y = lat, group = group)) +
     geom_polygon(colour = "grey20", fill = "white", size = 0.8) +
     geom_point(data = add, size = 3, aes(x = long, y = lat, group = NULL), pch = 21, fill = "red") +
     coord_equal() +
     theme()
#使用ggplot打印-首先将shapefile转换为数据帧

sh2.df Mahalo SlowLearner。您的解决方案清晰易懂。我从中学到了很多。非常感谢。
> sh2@proj4string # and after transforming
CRS arguments:
 +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
# Plotting with ggplot - first transform shapefile to data frame
sh2.df <- fortify(sh2)

# Fake address data taken from Google maps
add <- data.frame(name = c("University of Hawaii", "Mokuleia Beach Park"),
                      lat = c(21.298971, 21.580508),
                      long = c(-157.817722, -158.191017))

# And plot
ggplot(data = sh2.df, aes(x = long, y = lat, group = group)) +
     geom_polygon(colour = "grey20", fill = "white", size = 0.8) +
     geom_point(data = add, size = 3, aes(x = long, y = lat, group = NULL), pch = 21, fill = "red") +
     coord_equal() +
     theme()