Skip to content

Commit 4622d1c

Browse files
committed
ch05
1 parent 58f42e2 commit 4622d1c

1 file changed

Lines changed: 20 additions & 20 deletions

File tree

05-geometry-operations-ja.Rmd

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,16 @@ Section \@ref(raster-vector) では、ベクタオブジェクトとラスタオ
3939

4040
## ベクタデータに対するジオメトリ操作 {#geo-vec}
4141

42-
ここでは、ベクタ (`sf`) オブジェクトのジオメトリを何らかの方法で変更する操作について説明する
42+
ここでは、ベクタ (`sf`) オブジェクトのジオメトリを変更する操作について説明する
4343
前の章 (Section \@ref(spatial-vec)) で紹介した空間データ操作よりも高度なもので、ここではジオメトリを掘り下げていくことがある。
4444
このセクションで説明する関数は、クラス `sf` のオブジェクトに加えて、クラス `sfc` のオブジェクトにも作用する。
4545

4646
### 簡略化 {#simplification}
4747

4848
\index{べくた@ベクタ!かんりゃくか@簡略化}
4949
簡略化とは、通常、縮尺の小さい地図で使用するために、ベクタオブジェクト (線やポリゴン) を一般化する処理のことである。
50-
オブジェクトを単純化するもう一つの理由は、それらが消費するメモリ、ハードディスク容量、ネットワーク帯域幅の量を減らすためである。
51-
インタラクティブ地図として公開する前に、複雑な形状を簡略化することが賢明だろう
50+
オブジェクトを単純化するもう一つの理由は、消費するメモリ、ハードディスク容量、ネットワーク帯域幅の量を減らすためである。
51+
インタラクティブ地図として公開する前に複雑な形状を簡略化することも賢明だろう
5252
**sf** パッケージは `st_simplify()` を提供する。これは Douglas-Peucker アルゴリズムの実装を使用して、頂点数を削減するものである。
5353
`st_simplify()` は、`dTolerance` を使用することで、一般化のレベルを地図で使われている単位で制御することができる [詳細は @douglas_algorithms_1973]
5454
Figure \@ref(fig:seine-simp) は、セーヌ川とその支流を表すジオメトリ `LINESTRING` を簡略化したものである。
@@ -67,8 +67,8 @@ p_simp2 = tm_shape(seine_simp) + tm_lines() +
6767
tmap_arrange(p_simp1, p_simp2, ncol = 2)
6868
```
6969

70-
ここでできた `seine_simp` オブジェクトは、元の `seine` のコピーであるが、頂点の数は少なくなっている
71-
これは明らかで、以下の検証のように、結果は視覚的にシンプルになり (Figure \@ref(fig:seine-simp)、右)、元のオブジェクトよりもメモリ消費が少ない。
70+
ここでできた `seine_simp` オブジェクトは、元の `seine` の頂点の数は少なくしたコピーである
71+
これは明らかで、以下の検証のように、結果は視覚的に簡略化され (Figure \@ref(fig:seine-simp)、右)、元のオブジェクトよりもメモリ消費が少ない。
7272

7373
```{r 05-geometry-operations-3}
7474
object.size(seine)
@@ -84,8 +84,8 @@ us_states_simp1 = st_simplify(us_states, dTolerance = 100000) # 100 km
8484
```
8585

8686
`st_simplify()` の制限として、ジオメトリ単位でオブジェクトを簡略化することが挙げられる。
87-
このため、「トポロジー」が失われ、Figure \@ref(fig:us-simp) (パネル右上) に示すような、重なり合った「穴のあいた」面単位になってしまうのである
88-
**rmapshaper**`ms_simplify()` が代替となる
87+
このため、「トポロジー」が失われ、Figure \@ref(fig:us-simp) (パネル右上) に示すような、重なり合ったり隙間ができたりする
88+
**rmapshaper**`ms_simplify()` を使えば、この問題は解決できる
8989
デフォルトでは、Douglas-Peucker アルゴリズムのいくつかの制限を克服した Visvalingam アルゴリズムが使用される [@visvalingam_line_1993]
9090
<!-- https://bost.ocks.org/mike/simplify/ -->
9191
次のコードチャンクは、この関数を使用して、`us_states` を簡略化している。
@@ -314,13 +314,13 @@ st_crs(nz_scale) = st_crs(nz_sfc)
314314
st_crs(nz_rotate) = st_crs(nz_sfc)
315315
p_at1 = tm_shape(nz_sfc) + tm_polygons() +
316316
tm_shape(nz_shift) + tm_polygons(col = "red") +
317-
tm_title("シフト") + tm_layout(fontfamily = "Noto Sans CJK JP")
317+
tm_title("シフト") + tm_layout(text.fontfamily = "Noto Sans CJK JP")
318318
p_at2 = tm_shape(nz_sfc) + tm_polygons() +
319319
tm_shape(nz_scale) + tm_polygons(col = "red") +
320-
tm_title("拡大縮小") + tm_layout(fontfamily = "Noto Sans CJK JP")
320+
tm_title("拡大縮小") + tm_layout(text.fontfamily = "Noto Sans CJK JP")
321321
p_at3 = tm_shape(nz_sfc) + tm_polygons() +
322322
tm_shape(nz_rotate) + tm_polygons(col = "red") +
323-
tm_title("回転") + tm_layout(fontfamily = "Noto Sans CJK JP")
323+
tm_title("回転") + tm_layout(text.fontfamily = "Noto Sans CJK JP")
324324
tmap_arrange(p_at1, p_at2, p_at3, ncol = 3)
325325
```
326326

