ArcPy常用函数示例01-栅格数据投影转换

我不是证明我有多了不起,我是要证明我失去的东西我一定要亲手拿回来(“英雄本色”-周润发)。


前言

  1. 概述

  • 基于arcpy.ProjectRaster_management函数对栅格数据进行投影转换
  • 如需程序测试数据,请留下邮箱

  2. 版本

   2.1 山东青岛,2021年5月20日,Version 1

  3. 参考资料

[1]. ArcPy函数帮助手册


一、投影转换的目的

  1. 地理数据必须有地理坐标参考或者投影坐标参考,不同坐标参考下,对于同一栅格数据,其栅格形状、数据的行数和列数不一样,当我们需要依据栅格行列号进行不同影像间的对应分析时,就必须确保不同影像之间坐标系统的一致性,才能做到不同影像间像元的一一对应。
  2. 不同投影坐标系,侧重不同,比如当我们需要进行面积分析时,就需要 “等积投影”

二、arcpy.ProjectRaster_management()函数

  1. 函数位置
    借助ArcPy自带函数实现栅格数据投影转换,下图展示了该函数的位置Projecter Raster

  2. 函数用法
    2.1 函数的输入参数
       该函数一共8个输入参数,其中三个必须输入参数,分别是
    (1)in_raster,输入栅格数据,即需要转换投影的栅格数据
    (2)out_raster,输出栅格数据,即转换投影之后的栅格数据
    (3)out_coor_system,输出坐标系统,即想要转换成的坐标系统

    2.2 说明
        需要注意resampling_type重采样方法的选择。 NEARST是默认的重采样方法,该方法和“Majourity”方法适合于“categorical data”即分类数据。对于连续数据建议使用BILINEAR方法或者CUBIC方法。


三、应用示例

  1. 测试代码
    测试代码的功能是将某一文件夹下的所有.tif数据进行投影转换,由地理坐标系转换为等积投影,测试代码如下:
# -*- coding: cp936 -*-

'''
1. 程序目的
  (1) 将GCS-WGS1984地理坐标系转换为Asia_North_Albers_Equal_Area_Conic.prj投影坐标系

2. 山东青岛  2021年5月20日

3. 说明
   (1) 程序调用ArcPy的函数,所以是在ArcMap自带的Python27环境下编写的程序
'''

# 0. 相关包的导入
import os
import glob

import arcpy;from arcpy import env
from arcpy.sa import *
import shutil
import datetime
arcpy.CheckOutExtension("Spatial")

# 1. 路径处理和基本变量定义

  # (1) 输入路径
inpath = '存储.tif数据的文件夹完整路径\\'

  # (2) 输出路径
outpath = inpath + 'Project'
if os.path.exists(outpath):
    shutil.rmtree(outpath)
    os.mkdir(outpath)
else:
    os.mkdir(outpath)

  # (3) 目标投影坐标系   
EqualAreaPro = rootdir + 'Asia_North_Albers_Equal_Area_Conic.prj'
  # (4) 重新投影之后的像元大小
cellsize = 50000 # 50km

# 2. 调用arcpy.ProjectRaster_management()函数,实现批量投影转换
  # (1) 获取某一路径下的所有.tif文件
in_raster_all = glob.glob(os.path.join('%s%s')%(inpath,'*.tif'))
  # (2) 循环批量投影转换
for ii in range(len(in_raster_all)):
    in_raster = in_raster_all[ii] # 输栅格数据
    dir_path,inraster_name = os.path.split(in_raster) # 分离路径和输入栅格名称
    outraster_name = inraster_name.replace('.tif','_Albers-EA.tif')
    out_raster = outpath + '\\' + outraster_name

    # 批量投影转换
    arcpy.ProjectRaster_management(in_raster,out_raster,EqualAreaPro,"NEAREST",cellsize,\
                            "#", "#", "#")
    
    print outraster_name

print '*******************************************************'
print 'Finished'

python2.7栅格数据批量转换投影:ProjectRaster_management (in_raster, out_raster, out_coor_system, {resampling_type}, {cell_size}, {geographic_transform}, {Registration_Point}, {in_coor_system}) in_raster 输入栅格数据集。Mosaic Layer; Raster Layer out_raster 要创建的输出栅格数据集。以文件格式存储栅格数据集时,需要指定文件扩展名,具体如下:.bil - Esri BIL, .bip - Esri BIP, .bmp - BMP, .bsq - Esri BSQ, .dat - ENVI DAT,.gif - GIF,.img - ERDAS IMAGINE,.jpg - JPEG,.jp2 - JPEG 2000,.png - PNG,.tif - TIFF,无扩展名 - Esri Grid,以地理数据库形式存储栅格数据集时,不应向栅格数据集的名称添加文件扩展名。 将栅格数据集存储到 JPEG 文件、JPEG 2000 文件、TIFF 文件或地理数据库时,可以指定压缩类型和压缩质量。 Raster Dataset out_coor_system 输入栅格待投影到的目标坐标系。默认值将基于“输出坐标系”环境设置进行设定。该参数的有效值是扩展名为 .prj 的文件。现有要素类、要素数据集、栅格目录(基本上包含了与坐标系相关的所有内容)。坐标系的字符串表示。要生成此类较长的字符串,可向模型构建器添加一个坐标系变量,并根据需要设置该变量的值,然后将模型导出到 Python 脚本。 Coordinate System resampling_type (可选) 要使用的重采样算法。默认设置为 NEAREST。 NEAREST —最邻近分配法 BILINEAR —双线性插值法 CUBIC —三次卷积插值法 MAJORITY —众数重采样法 NEAREST 和 MAJORITY 选项用于分类数据,如土地利用分类。NEAREST 选项是默认设置,因为它是最快的插值法,同时也因为它不会更改像元值。请勿对连续数据(如高程表面)使用 NEAREST 或 MAJORITY。BILINEAR 选项和 CUBIC 选项最适用于连续数据。不推荐对分类数据使用 BILINEAR 或者 CUBIC,因为像元值可能被更改。 cell_size (可选) 新栅格数据集的像元大小。默认像元大小为所选栅格数据集的像元大小。 Cell Size XY geographic_transform (可选) 在两个地理坐标系或基准面之间实现变换的方法。当输入和输出坐标系的基准面相同时,地理(坐标)变换为可选参数。如果输入和输出基准面不同,则必须指定地理(坐标)变换。 有关各个受支持的地理(基准面)变换的详细信息,请参阅位于 ArcGIS 安装目录的 \Documentation 文件夹下的 geographic_transformations.pdf 文件。 Registration_Point(可选)用于对齐像素的 x 和 y 坐标(位于输出空间中)。配准点的工作原理与捕捉栅格的概念类似。通过配准点可指定用于定位输出像元的原点,而不是仅将输出捕捉到现有栅格像元。所有输出像元与该点之间必须间隔一个像元。该点的坐标不必位于一角,也不必落入栅格数据集中。捕捉栅格环境设置参数将优先于 Registration_Point 参数。因此,如果您要设置配准点,请确保尚未设置捕捉栅格。 in_coor_system (可选) 输入栅格数据集的坐标系。Coordinate System
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EWBA_GIS_RS_ER

如有帮助,赏杯茶吧。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值