GDAL进行影像投影坐标、地理坐标、图上坐标的转换
来源:互联网 发布:xvna网络社区 编辑:程序博客网 时间:2024/05/18 00:14
参考:http://blog.csdn.net/theonegis/article/details/54427906
# -*- encoding: utf-8 -*-from osgeo import gdalfrom osgeo import osrimport 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] + row * trans[1] + col * trans[2] py = trans[3] + row * trans[4] + col * 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"F:\2016\Data\Great Khingan\DEM\Projection\strm_6102_UTM.tif") print('数据投影:') print(dataset.GetProjection()) print('数据的大小(行,列):') print('(%s %s)' % (dataset.RasterYSize, dataset.RasterXSize)) x = 464201 y = 5818760 lon = 122.47242 lat = 52.51778 row = 2399 col = 3751 print('投影坐标 -> 经纬度:') 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]))
阅读全文
0 0
- 使用GDAL进行影像投影坐标、地理坐标、图上坐标的转换
- GDAL进行影像投影坐标、地理坐标、图上坐标的转换
- 地理(投影)坐标与屏幕坐标的转换公式
- 地理(投影)坐标与屏幕坐标的转换!
- 地理(投影)坐标与屏幕坐标的转换!
- 地理(投影)坐标与屏幕坐标的转换
- 地理(投影)坐标与屏幕坐标的转换!
- ArcEngine地理坐标和投影坐标的转换
- 代码备忘录(1)影像地理坐标的获取以及坐标系之间的转换(基于GDAL)
- 地理坐标与投影坐标
- ARCGIS中坐标转换及地理坐标、投影坐标的定义
- 地理坐标与投影
- 经纬度坐标和投影坐标的转换
- 经纬度坐标和投影坐标的转换
- 地理坐标、经纬度坐标与屏幕坐标的转换!
- 由投影坐标计算地理坐标
- 由投影坐标计算地理坐标
- 坐标、投影及坐标转换
- 简单的jQuery.jqprint插件实现打印HTML页面,页面导出为PDF文件
- C++引用数组
- SimpleHTTPServer中出错信息:SocketServer doesn't handle client disconnects properly
- 对一个数组名取地址&
- mysql中的case when的应用
- GDAL进行影像投影坐标、地理坐标、图上坐标的转换
- Imblearn package study
- 矩阵基本运算
- 项目中遇到的坑以及解决办法(导师辅助工作)
- /bin/sh: /tmp/IP172.sh: 权限不够
- 面向对象程序设计上机练习六(类和对象)
- Java虚拟机类加载机制
- 设计模式之禅6
- Android自定义控件之基本原理 转载自(总李写代码)