---
title: "rast_values_order"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{rast_values_order}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

```{r setup}
library(sf2)
```

**R语言中，若想制作出地理位置正确的空间图，数据排序需要满足如下要求：**

<u>**Table1.** 空间数据中数据排序要求。</u>

| 函数                                                         | 数据名称 | 数据格式          | 其他说明                                                     |
| ------------------------------------------------------------ | -------- | ----------------- | ------------------------------------------------------------ |
| image, fileds::image.plot, lattice::levelplot                | mat_base | `[lon, lat]`      | `mat_base` to `mat_rast`:<br />`t() %>% fliplr()`, `flipud() %>% t()` |
| raster::raster, terra::rast<br />raster::as.array            | mat_rast | `[rev(lat), lon]` | `mat_rast` to `mat_gdal`:<br />`t() %>% flipud()`, `fliplr() %>% t()` |
| g_base = sf2::make_grid(type = “base”), `default type`       | mat_base | `[lon, lat]`      | **优势：**<br/>(1) lon、lat都是按照从小到大进行排列，符合常规习惯；<br/> (2) 此种格式，R语言基础绘图可以正常出图<br /><br />**劣势：**<br/>与所有空间数据R包相悖。 |
| (a) g_gdal = sf2::make_grid(type = “gdal”), <br/>(b) rgdal、sp、terra、raster的计算函数返回的均是这种数据排列格式，<br />如：raster::values, raster::area, terra::values, terra::as.data.frame，他们是按照g_gdal排序格式，与其构造函数中数据排序无关。<br />(c) **terra::writeCDF保存的nc文件**, ncdf4::ncvar_get获取的array。 | mat_gdal | `[lon, rev(lat)]` | `mat_base` to `mat_gdal`:<br />flipud()<br /><br />`mat_rast` to `mat_gdal`:<br />`t()` |

> 其中， `rev(lat)`代表倒序的lat。
> 注意：`g_mat`转化为raster::raster或terra::rast之后，则按照新的数据格式排列数据。
