1

韓国のソウル(首都)の空気中のPM10濃度を含むデータフレームがあります。どうぞ、ご覧ください。このデータセットからセミバリオグラムをプロットしたいと思います。ここの 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 値が大きな値に変換されていることがわかります。これらの値の意味は何ですか? m/km か何か?上記のコードで北は何を意味しますか? 北半球?

Q3. 前述したように、韓国のソウル (UTM ゾーン 52) でセミバリグラムをプロットしたいと考えています。では、どの射影規則を使用すればよいでしょうか? UTM ゾーンを考慮する必要がありますか? UTM ゾーンはいつ検討する必要がありますか?

データの投影について多くの混乱があります。私の3つの質問に詳しく答えていただけますか?

4

1 に答える 1

0

(FYI: 通常、1 回の SO 投稿で 3 つの質問をするのは悪い形式です)

Q1: 操作の最初のブロックでは、実際には何も「投影」しませんでした。プレーン データ フレームから「空間」オブジェクトを作成し、それがどの座標参照系 (CRS) にあるかを「記述」しました。また、緯度/経度の値があったので、それも正確に行いました。str(seoul3112)を実行して、最終的に作成した の構造を確認しますSpatialPointsDataFrame

Q2: 実際に座標をユニバーサル横メルカトル (UTM) CRS に「投影」しましたUTM グリッド座標は、「東」と呼ばれる東へのメートル単位の距離と、「北距」と呼ばれる北へのメートル単位の距離として表されます。

Q3: 提案された「公式の」政府の投影の推奨事項を確認する必要がありますが、おそらく韓国の場合、方位角の等距離のようなものを使用できます (これは でサポートされmapprojectているため、 で簡単に操作できggplotます)。

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

ここに画像の説明を入力

ご覧のとおり、投影法 ( mapproject41 のみをサポート)によっては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])

そしてモデルを完成させます。nlmegeoRおよびその他のいくつかの R パッケージは、セミバリオグラム モデルの開発と計算 (およびプロット) に役立ちます。

于 2015-07-27T11:41:13.483 に答える