我的数据框包含韩国首尔(首都)空气中的PM10浓度。 Please, take a look.我想从这个数据集中绘制半变异函数。由于LAT / LON数据在这里,所以我已经预测了这些数据。我以这种方式预测数据:
library(rgdal)
seoul3112 <- read.csv("seoul3112.csv", row.name=1)
seoul3112 <- na.omit(seoul3112)
coordinates(seoul3112) <- ~LON+LAT
proj4string(seoul3112) <- "+proj=longlat +datum=WGS84"
seoul3112
投射后我得到了seoul311,如下所示
coordinates PM10
1 (126.976, 37.56464) 42
2 (127.005, 37.57203) 37
3 (127.0051, 37.54031) 46
4 (127.0957, 37.54464) 47
5 (127.0411, 37.54311) 46
Q1:我发现投影后,LON / LAT的值显示与之前数据帧几乎相同的值。我的问题是这个proj4string(seoul311) = "+proj=longlat +datum=WGS84"
命令的实际功能是什么。在这里,LON / LAT(度)转移到km / m或类似的东西?
我尝试使用rgdal包编写另一个代码,如下所示:
proj4string(seoul3112) <- "+proj=longlat +datum=WGS84"
seoul3112 <- spTransform(seoul3112,
CRS("+proj=utm +north +zone=52 +datum=WGS84"))
seoul3112
投射后我得到了seoul3112,如下所示
coordinates ID time PM10
12 (321241, 4159438) 111121 2012030112 68
173 (323824.6, 4160203) 111123 2012030112 64
334 (323754.6, 4156684) 111131 2012030112 67
495 (331771.9, 4156998) 111141 2012030112 65
656 (326946.2, 4156927) 111142 2012030112 69
Q2。在这里,我可以看到LON / LAT值转化为一些大值!什么是这些价值的含义?米/公里或类似的东西?在上面代码北方意味着什么?北半球?
Q3。正如我之前提到的,我想在韩国(首都52区)策划semivarigram超过首尔。那么,我应该使用哪种投影规则?我应该考虑使用区域吗?什么时候应该考虑使用区域?
我对投射数据有很多困惑。你能否详细回答我的三个问题?
答案 0 :(得分:0)
(仅供参考:在单个SO帖子中,这通常是3个问题的不良形式)
Q1:你实际上没有在第一个操作块中“投射”任何东西。您从普通数据框创建了一个“空间”对象,并“声明”它所处的坐标参考系统(CRS)。您也可以准确地做到这一点,因为您只有lat / lon值。执行str(seoul3112)
查看您最终创建的SpatialPointsDataFrame
的结构。
Q2:您实际上将“投影”到Universal Transverse Mercator(UTM)CRS的坐标。 UTM网格坐标表示为以东为单位的距离,称为“东向”,以及以米为单位的距离,称为“北向”。
问题3:你应该查看建议的“官方”政府预测建议,但是你可能会对韩国的方位角等距离有所帮助(mapproject
支持它,因此很容易在ggplot
中使用{1}}):
library(ggplot2)
library(ggthemes)
library(mapdata)
seoul3112 <- read.csv("seoul3112.csv", row.name=1)
seoul3112 <- na.omit(seoul3112)
sk <- map_data("worldHires", "South Korea")
gg <- ggplot()
gg <- gg + geom_map(data=sk, map=sk,
aes(x=long, y=lat, map_id=region),
color="black", fill="white", size=0.25)
gg <- gg + geom_point(data=seoul3112, aes(x=LON, y=LAT))
gg <- gg + coord_map("azequidistant")
gg <- gg + theme_map()
gg
正如您所看到的,根据投影(mapproject
仅支持41)ggplot
可以减少首先投射点的需要。
但是,你正在计算半变异函数,所以如果你想用米工作,你可以这样做:
coordinates(seoul3112) <- ~LON+LAT
proj4string(seoul3112) <- "+proj=longlat +datum=WGS84"
seoul3112_utm <- spTransform(seoul3112,
CRS("+proj=utm +north +zone=52 +datum=WGS84"))
proj_3112 <- as.data.frame(coordinates(seoul3112_utm))
proj_3112 <- cbind.data.frame(proj_3112, seoul3112_utm@data)
然后计算距离(我在这里假设很多):
dists <- dist(proj_3112[,1:2])
然后完成你的模型。 nlme
,geoR
和其他一些R包可以帮助进行半变异函数模型的开发和计算(以及绘图)。