坐标系转换 tif_WGS84 to UTM

Python实现tif_WGS84到UTM坐标系转换
import rasterio
from rasterio.warp import calculate_default_transform, reproject, Resampling
from pyproj import CRS

# 输入输出路径
src_path = r"F:\EGM08_gravity_data\EGM08_gravity_data.tif"
dst_path = r"F:\EGM08_gravity_data\EGM08_gravity_data_utm.tif"

# 定义自定义横向墨卡托投影(中央经线-45°,标准纬线70°N)
dst_crs = CRS.from_proj4("""
    +proj=tmerc +ellps=WGS84 +lat_0=90 +lon_0=-45 +k=0.994 
    +x_0=2000000 +y_0=2000000 +units=m +no_defs
""")

with rasterio.open(src_path) as src:
    # 计算转换参数(优化极区算法)
    transform, width, height = calculate_default_transform(
        src.crs, dst_crs,
        src.width, src.height,
        *src.bounds,
        densify_pts=100  # 加密计算点避免北极形变[5](@ref)
    )

    # 配置输出元数据
    kwargs = src.meta.copy()
    kwargs.update({
        'crs': dst_crs,
        'transform': transform,
        'width': width,
        'height': height,
        'compress': 'lzw'  # 启用LZW压缩减少文件体积
    })

    # 执行重投影
    with rasterio.open(dst_path, 'w', ** kwargs) as dst:
        for i in range(1, src.count + 1):
            reproject(
                source=rasterio.band(src, i),
                destination=rasterio.band(dst, i),
                src_transform=src.transform,
                src_crs=src.crs,
                dst_transform=transform,
                dst_crs=dst_crs,
                resampling=Resampling.cubic_spline  # 三次样条插值保持重力场连续性[9](@ref)
            )
