- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个光栅文件和一个 WGS84 纬度/经度点。
我想知道栅格中的什么值与该点相对应。
我的感觉是,我应该在栅格对象或其波段之一上使用 GetSpatialRef()
,然后将 ogr.osr.CooperativeTransformation()
应用于该点将其映射到栅格空间。
我的希望是我可以简单地询问光栅的波段此时是什么。
但是,栅格对象似乎没有 GetSpatialRef()
或访问地理定位点的方法,因此我有点不知道如何执行此操作。
有什么想法吗?
最佳答案
假设我有一个 geotiff 文件 test.tif。然后下面的代码应该在像素附近查找值。我对查找单元格的部分不太有信心,并且会修复错误。此页面应该有帮助,"GDAL Data Model"
此外,您也可以前往gis.stackexchange.com寻找专家(如果还没有的话)。
import gdal, osr
class looker(object):
"""let you look up pixel value"""
def __init__(self, tifname='test.tif'):
"""Give name of tif file (or other raster data?)"""
# open the raster and its spatial reference
self.ds = gdal.Open(tifname)
srRaster = osr.SpatialReference(self.ds.GetProjection())
# get the WGS84 spatial reference
srPoint = osr.SpatialReference()
srPoint.ImportFromEPSG(4326) # WGS84
# coordinate transformation
self.ct = osr.CoordinateTransformation(srPoint, srRaster)
# geotranformation and its inverse
gt = self.ds.GetGeoTransform()
dev = (gt[1]*gt[5] - gt[2]*gt[4])
gtinv = ( gt[0] , gt[5]/dev, -gt[2]/dev,
gt[3], -gt[4]/dev, gt[1]/dev)
self.gt = gt
self.gtinv = gtinv
# band as array
b = self.ds.GetRasterBand(1)
self.arr = b.ReadAsArray()
def lookup(self, lon, lat):
"""look up value at lon, lat"""
# get coordinate of the raster
xgeo,ygeo,zgeo = self.ct.TransformPoint(lon, lat, 0)
# convert it to pixel/line on band
u = xgeo - self.gtinv[0]
v = ygeo - self.gtinv[3]
# FIXME this int() is probably bad idea, there should be
# half cell size thing needed
xpix = int(self.gtinv[1] * u + self.gtinv[2] * v)
ylin = int(self.gtinv[4] * u + self.gtinv[5] * v)
# look the value up
return self.arr[ylin,xpix]
# test
l = looker('test.tif')
lon,lat = -100,30
print l.lookup(lon,lat)
lat,lon =28.816944, -96.993333
print l.lookup(lon,lat)
关于python - 从 GDAL 中的栅格中提取点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13439357/
谁能帮我提供SetGeoTransform的参数?我正在使用GDAL创建栅格图层,但是找不到SetGeoTransform的第3和第5参数的描述。它应该是单元格的x和y轴的定义。我尝试找到有关here
自从 ECW(Hexagon Geospatial/Intergraph)最近发布了具有重大更改(5.0、5.1 和 5.2)的新版本以来,大多数(全部?)在线信息已经过时。 大多数指令会导致如下错误
我有一台带有 M1 芯片的 macbook,我正在尝试建立一个 django 项目。该项目与地理空间库 gdal 一起工作。我在 3.3.1_3 版和我的虚拟环境 3.3.1 版中安装了带有 Home
我有一台带有 M1 芯片的 macbook,我正在尝试建立一个 django 项目。该项目与地理空间库 gdal 一起工作。我在 3.3.1_3 版和我的虚拟环境 3.3.1 版中安装了带有 Home
我有几个 tif 格式的文件。我想将它们翻译成 ENVI 格式。我对一个文件成功了,但我想对目录中的其余文件执行此操作。 the first file in the directory is:S
我有几个 tif 格式的文件。我想将它们翻译成 ENVI 格式。我对一个文件成功了,但我想对目录中的其余文件执行此操作。 the first file in the directory is:S
我搜索了全网都没有找到指南获取gdal-config . 我有 yum 但 yum 没有 gdal-config , 我已经安装了 gdal . 我只需要能够在 shell 上执行此操作 - gdal
我有一个很大的 GeoTIFF,我想通过 GeoServer (v.2.11) 中的 WMS 进行流式传输。图像大小约为 7GB,由非常大的高分辨率 RGB 图像组成。我已经在 JVM 中留出了足
我有一个仅存在于内存中的 GDAL 数据集 (inmem_ds): In: gdal.Info(inmem_ds) Out: ('Driver: NUMPY/Numeric Python Array\
我正在尝试在基于各种 solutions 的虚拟环境中安装 GDAL在那里。 但是下载本身已经失败了: $ pip install --no-install GDAL 这是 pip.log -----
您好,我正在尝试迭代栅格数据集 (band1) 的值。我可以使用以下代码片段在 python 中完成此操作(抱歉,我无法提供原始栅格) import numpy as np import gdal p
有人知道如何使用 GDAL 更改或设置 GeoTIFF 文件的“描述”选项/标签吗? 为了说明我的意思,这是从带有设置“描述”的 GeoTIFF 文件返回的 gdalinfo 示例: Band 1
请指出我遗漏的一点: openSUSE 11.3 xx@linux-y3pi:~/Desktop/R> sudo R CMD INSTALL rgdal_0.7-12.tar.gz root's pa
在尝试安装 sf R 包,我收到错误消息: checking GDAL version >= 2.0.0... no configure: error: sf is not compatible wi
我使用 gdal 创建不同类型的图层,例如颜色浮雕和山体阴影,并使用 Mapnik 将它们组合成单个图像,以用作从单个 .hgt 文件获得的 3D dem 模型的纹理。 假设我是 gdal 新手,我在
鉴于此文件: http://mtarchive.geol.iastate.edu/2019/02/18/mrms/ncep/GaugeCorr_QPE_01H/GaugeCorr_QPE_01H_00
您好,我是Gdal的新手,正在为我的代码苦苦挣扎。在我的代码中,一切似乎进展顺利,但最后的输出区域为空。当我指定255时,无数据值设置为256,所以我真的不知道出了什么问题。谢谢任何帮助,将不胜感激!
我正在尝试构建马赛克,我依靠 NoDataValue 功能将图像的某些部分视为透明。但是,GDAL 似乎没有按预期工作。 我还使用 vrt 数据集和 gdal_translate 创建了一个非常简单的
他们的文档简单而专业。 但他们并没有过多提及这些开源项目之间的关系。 我应该什么时候使用哪一种?哪一个适合什么场景? 如果您是熟悉这些项目的GIS开发人员,您能解释一下吗? 最佳答案 基本上,GDAL
我正在使用 GDAL java API。我有一段代码可以将 SRTM (hgt)、geotiff 和 dted 文件相互转换。 在测试代码时,我成功地将示例 hgt 文件(从互联网下载,例如从此站点:
我是一名优秀的程序员,十分优秀!