正确地对lat进行地理编码,并在R中包含long

问题描述 投票:2回答:1

我正在尝试使用给定的纬度和经度对数据集进行地理编码。然后,我将使用这些点并将多边形要素连接到它们。但是,我用于这些点的投影是不正确的。我该如何以更好,更有效的方式来解决这个问题?

我首先上传文件并设置投影。我已经有一个多边形文件了一个投影,所以我用那个投影作为点。

fema <- readOGR(paste(fema.path, "/2010_DFIRM.shp", sep=""))
fema@proj4string
#CRS arguments:
 #+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 
 #+lat_0=27.83333333333333
 #+lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0
 #+units=us-ft +no_defs 

data <- read.table(paste(inf.path, "/samp_HT_ANALYSIS", sep = ""), sep=",", fill=T)
coords <- data[,c(22:23)]
data.sp <- SpatialPointsDataFrame(data = data, coords = coords, proj4string =
            CRS("+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"))

但是,当我使用以下代码进行空间连接时...

  test <- over(data.sp, fema, returnList = T)

没有属性与我的观点重叠。

我继续用基本图层贴图在ArcMap中的点进行贴图,它们根本不在平面上贴图。有人可以解释一下我该如何解决吗?同样,有关R中的投影的一般信息也将非常有用。我以为我可以将一个文件的CRS设置为等于另一个文件的CRS,但是我可能不得不重新投影所有文件。

r gis geospatial shapefile map-projections
1个回答
0
投票

我相信这是由于您的SpatialPointsDataFrame被放入错误的CRS而发生的。您的座标最近是否正确?如果是这样,它们应该对应于WGS 1984 prj4,即:

+proj=longlat +datum=WGS84 +no_defs

您正在做的是将经纬度坐标分配给其他投影。与ArcMap不同,R不能即时转换。在为空间点分配了适当的坐标之后,您将必须使用以下功能将一个对象的CRS转换为另一个CRS:

这里我将fema shapefile的CRS转换为WGS 1984(与您的data.sp相同的投影)

fema <- spTransform(fema, crs(data.sp))

两个空间对象都在同一个CRS中后,您可以重试空间连接。

让我知道是否合理!

© www.soinside.com 2019 - 2024. All rights reserved.