python将tif从wgs84转gcj02

news/2024/10/17 23:31:58/
# mark: 主要是dem从wgs84转成gcj02,步骤为wgs84的4326转成3857,之后投影进行偏移,再将偏移后的3857转成4326from osgeo import gdal, osr# 经纬度转投影
def tif4326To3857(input_file, output_file):options = gdal.WarpOptions(format='GTiff', srcSRS='EPSG:4326', dstSRS='EPSG:3857', width=1452)gdal.Warp(output_file, input_file, options=options)print('转换完成')# 投影转经纬度
def tif3857To4326(input_file, output_file):options = gdal.WarpOptions(format='GTiff', srcSRS='EPSG:3857', dstSRS='EPSG:4326', width=1452)gdal.Warp(output_file, input_file, options=options)print('转换完成')# wgs84投影偏移至gcj02
def tifWgs84ToGcj02(input_file, output_file):dataset = gdal.Open(input_file)im_width = dataset.RasterXSize #栅格矩阵的列数im_height = dataset.RasterYSize  # 栅格矩阵的列数im_array = dataset.GetRasterBand(1).ReadAsArray()im_projection = dataset.GetProjection()im_GeoTransform = dataset.GetGeoTransform()im_GeoTransform_new = (im_GeoTransform[0]+740.4591671, im_GeoTransform[1], im_GeoTransform[2], im_GeoTransform[3]+24.60901496, im_GeoTransform[4], im_GeoTransform[5])# 创建新的tif文件driver = gdal.GetDriverByName('GTiff')out_tif = driver.Create(output_file, im_width, im_height, 1, gdal.GDT_Float32)out_tif.SetGeoTransform(im_GeoTransform_new)out_tif.SetProjection(im_projection)  # 给新建图层赋予投影信息# # 获取地理坐标系统信息,用于选取需要的地理坐标系统# srs = osr.SpatialReference()# # 导入tif文件的坐标系# srs.ImportFromEPSG(3857)  # 定义输出的坐标系为"WGS 84",AUTHORITY["EPSG","4326"]# out_tif.SetProjection(srs.ExportToWkt())  # 给新建图层赋予投影信息# 数据写出out_tif.GetRasterBand(1).WriteArray(im_array)  # 将数据写入内存,此时没有写入硬盘out_tif.FlushCache()  # 将数据写入硬盘out_tif = None  # 注意必须关闭tif文件print('偏移完成')if __name__ == '__main__':file1 = 'C:\\Users\\ZJZN\\Desktop\\tiff\\4326.tif'file2 = 'C:\\Users\\ZJZN\\Desktop\\tiff\\3857.tiff'file3 = 'C:\\Users\\ZJZN\\Desktop\\tiff\\3857-gcj02.tiff'file4 = 'C:\\Users\\ZJZN\\Desktop\\tiff\\4326-gcj02.tiff'tif4326To3857(file1, file2)tifWgs84ToGcj02(file2, file3)tif3857To4326(file3, file4)

tif4326To3857(file1, file2) 是将wgs84的经纬度转成投影
tifWgs84ToGcj02(file2, file3) 是将投影的进行偏移
tif3857To4326(file3, file4) 再将偏移后的投影转成经纬度

注意:im_GeoTransform_new 中的偏移量是各地根据实际计算得到的。

gcj02-3857投影wgs84-3857投影差值
x12587949.1312587208.67740.4591671
y4337622.2524337597.64324.60901496

http://www.ppmy.cn/news/386827.html

相关文章

【软件分析/静态分析】chapter3 课程03/04 数据流分析的应用(Data Flow Analysis)

🔗 课程链接:李樾老师和谭天老师的:南京大学《软件分析》课程03(Data Flow Analysis I)_哔哩哔哩_bilibili 南京大学《软件分析》课程04(Data Flow Analysis II)_哔哩哔哩_bilibili 这篇文章总结…

MySQL如何保证数据的可靠性(保证数据不丢失)

1. 结论: 只要redo log 和 binlog 保证持久化到磁盘,就能确保MySQL异常重启后,数据可以恢复。 2. 机制 WAL机制,(Write Ahead Log): 事务先写入日志,后持久化到磁盘。 3. binlog…

【MySql】基本查询

文章目录 插入操作insert查询操作selectselect查询where条件判断order by排序limit筛选分页结果 更新操作update删除操作delete插入查询结果 CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) 先创建提供一张表&am…

次时代的终端产品

看到一位领导报告,其中一些文字觉得总结十分到位,在此做一下记录。 工业革命下的产品,每一个时代都有这个时代进入千家万户的终端产品。 第一次工业革命是机械化,当时进入千家万户的,是200多年前开始出现的自行车、缝纫…

黑客松必备|Bear Necessities Hackathon Office Hours汇总

由Moonbeam和AWS Startups联合主办的Bear Necessities Hackathon黑客松启动仪式已于5月30日举行。本次黑客松将历时约1个月的时间,包含6个挑战,分别由Moonbeam基金会、Chainlink、StellaSwap、SubQuery、Biconomy提供赞助,总奖池超过5万美金。…

全球限量1000台!京东联手格力首推全AI定制冰箱 618开售

又是一年京东店庆月。每年618京东都会玩一些新花样,为各位剁手党提供价格优惠、品质优良的好产品。今年京东与“家电一姐”格力强强联合,推出了定制款“格力晶弘303升变频风冷多门冰箱”。它不仅是业界首款全部由人工智能(AI)进行…

【后端面经-数据库】MySQL的事务隔离级别简介

【后端面经-数据库】MySQL的事务隔离级别简介 0. 事务的概念1. 三类问题2. 事务隔离级别3. 操作指令4. 总结5. 参考博文 0. 事务的概念 事务指的是一连串的集中操作指令,一个事务的执行必须执行完所有的动作才能算作执行结束。事务具有四个特点,简记作A…

【力扣 】查找所有至少连续出现三次的数字/求连续登录3天的用户数(SQL完成)

0. 题目 编写一个 SQL 查询,查找所有至少连续出现三次的数字。 返回的结果表中的数据可以按 任意顺序 排列。 输入: Logs 表: —---- | Id | Num | —---- | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | 2 | | 5 | 1 | | 6 | 2 | | 7 | 2 | —---- …