解决Python利用shp进行栅格tif数据计算时出现的问题:TypeError: can‘t multiply sequence by non-int of type ‘Affine‘

问题描述:   类型错误:不能将序列乘以类型为“仿射”的非整形。

我出错的代码是在这一步利用到了rasterio这个库,进行shp的几何平面提取它的dem的均值,问题在于rasterio预计接收得是两个值,但我们shp给它传递了3个值,也就是说shp层不只是包含经纬度,它还包含了一个高度值,因此,我们的解决办法就是去掉shp的高度值,使它只包含几何的经纬度。

 解决办法:利用软件Arcmap

首先查看shp的属性表,看它是否是包含高度值的,包含高度值时,它的【shape *】属性这一列几何要素后面会加一个【ZM】,而没有包含高度值的几何要素后面不会有【ZM】

                          

 下面将Shape类型改为平面:

打开Toolbox的【数据管理工具】-【要素】-【复制要素】,

1. 在【复制要素】板块中【输入要素】选择要修改的【shp图层】;

2.在【输出要素类】中,选择处理后的shp存放路径;

3. 再点击下面的【环境...】

4. 在【环境设置】中,将【M值】部分中【输出包含M值】改为【Disabled】,同样,【Z值】部分也是这样,再点击【确定】即可。

 

                                 

 完成后,我们打开修改后的Shp图层,查看它是属性表【Shape *】这一列的几何属性是不是不包含【ZM】了呢。

 感谢相关参考:

1.TypeError: can't multiply sequence by non-int of type 'Affine' · Issue #2326 · rasterio/rasterio (github.com)

 2. 

ArcGIS之去除要素的Z值和M值 - 飞哥霸气 - 博客园 (cnblogs.com)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值