<think>我们面对的核心问题是:**如何在GCS_WGS_1984坐标系(地理坐标系,单位:度)的DEM数据上设置像元大小为10米或30米?** 根据引用[1]和引用[2]的关键信息: 1. 地理坐标系(如GCS_WGS_1984)下的像元大小是以**度**为单位(引用[1]中的GLASS数据示例),而米制单位(10m/30m)需要投影坐标系(如UTM)。 2. 直接对地理坐标系的栅格设置米制像元大小是无效的,因为ArcGIS会将其解释为“度”(例如输入10会被当作10度,这显然不合理)。 3. 解决方案:**先投影转换到以米为单位的投影坐标系(如UTM),再重采样**。 因此,步骤应分为两大阶段: **阶段1:将DEM从地理坐标系(GCS_WGS_1984)投影转换到投影坐标系(如UTM)** **阶段2:在投影坐标系下执行重采样(设置10米或30米像元大小)** --- ### **详细步骤** #### **1. 投影转换(核心前置步骤)** - **工具路径**:`ArcToolbox → 数据管理工具 → 投影和变换 → 栅格 → 投影栅格` - **参数设置**: - 输入栅格:选择GCS_WGS_1984坐标系的DEM - 输出栅格:指定保存路径(如`DEM_Projected.tif`) - 目标坐标系: - 点击【选择坐标系】按钮 → 根据数据位置选择**UTM分区**(例如中国东部可用`WGS_1984_UTM_Zone_50N`)[^1] - *注意:UTM分区需按实际位置选择,可在线查询或根据原始数据经纬度确定* - **输出像元大小(关键)**:在投影转换时即可初步设置目标分辨率(可选10米或30米): - 方法:在【输出像元大小】框中直接输入数值(例如`10`)[^1] - *原理:投影转换过程本身包含重采样,因此可直接指定目标分辨率* - 重采样方法:对DEM选择`双线性插值`(Bilinear)或`三次卷积插值`(Cubic)[^1] #### **2. 验证/调整分辨率(可选)** - 若投影转换后分辨率未精确达到10米/30米(因投影变形可能导致轻微偏差),可再执行一次重采样: - **工具路径**:`ArcToolbox → 数据管理工具 → 栅格 → 栅格处理 → 重采样` - **参数**: - 输入栅格:投影后的DEM(如`DEM_Projected.tif`) - 输出像元大小:输入`10`(或`30`) - 重采样方法:同上(建议`双线性插值`) - **环境设置(对齐关键)**: - 点击【环境】→【处理范围】→ 设置【捕捉栅格】为同一投影坐标系下的参考栅格(如原始投影后DEM) - 设置【范围】为`与捕捉栅格相同`(确保边界对齐)[^1] --- ### **关键注意事项** 1. **坐标系选择原则**: - UTM分区:适用于大多数地区(分带规则:经度每6°为一带,从180°开始编号1~60)[^1] - 若数据跨带,需选择自定义投影或统一到某一带(可能引入变形) 2. **分辨率偏差解释**: - 投影后像元大小可能非精确10米(如9.97米),这是因为: - 地球曲率导致投影变形(UTM是割圆柱投影,中央经线比例因子为0.9996)[^1] - 若需严格匹配(如与另一10米栅格对齐),必须使用【捕捉栅格】[^1] 3. **地理坐标系直接重采样的错误示例**: - 错误操作:在GCS_WGS_1984坐标系下打开重采样工具,输入像元大小`10`(单位被解释为度,约111公里!) - 结果:生成无效数据(像元过大或坐标错乱)[^1][^2] --- ### **操作流程图解** ```mermaid graph TD A[原始DEM:GCS_WGS_1984] --> B{投影转换} B --> C[目标坐标系UTM] C --> D[输出像元大小=10] D --> E[投影后DEM:10米分辨率] E --> F{是否精确对齐?} F -- 是 --> G[完成] F -- 否 --> H[重采样+捕捉栅格] H --> G ``` --- ### **相关问题** 1. **如何确定数据所在的UTM带号?** 2. **投影转换后出现数据边缘变形该如何处理?** 3. **重采样时双线性插值与最邻近法对DEM精度的影响差异?** 4. **如何批量处理多个DEM文件的重采样?** [^1]: 引用[1]: 地理坐标系需投影转换至投影坐标系(如UTM)才能以米为单位设置像元大小。 [^2]: 引用[2]: 坐标系定义错误会导致空间位置偏移,需确保投影正确。</think>### 在GCS_WGS_1984坐标系下设置10米/30米重采样的正确方法 根据引用内容,当DEM数据使用**地理坐标系(GCS_WGS_1984)**时(单位:度),直接设置米制像元大小(10m/30m)会失败。必须**先投影转换到投影坐标系**(如UTM),再进行重采样。以下是完整步骤: --- #### **步骤1:投影转换(核心步骤)** 1. **打开投影栅格工具** - 路径:`ArcToolbox → 数据管理工具 → 投影和变换 → 栅格 → 投影栅格` - 输入栅格:选择GCS_WGS_1984坐标系的DEM - 输出栅格:指定保存路径(如`DEM_Projected.tif`) 2. **设置目标坐标系** - 点击目标坐标系右侧按钮 → 选择投影坐标系 (推荐UTM分区,如中国东部用`WGS_1984_UTM_Zone_50N`)[^1] 3. **关键参数设置** ```markdown - 重采样方法:BILINEAR(双线性插值) - 输出像元大小:直接输入`10`或`30`(单位自动变为米)[^1] ``` ![投影转换界面](https://example.com/projection_tool.png) --- #### **步骤2:重采样(精度优化)** > *注:若投影后分辨率未精确达到10m/30m(因投影变形),需额外重采样* 1. **打开重采样工具** - 路径:`ArcToolbox → 栅格处理 → 重采样` - 输入栅格:投影后的DEM(如`DEM_Projected.tif`) 2. **参数配置** ```markdown - 输出像元大小:X=10, Y=10(或30) - 重采样方法:BILINEAR(连续高程数据适用) - 输出位置:指定保存路径 ``` 3. **环境设置(对齐关键)** - 点击【环境】→ 展开【处理范围】: - 设置**捕捉栅格**:选择同一投影坐标系下的参考栅格 - 设置**范围**:与捕捉栅格相同[^1] ![环境设置](https://example.com/snap_raster.png) --- ### **关键注意事项** 1. **坐标系选择原则** - UTM分区选择:根据经度确定带号(公式:$ \text{带号} = \left\lfloor \frac{\text{经度} + 180}{6} \right\rfloor + 1 $)[^1] - 中国地区常用:`UTM Zone 49N-54N` 2. **分辨率偏差处理** - 投影后像元可能非精确10m(如9.97m),这是因**地图投影变形**导致 - 解决方案:通过重采样+捕捉栅格强制对齐到标准10m网格[^1] 3. **错误操作示例** ```markdown # 错误:直接对地理坐标系设置米制分辨率 输入:GCS_WGS_1984的DEM 重采样参数:像元大小=10 → 实际被解释为10度(约111km!) ``` --- ### **技术原理** 地理坐标系(度)与投影坐标系(米)的转换关系: $$ \text{米制分辨率} = \frac{\text{经度差} \times R \times \cos(\phi) \times \pi}{180} $$ 其中: - $R$ = 地球半径(6378137m) - $\phi$ = 纬度[^4] > *因此直接转换会导致分辨率随纬度变化,必须通过投影坐标系标准化* --- ### **相关问题** 1. **如何确定数据所在的UTM带号?** 2. **投影转换后出现边缘变形如何修复?** 3. **双线性插值与最邻近法对DEM精度的影响差异?** 4. **如何批量处理多个DEM文件的重采样?** [^1]: 地理坐标系需投影转换至投影坐标系(如UTM)才能以米为单位设置像元大小[^1]。 [^2]: 重采样时需设置捕捉栅格确保像元对齐[^1]。 [^3]: 示例数据展示了GCS_WGS_1984坐标系的DEM数据[^3]。 [^4]: 地理坐标系单位是度,需通过投影转换实现米制分辨率[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值