本博客系转载~

from osgeo import gdal
from osgeo import osr
import numpy as npdef getSRSPair(dataset):'''获得给定数据的投影参考系和地理参考系:param dataset: GDAL地理数据:return: 投影参考系和地理参考系'''prosrs = osr.SpatialReference()prosrs.ImportFromWkt(dataset.GetProjection())geosrs = prosrs.CloneGeogCS()return prosrs, geosrsdef geo2lonlat(dataset, x, y):'''将投影坐标转为经纬度坐标(具体的投影坐标系由给定数据确定):param dataset: GDAL地理数据:param x: 投影坐标x:param y: 投影坐标y:return: 投影坐标(x, y)对应的经纬度坐标(lon, lat)'''prosrs, geosrs = getSRSPair(dataset)ct = osr.CoordinateTransformation(prosrs, geosrs)coords = ct.TransformPoint(x, y)return coords[:2]def lonlat2geo(dataset, lon, lat):'''将经纬度坐标转为投影坐标(具体的投影坐标系由给定数据确定):param dataset: GDAL地理数据:param lon: 地理坐标lon经度:param lat: 地理坐标lat纬度:return: 经纬度坐标(lon, lat)对应的投影坐标'''prosrs, geosrs = getSRSPair(dataset)ct = osr.CoordinateTransformation(geosrs, prosrs)coords = ct.TransformPoint(lon, lat)return coords[:2]def imagexy2geo(dataset, row, col):'''根据GDAL的六参数模型将影像图上坐标(行列号)转为投影坐标或地理坐标(根据具体数据的坐标系统转换):param dataset: GDAL地理数据:param row: 像素的行号:param col: 像素的列号:return: 行列号(row, col)对应的投影坐标或地理坐标(x, y)'''trans = dataset.GetGeoTransform()px = trans[0] + col * trans[1] + row * trans[2]py = trans[3] + col * trans[4] + row * trans[5]return px, pydef geo2imagexy(dataset, x, y):'''根据GDAL的六 参数模型将给定的投影或地理坐标转为影像图上坐标(行列号):param dataset: GDAL地理数据:param x: 投影或地理坐标x:param y: 投影或地理坐标y:return: 影坐标或地理坐标(x, y)对应的影像图上行列号(row, col)'''trans = dataset.GetGeoTransform()a = np.array([[trans[1], trans[2]], [trans[4], trans[5]]])b = np.array([x - trans[0], y - trans[3]])return np.linalg.solve(a, b)  # 使用numpy的linalg.solve进行二元一次方程的求解if __name__ == '__main__':gdal.AllRegister()dataset = gdal.Open(r"E:\\1207\\input\\L17.tif")print('数据投影:')print(dataset.GetProjection())print('数据的大小(行,列):')print('(%s %s)' % (dataset.RasterYSize, dataset.RasterXSize))x = 464201y = 5818760lon = 122.47242lat = 52.51778row = 2399col = 3751print('投影坐标 -> 经纬度:')coords = geo2lonlat(dataset, x, y)print('(%s, %s)->(%s, %s)' % (x, y, coords[0], coords[1]))print('经纬度 -> 投影坐标:')coords = lonlat2geo(dataset, lon, lat)print('(%s, %s)->(%s, %s)' % (lon, lat, coords[0], coords[1]))print('图上坐标 -> 投影坐标:')coords = imagexy2geo(dataset, row, col)print('(%s, %s)->(%s, %s)' % (row, col, coords[0], coords[1]))print('投影坐标 -> 图上坐标:')coords = geo2imagexy(dataset, x, y)print('(%s, %s)->(%s, %s)' % (x, y, coords[0], coords[1]))

