欢迎光临散文网 会员登陆 & 注册

R语言学习记录:关于矢量和栅格的坐标系|如何定义投影和重投影

2022-03-12 19:56 作者:孤独的王大老实  | 我要投稿

https://spatialreference.org/

https://epsg.io/

这两个网站可以查找CRS字符串(proj4、WKT、EPSG)

https://products.aspose.app/gis/transformation
这个网站可以在线转换WGS和UTM

1.查看CRS的方法

矢量:

栅格:


2.定义CRS的方法

(注意是定义CRS,原来没CRS,现在要赋予一个CRS)

2.1矢量:

法1:指定epsg代码

法2:指定proj4字符串

2.2栅格:


3.重投影

(注意与定义投影的区别,原来有CRS,现在更换CRS)

3.1矢量重投影

3.1.1 sf包重投影

法1:sf包指定epsg代码

法2:sf包指定proj4字符串

法3:sf包用一个对象的crs(有的教程里说需要添加“asText=T”,这样才能作为字符串输出并作为新的输入,但是我自己测试了一下,好像不用也可以)

3.1.2 terra包重投影

和下面的terra包栅格投影是一样的,看完后面就懂了。

3.2栅格重投影

3.2.1raster包重投影


不知道CRS类是啥意思


法1:raster包指定EPSG代码

法2:raster包指定proj4字符串

法3:raster包用另一个对象的crs


3.2.2terra包重投影

法1:用另一个对象的CRS作为参考


法2:指定EPSG代码

法3:指定proj4字符串或者WKT字符串

别用字符串重投影,真的太麻烦了!



4.学习过程中遇到的问题

太长不看版总结:不能用定义投影的函数去重投影。

用投影坐标系转地理坐标系进行测试:

crs函数结果显示proj4和WKT2,节选proj4的部分如下:

用crs函数试图将投影坐标系转为地理坐标系:

函数能运行,看看crs的结果

结果表明虽然代码能运行,但是用plot函数查看,会发现还是投影坐标系的坐标

坐标轴上还是以m为单位

把它写出来导到arcmap里看看能不能运行

导入后空白并且坐标单位还是m

然后用projectRaster函数重投影

但是出来一个警告信息

前后的crs一致

警告说:前后crs一致。那么说明前面的用定义投影的函数是运行过的。

此时再plot一下重投影之后的栅格b

plot的结果和上面“舔狗之怒”一样,坐标单位仍然是m

写出来再导到arcmap看看

和前面一样一样滴

这个时候就可以初步下结论了:用定义投影的函数作用于一个已经有投影的栅格后,再用重投影函数也还是不起作用。

为了验证这个结论,进行如下操作:

把变量清空,重新导入原始栅格,直接用projectRaster函数重投影


查看此时b的crs结果

此时的crs结果和刚开始一样,plot之后坐标会改变吗?try it

坐标单位变成了经纬度

再写出来导到arcmap,观察结果如何

got it !

arcmap可以显示并且坐标变成了经纬度。


总结:不仅不能用定义投影的函数去重投影,而且在错误使用该函数后再用重投影函数也还是会报错。只能一开始就用重投影函数。

R语言学习记录:关于矢量和栅格的坐标系|如何定义投影和重投影的评论 (共 条)

分享到微博请遵守国家法律