要获取地理学家角的坐标, 请按照以下步骤操作:

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文件中获取经度和纬度相关推荐

  1. python读取日期_从文件中读取日期和数据(Python)

    我想从文件中读取时间字符串和数据,但是当我使用loadtxt时,我不能同时读取字符串和数字,因为字符串不是浮点型的.所以我尝试使用genfromtxt并使用delimiter=[]+[]+[]作为我所 ...

  2. java生成读取csv,从csv文件中获取Gatling

    加特林与馈线有很好的联系 . 当您提供错误的文件名或馈送文件的路径时,您将收到以下错误(java.lang.IllegalArgumentException:找不到馈送器文件) . 请注意,测试不会运 ...

  3. Python之一个关于天气的csv文件中获取最高和最低气温的图表

    Python之一个关于天气的csv文件中获取最高和最低气温的图表 科普: csv: 简单的说:以逗号分隔的值(CSV)将数据写入文件中,这样的文件称为CSV文件 说明: 博主这里主要是学习一下csv文 ...

  4. java opencv 读取视频_java使用OpenCV从视频文件中获取帧

    本文实例为大家分享了java使用OpenCV从视频文件中获取帧的具体代码,供大家参考,具体内容如下 实现功能:使用Java获取mp4.mov.avi等视频文件中的图像帧,每秒获取一帧图像,并保存 环境 ...

  5. python读取日志统计ip_使用python脚本实现统计日志文件中的ip访问次数

    使用python脚本实现统计日志文件中的ip访问次数,注意此脚本只适用ip在每行开头的日志文件,需要的朋友可以参考下 适用的日志格式: 106.45.185.214 - - [06/Aug/2014: ...

  6. 从Dicom的xml文件中获取结节坐标并生成mask

    使用数据集:LIDC 代码作用:从xml文件中获取结节坐标并生成mask 备注:没有学过python,都是边写边查,有的地方可能看起来不简洁,请自行优化 21-05-13 Debug 在我训练完Une ...

  7. python文本筛选_使用python对多个txt文件中的数据进行筛选的方法

    使用python对多个txt文件中的数据进行筛选的方法 一.问题描述 筛选出多个txt文件中需要的数据 二.数据准备 这是我自己建立的要处理的文件,里面是随意写的一些数字和字母 三.程序编写 impo ...

  8. OC从plist文件中获取数据

    怎样从plist文件中读取数据,这个和反归档相似,但是也存在着区别,比如说不用解码,当然一般我们获取的数据往往是对一个对象的描述,而且数据的个数也不是一个,因此我们有必要来说一下怎样完整的从plist ...

  9. 使用Python读取LabVIEW TDMS 格式文件转成Excel格式+多进程版本

    使用Python读取LabVIEW TDMS 格式文件转成Excel格式+多进程版本 文章目录 使用Python读取LabVIEW TDMS 格式文件转成Excel格式+多进程版本 前言: 背景 tm ...

  10. Python读取.dat后缀名文件

    Python读取.dat后缀名文件 .dat文件基本上是没有任何头的二进制文件.对于每个样本,它由(256,256,3)个uint8图像,(64,64,1)uint8深度图和1个uint8标签组成.T ...

最新文章

  1. Android Textview 一行居中 两行居左
  2. java 反射内部匿名内部类_android-反射的使用(反射静态内部类、非静态内部类、匿名内部类等)...
  3. C# 8 新提案让泛型 Attribute 成为现实
  4. memset()、memcpy()、memcmp()的使用方法
  5. 03-21 webview 性能分析
  6. oralce 存储过程、函数和触发器
  7. mysql_数据查询_单表查询
  8. html中滚动条属性设置
  9. 随笔小杂记(四)——将语义分割标签转换为指定像素值
  10. Windows镜像文件下载速度太慢?告诉你个小妙招
  11. modbus主机、从机、虚拟串口调试软件
  12. html发短信模版,短信模板管理.html
  13. 关于苹果开发者证书的续费问题改动2021
  14. CSS 特殊性(Specificity)
  15. 关于MAXIMO数据限制代码的理解
  16. 知识点 - 线性丢番图方程 Linear Diophantine Equations
  17. 包你笑,笑话之三 超强情侣对话
  18. 数学和算法之---排列组合
  19. android颜体_颜体楷书结构的四大特征与特点
  20. startactivity后App出现闪退问题情况分析

热门文章

  1. 就晚间宿舍熄灯时间调查
  2. python 序列类型是二维元素向量,测验6: 组合数据类型 (第6周)
  3. 调和平均数的几何意义
  4. python爬取淘宝数据魔方_读《淘宝数据魔方技术架构解析》有感
  5. jd-gui反编译中文乱码
  6. 干货!假新闻检测:观察新闻本身,更要观察它所在的新闻环境
  7. tempo jsnode扩展 3d图形支持。
  8. Win10完美运行红色警戒2的安装包和补丁
  9. MATLAB突然打不开,窗口闪一下就退了,一种亲试解决方法:
  10. 时间复杂度o(1), o(n), o(logn), o(nlogn)