题记: 写该博客是因为自己经常遇到这个问题,而我发现网络上关于这方面浏览量高的一些代码竟然都有误,每次照搬都被虐得很惨。有一些同志在某些博客下方留言说代码有问题,而博主没有回应,也没有更改错误。为了自己及他人以后的方便,故于此附上我反复验证后的代码,并分享一下我解决这个问题时的一些经验。

摘要:(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 图像坐标,投影坐标,经纬度坐标 三者映射及运行错误解决 - 吴妍潼的博文...相关推荐

  1. python运行报错无法映射_科学网-Python GDAL 图像坐标,投影坐标,经纬度坐标 三者映射及运行错误解决-吴妍潼的博文...

    题记: 写该博客是因为自己经常遇到这个问题,而我发现网络上关于这方面浏览量高的一些代码竟然都有误,每次照搬都被虐得很惨.有一些同志在某些博客下方留言说代码有问题,而博主没有回应,也没有更改错误.为了自 ...

  2. python序列_科学网—Python:序列(字符串、列表、元组)和序列函数 - 刘洋洋的博文...

    Python中的序列,包括字符串(String).列表(List).元组(Tuple). 序列的索引 通过索引(index)访问及获得的序列的一个或多个元素,也叫切片. 正序: 0 到 N-1 倒序: ...

  3. python 网络_科学网-python 社会网络分析工具之networkx-郗强的博文

    1.networkx 2.igraph 3.SNAP 1.networkx NetworkX是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网 ...

  4. 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 ...

  5. 【精准三点定位求解汇总】利用Python或JavaScript高德地图开放平台实现精准三点定位(经纬度坐标与平面坐标转换法求解、几何绘图法求解)

    [精准三点定位求解汇总]利用Python或JavaScript高德地图开放平台实现精准三点定位(经纬度坐标与平面坐标转换法求解.几何绘图法求解) 众所周知,如果已知三个点的坐标,到一个未知点的距离,则 ...

  6. python 读取geotiff_科学网—利用python GDAL库读写geotiff格式的遥感影像方法 - 张伟的博文...

    (1)利用python GDAL库读写geotiff格式的遥感影像方法,具有很好的参考价值,不错! from osgeo import gdal import numpy as np def read ...

  7. python 面板数据分析_科学网—Python中的结构化数据分析利器-Pandas简介 - 郑俊娟的博文...

    此文转载于XXXXXX处... Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数 ...

  8. python对数运算符号_科学网—Python中算数运算符之注意及np.logspace - 张伟的博文...

    (一)算数运算符 数字2 是一个整数的例子. 长整数 不过是大一些的整数. 3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3 * 10-4. (-5+4j ...

  9. python shell背景颜色改变_科学网—Python Shell Background Color - 李旭的博文

    ArcGIS在安装时就已经默认在本机安装了Python.可是,Python Shell的界面看起来太亮了,对眼睛不太好啊,如图1. 图1 在网上搜索一番,之前也有和我同样问题的帖子,不过,时间有点久了 ...

最新文章

  1. 【Qt】错误处理:error: undefined reference to `qMain(int, char**)‘
  2. 近朱者赤,近墨者还是赤
  3. Python属性访问拦截器的用法
  4. [开源]FreeSCADA的通道数据与控件属性关联以及自动刷新机制研究
  5. 王道 —— 操作系统的概念(定义)、功能和目标
  6. 每日一测5(关于继承)
  7. antd pro中如何使用mock数据以及调用接口
  8. hdu 2117(小数点后m位)
  9. 实测解决:Initialization failed for ‘httpsstart.spring.io‘ Please check URL, network and proxy settings
  10. java static关键字_Java基础:static关键字作用总结
  11. java 接收前台富文本_前后端分离ueditor富文本编辑器的使用-Java版本
  12. c语言程序设计abcd拍大小,《C语言程序设计》选择、填空。热门考题
  13. 第六周--------职业规划------正确的选择让你少奋斗十年
  14. Python运行Google App Engineer时出现的UnicodeDecodeError错误解决方案
  15. python两个列表匹配_Python:检查两个列表之间的字符串是否部分匹配
  16. 深测「小度人工智能音箱1S」:加冕的红外控制术,和掀起的一场智能大进化...
  17. Anaconda 安装python时出错:Collecting package metadata (current_repodata.json): failed
  18. Microbiome:鸡肠道微生物宏基因集的构建(张和平、魏泓、秦楠点评)
  19. 小丁带你走进git世界一-git简单配置
  20. 永久免费 内网穿透工具 傻瓜式配置

热门文章

  1. 编程珠玑--位图法排序
  2. python 画八角形步骤_小白艰难的Python图像的绘制
  3. IOS开发入门之五——storyboard的使用(上)
  4. 关于App端使用微软云的一点笔记
  5. oracle ora-00911
  6. 销售管理系统设计(c语言实现)
  7. mariaDB 查看查询日志
  8. 病毒和战争齐飞,24 届秋招会更惨吗?
  9. java native 修饰符_java 修饰符总结
  10. vue钩子函数mounted,页面回退时不执行