繁体   English   中英

如何使用 terra r 包为栅格分配正确的投影和范围?

[英]How to assign correct projection and extent to a raster using terra r package?

我正在尝试使用以下代码使用terra r 包读取一个 tif 文件

hh <- rast("imagery_HH.tif")
#> Warning message:
#> [rast] unknown extent 
hh
#> class       : SpatRaster 
#> dimensions  : 8371, 8946, 1  (nrow, ncol, nlyr)
#> resolution  : 1, 1  (x, y)
#> extent      : 0, 8946, 0, 8371  (xmin, xmax, ymin, ymax)
#> coord. ref. :  
#> source      : imagery_HH.tif 
#> name        : imagery_HH 

使用函数terra::describe("imagery_HH.tif") ,我得到了以下信息:

   [4] "Size is 8946, 8371"                                                      
   [5] "GCP Projection = "                                                       
   [6] "GEOGCRS[\"WGS 84\","                                                     
   [7] "    DATUM[\"World Geodetic System 1984\","                               
   [8] "        ELLIPSOID[\"WGS 84\",6378137,298.257223563,"                     
   [9] "            LENGTHUNIT[\"metre\",1]]],"                                  
  [10] "    PRIMEM[\"Greenwich\",0,"                                             
  [11] "        ANGLEUNIT[\"degree\",0.0174532925199433]],"                      
  [12] "    CS[ellipsoidal,2],"                                                  
  [13] "        AXIS[\"geodetic latitude (Lat)\",north,"                         
  [14] "            ORDER[1],"                                                   
  [15] "            ANGLEUNIT[\"degree\",0.0174532925199433]],"                  
  [16] "        AXIS[\"geodetic longitude (Lon)\",east,"                         
  [17] "            ORDER[2],"                                                   
  [18] "            ANGLEUNIT[\"degree\",0.0174532925199433]],"                  
  [19] "    USAGE["                                                              
  [20] "        SCOPE[\"Horizontal component of 3D system.\"],"                  
  [21] "        AREA[\"World.\"],"                                               
  [22] "        BBOX[-90,-180,90,180]],"                                         
  [23] "    ID[\"EPSG\",4326]]"                                                  
  [24] "Data axis to CRS axis mapping: 2,1" 

如果我们仔细观察,我们会发现缺少坐标参考,分辨率显示 1 x 1,但范围不正确。 但是如果我们在 QGIS 中打开 tif 文件,它会显示以下具有 EPSG crs 的属性:4326

在此处输入图像描述

现在如何使用terra R 包读取具有适当坐标系、分辨率和范围的 tif 文件。

下面表明这不是常规栅格。 它显示 GCP(特定栅格单元的坐标),如果需要这些,您可能没有矩形范围或恒定分辨率。 (我没有检查过它们是否是,但你可以)。

读取此类文件需要不同于读取常规光栅文件的方法。 第一次看到这样的文件,目前“terra”还不支持; 我会把它放在待办事项清单上。

terra::describe("imagery_HH.tif")[31:40]
 [1] "Data axis to CRS axis mapping: 2,1"                  
 [2] "GCP[  0]: Id=1, Info="                               
 [3] "          (0,0) -> (78.591314,29.400624,0)"          
 [4] "GCP[  1]: Id=2, Info="                               
 [5] "          (357.84,0) -> (78.52592634,29.41112936,0)" 
 [6] "GCP[  2]: Id=3, Info="                               
 [7] "          (715.68,0) -> (78.4607346,29.4215638,0)"   
 [8] "GCP[  3]: Id=4, Info="                               
 [9] "          (1073.52,0) -> (78.39539736,29.43198708,0)"
[10] "GCP[  4]: Id=5, Info="   

(依此类推,直到第 1383 行)。

正如@bretauv 所指出的,投影正在正确加载。 我不确定为什么terra::rast没有正确读取范围,但如果有任何安慰的话,它不会被raster::raster读取,所以这不仅仅是一个terra问题。 在任何情况下,如果您知道范围,则可以手动设置范围,在本例中您知道。

hh <- terra::rast("imagery_HH.tif")
terra::set.ext(
  x = hh, 
  value = c(76.6811227745188262,
            78.59105666365414556,
            27.9827663027027924,
            29.6529629093873979)
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM