---
layout: post
title: "Bản đồ Việt Nam trong R"
published: yes
---

## Lấy dữ liệu

Dữ liệu bản đồ Việt Nam cho R được lấy từ trang <http://gadm.org/>. (Trên trang này còn có rất nhiều bản đồ khác.)

Hoặc lấy trực tiếp trong R:

```{r eval=FALSE}
con <- url("http://biogeo.ucdavis.edu/data/gadm2/R/VNM_adm2.RData")
print(load(con))
close(con)
```

Sau khi lấy về (ngày 21/11/2014) thì thấy bản đồ này là bản đồ 64 tỉnh, tức bản đồ trước khi Hà Tây sáp nhập vào Hà Nội năm 2008. Vậy là phải thêm bước 2.

## Sáp nhập tỉnh

### Tải dữ liệu

```{r eval=FALSE}
load("./vietnam/maps/VNM_adm2.RData")
```

### Gọi thư viện cần thiết

```{r eval=FALSE}
libs <- c("rgeos", "maptools", "sp")
lapply(libs, require, character.only = TRUE)
```

### Nhóm và sáp nhập tỉnh

#### Sáp nhập SpatialPolygons

```{r eval=FALSE}
gadm63.fac <- as.factor(c(1:18,19,18,21:64))
gadm63.sp <- unionSpatialPolygons(gadm, gadm63.fac)
```

#### Sáp nhập DataFrame

```{r eval=FALSE}
# Lấy data frame từ gadm
gadm63.df <- gadm@data

# Xóa tỉnh "Hà Tây"
gadm63.df <- gadm63.df[-20, ]
```

#### Trộn SP và DF

```{r eval=FALSE}
gadm63 <- SpatialPolygonsDataFrame(gadm63.sp, gadm63.df)
```

#### Kiểm tra

```{r eval=FALSE}
plot(gadm[c(18,20),])
plot(gadm63[10, ], add = TRUE, border = "red", lwd = 2)
```

![Hà Nội](../figures/ban-do-viet-nam-in-r/hanoi.png){: .fig}

Lưu lại dùng sau:

```{r eval=FALSE}
saveRDS(gadm63, file="./vietnam/geo63.rds")
```

## Bản đồ Việt Nam

```{r eval=FALSE}
geo63 <- readRDS("./vietnam/geo63.rds")
spplot(geo63, "ID_1", main="63 tỉnh")
```

![Việt Nam](../figures/ban-do-viet-nam-in-r/geo63.png){: .fig}


Tải tệp [`geo63.rds`](http://raw.githubusercontent.com/hochanh/rblog/gh-pages/_knitr/vietnam/geo63.rds).