@@ -433,11 +433,11 @@ x_and_y = st_intersection(x, y)
433433
結果は (属性名の表面的な違いを除いて) 同じだが、実装は大きく異なる。
434434

435435
```{r 05-geometry-operations-21}
436-
# way #1
436+
# 方法 #1
437437
p_xy1 = p[x_and_y]
438-
# way #2
438+
# 方法 #2
439439
p_xy2 = st_intersection(p, x_and_y)
440-
# way #3
440+
# 方法 #3
441441
sel_p_xy = st_intersects(p, x, sparse = FALSE)[, 1] &
442442
st_intersects(p, y, sparse = FALSE)[, 1]
443443
p_xy3 = p[sel_p_xy]
@@ -457,8 +457,8 @@ pmulti = st_multipoint(pmat)
457457
box = st_convex_hull(pmulti)
458458
```
459459

460-
上記の例は、応用というより教育的な目的で作成されたものであり、R で地理的ベクタオブジェクトを扱うための理解を深めるために結果を再現することを勧める。しかし、これは、どの実装を使うべきかという重要な問題を提起している
461-
一般に、上記の最初のアプローチのような簡潔な実装が好まれる
460+
上記の例は、応用というより教育的な目的で作成されたものであり、どの実装を使うべきかという重要な問題を提起している。R で地理的ベクタオブジェクトを扱うための理解を深めるために結果を再現することを勧める。
461+
一般には、最初の方法が簡潔で、実装する際に好まれる
462462
Chapter \@ref(algorithms) では、同じ技術やアルゴリズムの異なる実装を選択する問題に戻る。
463463

464464
### ジオメトリ結合 {#geometry-unions}
@@ -916,23 +916,23 @@ library(tmap)
916916
tm1 = tm_shape(dem) +
917917
tm_raster(col.scale = tm_scale(breaks = seq(200, 1100, by = 150))) +
918918
tm_title("オリジナル") +
919-
tm_layout(frame = FALSE, legend.show = FALSE, fontfamily = "Noto Sans CJK JP")
919+
tm_layout(frame = FALSE, legend.show = FALSE, text.fontfamily = "Noto Sans CJK JP")
920920
tm2 = tm_shape(dem_resampl1) +
921921
tm_raster(col.scale = tm_scale(breaks = seq(200, 1100, by = 150))) +
922922
tm_title("最近傍 (near)") +
923-
tm_layout(frame = FALSE, legend.show = FALSE, fontfamily = "Noto Sans CJK JP")
923+
tm_layout(frame = FALSE, legend.show = FALSE, text.fontfamily = "Noto Sans CJK JP")
924924
tm3 = tm_shape(dem_resampl2) +
925925
tm_raster(col.scale = tm_scale(breaks = seq(200, 1100, by = 150))) +
926926
tm_title("双一次補間 (bilinear)") +
927-
tm_layout(frame = FALSE, legend.show = FALSE, fontfamily = "Noto Sans CJK JP")
927+
tm_layout(frame = FALSE, legend.show = FALSE, text.fontfamily = "Noto Sans CJK JP")
928928
tm4 = tm_shape(dem_resampl3) +
929929
tm_raster(col.scale = tm_scale(breaks = seq(200, 1100, by = 150))) +
930930
tm_title("三次補間 (cubic)") +
931-
tm_layout(frame = FALSE, legend.show = FALSE, fontfamily = "Noto Sans CJK JP")
931+
tm_layout(frame = FALSE, legend.show = FALSE, text.fontfamily = "Noto Sans CJK JP")
932932
tm5 = tm_shape(dem_resampl4) +
933933
tm_raster(col.scale = tm_scale(breaks = seq(200, 1100, by = 150))) +
934934
tm_title("三次スプライン補間 (cubicspline)") +
935-
tm_layout(frame = FALSE, legend.show = FALSE, fontfamily = "Noto Sans CJK JP")
935+
tm_layout(frame = FALSE, legend.show = FALSE, text.fontfamily = "Noto Sans CJK JP")
936936
tm6 = tm_shape(dem_resampl5) +
937937
tm_raster(col.scale = tm_scale(breaks = seq(200, 1100, by = 150))) +
938938
tm_title("lanczos") +

0 commit comments

Comments
 (0)