图像坐标、地理坐标和投影坐标的相互转化(Python版)相关推荐

  1. python 地理坐标与投影坐标的转换

    1. 地理坐标(WGS84)与投影坐标(UTM)的相互转换 from pyproj import Proj# 首先定义要转换的投影坐标系 proj1 = Proj("epsg:32601&q ...

  2. ARCGIS中坐标转换及地理坐标、投影坐标的定义

    原文地址:http://blog.sina.com.cn/s/blog_663d9a1f01017cyz.html 1.动态投影(ArcMap) 所谓动态投影指,ArcMap中的Data 的空间参考或 ...

  3. ARCGIS中坐标转换及地理坐标、投影坐标的定义(转载)

    转自http://blog.sina.com.cn/s/blog_663d9a1f01017cyz.html 1.动态投影(ArcMap) 所谓动态投影指,ArcMap中的Data 的空间参考或是说坐 ...

  4. (转)ARCGIS中坐标转换及地理坐标、投影坐标的定义

    原文地址:http://blog.sina.com.cn/s/blog_663d9a1f01017cyz.html 1.动态投影(ArcMap) 所谓动态投影指,ArcMap中的Data 的空间参考或 ...

  5. python——经纬度坐标和平面投影坐标的相互转换

    美赛建模需要使用到平面坐标系去做基于时间序列的运动范围模型,所以需要对经纬度进行坐标系转换,转换到XY坐标系下.同时,在机器人的路径规划等方面依然会经常使用到坐标系的转换,所以记录一下. 文章目录 经 ...

  6. matlab地理坐标转投影坐标,如何把经纬度转化为大地坐标

    txt文件数据修改成我的数据后,替换了文件名,程序运行后出现了两个问题: 一:弹出图像框  但没有内容   图像框里是空白的,这事为什么? 二:输出的coordinate.txt文件里数据怎样处理精度 ...

  7. 【板栗糖GIS】地理坐标、投影坐标、地图投影的关系

    目录 1.投影坐标系 2. 投影 3.地理坐标系 1.投影坐标系 投影坐标系是平面坐标系,参考平面是水平面,坐标单位是米.千米等. 2. 投影 地理坐标系转换到投影坐标系的过程理解为投影,即将不规则的 ...

  8. 文本分割之水平投影法基于OpenCV(python)版实现

    对于如下一张图片,如何将文本区域分割成一行一行的了? 在文本分割领域中有一种很优秀的算法:投影法,包括水平投影法和垂直投影法.本文主要讲述水平投影法,水平投影法可以理解为一束光线从图像的左侧向右边进行 ...

  9. 学习笔记——【python】GetGeoTransform()使用,gdal截取图像,使用GDAL进行影像投影坐标、地理坐标、图上坐标的转换

    1. GetGeoTransform()使用.gdal截取图像 GetGeoTransform() GeoTransform[0],左上角横坐标(应该是投影坐标) GeoTransform[2],行旋 ...

最新文章

  1. 计算机与计算科学是属什么专业,被录取到信息与计算科学专业,这个专业什么性质,发展前景如何?...
  2. 用友U8 归纳采购退货结算三种情况
  3. java中递归的概念_【Java】基础38:什么叫递归?
  4. linux实现免密登陆
  5. mybatisPlus中的updateById无法更新null值的字段
  6. jpa mysql存储过程_Jpa调用存储过程及参数
  7. Spring IOC容器-注解的方式
  8. python - 环境搭建
  9. matlab中如何做连乘循环,如何利用for循环实现矩阵连乘
  10. EditText自定义边框和背景
  11. postman的基础使用
  12. 2018/3/27 省选模拟赛 140分
  13. 数据挖掘的9大成熟技术和应用
  14. ASP.NET MVC中的下拉框数据查询
  15. Linux系统安装Mediawiki
  16. springboot从零开始,快捷键 快捷操作
  17. 解决IIS 6.0的200KB与下载4MB的限制
  18. 抽屉作业之content部分和抽屉作业页码部分
  19. source_ids += [tokenizer.unk_token_id for x in dfg]
  20. vuetify calendar实现日历考勤

热门文章

  1. 单相电机正反转接线图_单相电机正反转接线图
  2. Java相关基础知识小总结
  3. html2canvas不识别边框,html2canvas 实现dashed虚线边框
  4. 自建es集群数据迁移同步到腾讯云
  5. 超简单!!centos 6离线源码编译安装升级gcc、binutils、automake、autoconf
  6. Nuxt.js 开发SSR(服务端渲染)Web应用
  7. 怎么关闭苹果手机自动扣费_iPhone 关闭支付宝自动扣费服务提示“无法解约”怎么办?...
  8. C++———STL(SGI版本)
  9. ps调整图片大小失真最小
  10. Java项目:JSP网上花店销售系统