python dataset[trans_科学网—Python GDAL 图像坐标,投影坐标,经纬度坐标 三者映射及运行错误解决 - 吴妍潼的博文...
题记: 写该博客是因为自己经常遇到这个问题,而我发现网络上关于这方面浏览量高的一些代码竟然都有误,每次照搬都被虐得很惨。有一些同志在某些博客下方留言说代码有问题,而博主没有回应,也没有更改错误。为了自己及他人以后的方便,故于此附上我反复验证后的代码,并分享一下我解决这个问题时的一些经验。
摘要:(1)图像坐标——投影坐标——经纬度坐标 的映射代码
(2)经纬度坐标——投影坐标——图像坐标 的映射代码
(3)运行出现NotImplementedError: Wrong number or type of arguments for overloaded
function 'CoordinateTransformation_TransformPoint'. 错误的解决办法。
正文:(1)图像坐标——投影坐标——经纬度坐标
Tiles_file='S2A_MSIL1C_20170309T031621_N0204_R075_T50SLG_20170309T031619.tif'
dataset = gdal.Open(Tiles_file) # 读入影像文件
nXSize,nYSize=dataset.RasterXSize,dataset.RasterYSize # 影像列数,行数
trans = dataset.GetGeoTransform()
prosrs = osr.SpatialReference()
prosrs.ImportFromWkt(dataset.GetProjection())
geosrs = prosrs.CloneGeogCS()
col=0 # 【图像坐标】像素所在列
row=0 # 【图像坐标】像素所在行
px = trans[0] + col * trans[1] + row * trans[2] # 299980.0 该点在经度方向的【投影坐标】
py = trans[3] + col * trans[4] + row * trans[5] # 4090220.0 该点在纬度方向的【投影坐标】
ct = osr.CoordinateTransformation(prosrs, geosrs) # 表示从投影坐标系映射到地理坐标系
coords = ct.TransformPoint(px, py)
lat=coords [0] # 【经纬度坐标】纬度
lon=coords [1] # 【经纬度坐标】经度
补充说明:
1. 如果你想要得到左上角像素的中心坐标,你需要设置 col,row=0.5,0.5
下面附上该影像的四至点坐标:
col,row=0,0 #299980.0 4200010.0 左上 像素左上角点 # (37.92566740942532, 114.7242415990631)
col,row=nXSize-1,nYSize-1 #409790.0 4090220.0 右下像素左上角点 # (36.953738446008366, 115.98676016473146)
col,row=nXSize-1,0 #409790.0 4200010.0 右上像素左上角点 # (37.94320029660642, 115.97332489462718)
col,row=0,nYSize-1 #299980.0 4090220.0 左下像素左上角点 # (36.936817812938365, 114.75399815989871)
2. 关于trans = dataset.GetGeoTransform() 的介绍
trans 是一个Tuple类型的变量包含6个元素,[trans[0],trans[3]] 是影像左上角像素的左上角点坐标,前者为经度方向的投影坐标,后者为纬度方向的投影坐标 trans[1] 表示像素宽度 ,trans[5] 表示像素高度
3. 关于coords = ct.TransformPoint(px, py) 的介绍
coords 是一个Tuple类型的变量包含3个元素,coords [0]为纬度,coords [1]为经度,coords [2]为高度
(2)经纬度坐标——投影坐标——图像坐标
ct2 = osr.CoordinateTransformation(geosrs, prosrs) # 表示从地理坐标系投映射到影坐标系
coords = ct2.TransformPoint(36.936817812938365, 114.75399815989871) # 【经纬度坐标】
Pro_lon=coords [0] # 【投影坐标】经度方向
Pro_lat=coords [1] # 【投影坐标】纬度方向
trans = dataset.GetGeoTransform()
col_id = int((Pro_lon - trans[0]) / trans[1]+0.000000001) # 【图像坐标】列方向 +0.000000001为了填补浮点数计算误差
row_id = int((trans[3] - Pro_lat ) / -trans[5]+0.000000001) #【图像坐标】行方向 -trans[5] 为正数
(3) 出现如下错误的解决方法
NotImplementedError: Wrong number or type of arguments for overloaded function'CoordinateTransformation_TransformPoint'.
Possible C/C++ prototypes are:
OSRCoordinateTransformationShadow:TransformPoint(double [3])
OSRCoordinateTransformationShadow::TransformPoint(double [4])
OSRCoordinateTransformationShadow::TransformPoint(double [3],double,double,double)
OSRCoordinateTransformationShadow::TransformPoint(double [4],double,double,double,double)
输出的果然是空字符串' '。
我最终的解决办法是:首先卸载gdal ,pip uninstall gdal(site-pakage 下若有同名残留文件,且删除)
GDAL‑3.0.4‑cp36‑cp36m‑win_amd64.whl 表示指出python3.6, window 64位系统
该文件下载很慢,如有需要发QQ邮件给我552569054@qq.com 最后,pip install GDAL‑3.0.4‑cp36‑cp36m‑win_amd64.whl
结语:如有错误,欢迎大家在下方留言并发邮件提醒我,谢谢。
转载本文请联系原作者获取授权,同时请注明本文来自吴妍潼科学网博客。
链接地址:http://blog.sciencenet.cn/blog-2991632-1223505.html
上一篇:MODIS LAI 产品关于时间的命名规则及合成法则
python dataset[trans_科学网—Python GDAL 图像坐标,投影坐标,经纬度坐标 三者映射及运行错误解决 - 吴妍潼的博文...相关推荐
- python运行报错无法映射_科学网-Python GDAL 图像坐标,投影坐标,经纬度坐标 三者映射及运行错误解决-吴妍潼的博文...
题记: 写该博客是因为自己经常遇到这个问题,而我发现网络上关于这方面浏览量高的一些代码竟然都有误,每次照搬都被虐得很惨.有一些同志在某些博客下方留言说代码有问题,而博主没有回应,也没有更改错误.为了自 ...
- python序列_科学网—Python:序列(字符串、列表、元组)和序列函数 - 刘洋洋的博文...
Python中的序列,包括字符串(String).列表(List).元组(Tuple). 序列的索引 通过索引(index)访问及获得的序列的一个或多个元素,也叫切片. 正序: 0 到 N-1 倒序: ...
- python 网络_科学网-python 社会网络分析工具之networkx-郗强的博文
1.networkx 2.igraph 3.SNAP 1.networkx NetworkX是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网 ...
- python axis 1_科学网—Python初学之解读MDFA模块(2):解读 def rwalk(X, axis=-1) - 刘磊的博文...
初稿:2018-10-19 转载请注明:科研菜鸟:http://blog.sciencenet.cn/home.php?mod=spacecp&ac=blog Multifractal Det ...
- 【精准三点定位求解汇总】利用Python或JavaScript高德地图开放平台实现精准三点定位(经纬度坐标与平面坐标转换法求解、几何绘图法求解)
[精准三点定位求解汇总]利用Python或JavaScript高德地图开放平台实现精准三点定位(经纬度坐标与平面坐标转换法求解.几何绘图法求解) 众所周知,如果已知三个点的坐标,到一个未知点的距离,则 ...
- python 读取geotiff_科学网—利用python GDAL库读写geotiff格式的遥感影像方法 - 张伟的博文...
(1)利用python GDAL库读写geotiff格式的遥感影像方法,具有很好的参考价值,不错! from osgeo import gdal import numpy as np def read ...
- python 面板数据分析_科学网—Python中的结构化数据分析利器-Pandas简介 - 郑俊娟的博文...
此文转载于XXXXXX处... Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数 ...
- python对数运算符号_科学网—Python中算数运算符之注意及np.logspace - 张伟的博文...
(一)算数运算符 数字2 是一个整数的例子. 长整数 不过是大一些的整数. 3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3 * 10-4. (-5+4j ...
- python shell背景颜色改变_科学网—Python Shell Background Color - 李旭的博文
ArcGIS在安装时就已经默认在本机安装了Python.可是,Python Shell的界面看起来太亮了,对眼睛不太好啊,如图1. 图1 在网上搜索一番,之前也有和我同样问题的帖子,不过,时间有点久了 ...
最新文章
- 【Qt】错误处理:error: undefined reference to `qMain(int, char**)‘
- 近朱者赤,近墨者还是赤
- Python属性访问拦截器的用法
- [开源]FreeSCADA的通道数据与控件属性关联以及自动刷新机制研究
- 王道 —— 操作系统的概念(定义)、功能和目标
- 每日一测5(关于继承)
- antd pro中如何使用mock数据以及调用接口
- hdu 2117(小数点后m位)
- 实测解决:Initialization failed for ‘httpsstart.spring.io‘ Please check URL, network and proxy settings
- java static关键字_Java基础:static关键字作用总结
- java 接收前台富文本_前后端分离ueditor富文本编辑器的使用-Java版本
- c语言程序设计abcd拍大小,《C语言程序设计》选择、填空。热门考题
- 第六周--------职业规划------正确的选择让你少奋斗十年
- Python运行Google App Engineer时出现的UnicodeDecodeError错误解决方案
- python两个列表匹配_Python:检查两个列表之间的字符串是否部分匹配
- 深测「小度人工智能音箱1S」:加冕的红外控制术,和掀起的一场智能大进化...
- Anaconda 安装python时出错:Collecting package metadata (current_repodata.json): failed
- Microbiome:鸡肠道微生物宏基因集的构建(张和平、魏泓、秦楠点评)
- 小丁带你走进git世界一-git简单配置
- 永久免费 内网穿透工具 傻瓜式配置