python 读取geotiff_从GeoTIFF文件中获取经度和纬度
要获取地理学家角的坐标, 请按照以下步骤操作:
from osgeo import gdal
ds = gdal.Open('path/to/file')
width = ds.RasterXSize
height = ds.RasterYSize
gt = ds.GetGeoTransform()
minx = gt[0]
miny = gt[3] + width*gt[4] + height*gt[5]
maxx = gt[0] + width*gt[1] + height*gt[2]
maxy = gt[3]
但是, 它们可能不是纬度/经度格式。正如贾斯汀指出的那样, 您的Geotiff将存储在某种坐标系中。如果您不知道坐标系是什么, 可以通过运行
gdalinfo
来找出:
gdalinfo ~/somedir/somefile.tif
输出是什么:
Driver: GTiff/GeoTIFF
Size is 512, 512
Coordinate System is:
PROJCS["NAD27 / UTM zone 11N",
GEOGCS["NAD27",
DATUM["North_American_Datum_1927",
SPHEROID["Clarke 1866",6378206.4,294.978698213901]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",-117],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",0],
UNIT["metre",1]]
Origin = (440720.000000,3751320.000000)
Pixel Size = (60.000000,-60.000000)
Corner Coordinates:
Upper Left ( 440720.000, 3751320.000) (117d38'28.21"W, 33d54'8.47"N)
Lower Left ( 440720.000, 3720600.000) (117d38'20.79"W, 33d37'31.04"N)
Upper Right ( 471440.000, 3751320.000) (117d18'32.07"W, 33d54'13.08"N)
Lower Right ( 471440.000, 3720600.000) (117d18'28.50"W, 33d37'35.61"N)
Center ( 456080.000, 3735960.000) (117d28'27.39"W, 33d45'52.46"N)
Band 1 Block=512x16 Type=Byte, ColorInterp=Gray
此输出可能是您需要的。但是, 如果要使用Python进行编程操作, 将获得相同的信息。
如上例所示, 如果坐标系为
PROJCS
, 则您正在处理投影坐标系。投影坐标系是球形地球表面的
表示形式, 但它是平坦的并且在
平面上变形。如果需要纬度和经度, 则需要将坐标转换为正确的地理坐标系。
不幸的是, 并非所有纬度/经度对都是相同的, 因为它们基于不同的球形地球模型。在此示例中, 我将转换为
WGS84
, 这是GPS中首选的地理坐标系, 并且被所有流行的地图站点使用。坐标系由定义明确的字符串定义。该目录可以从
空间参考
获得, 例如, 请参见
WGS84
。
from osgeo import osr, gdal
# get the existing coordinate system
ds = gdal.Open('path/to/file')
old_cs= osr.SpatialReference()
old_cs.ImportFromWkt(ds.GetProjectionRef())
# create the new coordinate system
wgs84_wkt = """
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]]"""
new_cs = osr.SpatialReference()
new_cs .ImportFromWkt(wgs84_wkt)
# create a transform object to convert between coordinate systems
transform = osr.CoordinateTransformation(old_cs,new_cs)
#get the point to transform, pixel (0,0) in this case
width = ds.RasterXSize
height = ds.RasterYSize
gt = ds.GetGeoTransform()
minx = gt[0]
miny = gt[3] + width*gt[4] + height*gt[5]
#get the coordinates in lat long
latlong = transform.TransformPoint(minx,miny)
希望这可以满足您的需求。
python 读取geotiff_从GeoTIFF文件中获取经度和纬度相关推荐
- python读取日期_从文件中读取日期和数据(Python)
我想从文件中读取时间字符串和数据,但是当我使用loadtxt时,我不能同时读取字符串和数字,因为字符串不是浮点型的.所以我尝试使用genfromtxt并使用delimiter=[]+[]+[]作为我所 ...
- java生成读取csv,从csv文件中获取Gatling
加特林与馈线有很好的联系 . 当您提供错误的文件名或馈送文件的路径时,您将收到以下错误(java.lang.IllegalArgumentException:找不到馈送器文件) . 请注意,测试不会运 ...
- Python之一个关于天气的csv文件中获取最高和最低气温的图表
Python之一个关于天气的csv文件中获取最高和最低气温的图表 科普: csv: 简单的说:以逗号分隔的值(CSV)将数据写入文件中,这样的文件称为CSV文件 说明: 博主这里主要是学习一下csv文 ...
- java opencv 读取视频_java使用OpenCV从视频文件中获取帧
本文实例为大家分享了java使用OpenCV从视频文件中获取帧的具体代码,供大家参考,具体内容如下 实现功能:使用Java获取mp4.mov.avi等视频文件中的图像帧,每秒获取一帧图像,并保存 环境 ...
- python读取日志统计ip_使用python脚本实现统计日志文件中的ip访问次数
使用python脚本实现统计日志文件中的ip访问次数,注意此脚本只适用ip在每行开头的日志文件,需要的朋友可以参考下 适用的日志格式: 106.45.185.214 - - [06/Aug/2014: ...
- 从Dicom的xml文件中获取结节坐标并生成mask
使用数据集:LIDC 代码作用:从xml文件中获取结节坐标并生成mask 备注:没有学过python,都是边写边查,有的地方可能看起来不简洁,请自行优化 21-05-13 Debug 在我训练完Une ...
- python文本筛选_使用python对多个txt文件中的数据进行筛选的方法
使用python对多个txt文件中的数据进行筛选的方法 一.问题描述 筛选出多个txt文件中需要的数据 二.数据准备 这是我自己建立的要处理的文件,里面是随意写的一些数字和字母 三.程序编写 impo ...
- OC从plist文件中获取数据
怎样从plist文件中读取数据,这个和反归档相似,但是也存在着区别,比如说不用解码,当然一般我们获取的数据往往是对一个对象的描述,而且数据的个数也不是一个,因此我们有必要来说一下怎样完整的从plist ...
- 使用Python读取LabVIEW TDMS 格式文件转成Excel格式+多进程版本
使用Python读取LabVIEW TDMS 格式文件转成Excel格式+多进程版本 文章目录 使用Python读取LabVIEW TDMS 格式文件转成Excel格式+多进程版本 前言: 背景 tm ...
- Python读取.dat后缀名文件
Python读取.dat后缀名文件 .dat文件基本上是没有任何头的二进制文件.对于每个样本,它由(256,256,3)个uint8图像,(64,64,1)uint8深度图和1个uint8标签组成.T ...
最新文章
- Android Textview 一行居中 两行居左
- java 反射内部匿名内部类_android-反射的使用(反射静态内部类、非静态内部类、匿名内部类等)...
- C# 8 新提案让泛型 Attribute 成为现实
- memset()、memcpy()、memcmp()的使用方法
- 03-21 webview 性能分析
- oralce 存储过程、函数和触发器
- mysql_数据查询_单表查询
- html中滚动条属性设置
- 随笔小杂记(四)——将语义分割标签转换为指定像素值
- Windows镜像文件下载速度太慢?告诉你个小妙招
- modbus主机、从机、虚拟串口调试软件
- html发短信模版,短信模板管理.html
- 关于苹果开发者证书的续费问题改动2021
- CSS 特殊性(Specificity)
- 关于MAXIMO数据限制代码的理解
- 知识点 - 线性丢番图方程 Linear Diophantine Equations
- 包你笑,笑话之三 超强情侣对话
- 数学和算法之---排列组合
- android颜体_颜体楷书结构的四大特征与特点
- startactivity后App出现闪退问题情况分析
热门文章
- 就晚间宿舍熄灯时间调查
- python 序列类型是二维元素向量,测验6: 组合数据类型 (第6周)
- 调和平均数的几何意义
- python爬取淘宝数据魔方_读《淘宝数据魔方技术架构解析》有感
- jd-gui反编译中文乱码
- 干货!假新闻检测:观察新闻本身,更要观察它所在的新闻环境
- tempo jsnode扩展 3d图形支持。
- Win10完美运行红色警戒2的安装包和补丁
- MATLAB突然打不开,窗口闪一下就退了,一种亲试解决方法:
- 时间复杂度o(1), o(n), o(logn), o(nlogn)