Questions tagged «gdal»

GDAL(地理空间数据抽象库)是一个开放源代码翻译器库和一组命令行实用程序,用于处理栅格空间数据格式。作为一个库,它为所有受支持的格式向调用应用程序提供一个抽象数据模型。它还带有用于数据转换和处理的各种有用的命令行实用程序。

1
默认情况下,我应该一直使用BIGTIFF = YES吗?
我有时会为不太熟练GDAL /编程的同事写一些简短的脚本/工作说明。 为了防止脚本出现任何问题,在使用GDAL合并/转换geotiffs时,无论使用什么文件大小,我都尝试仅使用BIGTIFF = YES选项,以使意外错误不会使脚本用户感到困惑。这样做有什么弊端吗? 为什么默认情况下不启用BIGTIFF,尤其是在当今> 4 GB GeoTIFF文件非常普遍的今天?

1
PyQGIS将栅格另存为渲染图像,然后在其上使用GDAL工具
我尝试使用QGis的“将栅格保存为渲染图像”中的代码。i是栅格图层: pipelayer = i pipeextent = pipelayer.extent() pipewidth, pipeheight = (pipelayer.width(), pipelayer.height()) piperenderer = pipelayer.renderer() pipeprovider = pipelayer.dataProvider() crs = pipelayer.crs().toWkt() pipe = QgsRasterPipe() pipe.set(pipeprovider.clone()) pipe.set(piperenderer.clone()) pipedFile = os.path.join(tempfile.gettempdir(), safeLayerName + '_pipe.tif') print pipedFile file_writer = QgsRasterFileWriter(pipedFile) file_writer.writeRaster(pipe, pipewidth, pipeheight, pipeextent, pipelayer.crs()) in_raster = pipedFile prov_raster = os.path.join(tempfile.gettempdir(), 'json_' + …

1
用gdal拼接图像时能否保留褪色的alpha图层?
我正在用gdal镶嵌一些图像,并想通过朝每个图像的边缘使用淡入/渐变Alpha层来消除马赛克中间的尖锐边缘来改善最终结果。我遇到的问题是,每个带有渐变Alpha层的图像的一部分在最终的镶嵌图中都将其下方的图像掩盖了,而不是半透明的,如下所示: 理想情况下,我希望使用这种渐变透明度将一张图像逐渐淡入另一张图像。 我执行的生成镶嵌的步骤如下: 将gcps添加到原始图像以对其进行地理位置定位和正确定向(依次对每个图像进行处理): gdal_translate -of GTiff -a_srs EPSG:4326 -a_srs EPSG:4326 -gcp 1616 0 -88.2728612066 40.5175787437 -gcp <etc., etc.> <original_image_with_gradual_alpha>.tif <image_with_gradual_alpha_and_gcps>.tif 将图像扭曲到正确定向的新geotiff(依次对每个图像执行): gdalwarp -s_srs EPSG:4326 -t_srs EPSG:4326 -dstnodata 0 <image_with_gradual_alpha_and_gcps>.tif <warped_geotiff_with_alpha>.tif 将所有变形的图像合并到一个马赛克中: gdalbuildvrt -srcnodata 0 mosaic.vrt <warped_geotiff_with_alpha_root>*.tif gdal_translate mosaic.vrt mosaic.tif 我链接的图像是mosaic.tif。 gdalinfo提供样本输入文件: Driver: GTiff/GeoTIFF Files: dsc00562.tif Size is 1616, 1080 …

1
ArcGIS Raster Mosaic数据集和GDAL VRT,何时使用?
ArcGIS Desktop具有一个Raster Mosaic数据集,QGIS和朋友具有Virtual Raster Tables。 该文档的摘要显示了很多相似之处。它们都可以创建或启用位于其他位置的数据的替代表示,而无需实际创建新映像。示例包括从许多图块创建单个无缝图像而没有实际创建单个图像,或者混合匹配通道或从结果中选择性删除值范围,等等。 这种相似性延伸到多远?RMD是否启用了VRT无法实现的功能?这些是什么?用RMD无法做到的VRT有什么用? 简而言之,假设使用两个工具链都能获得平等的使用权和舒适度,那么一个人何时应该使用栅格镶嵌数据集,什么时候虚拟栅格表才是日常事务?

2
将GTiff栅格的时间序列堆栈转换为单个NetCDF
从gdal-dev邮件列表移出: 在2013年9月2日星期一晚上7:09,David Shean写道: 嗨,大家好,我正在尝试将具有相同投影/范围/分辨率的GTiff栅格时间序列打包为单个NetCDF文件进行分发。我花了一个小时来咨询在线文档,并且使用gdal_translate,gdalbuildvrt和gdalwarp都没有成功。 有使用现有的gdal命令行实用程序执行此操作的简单方法吗?在使用NetCDF Python API求助于自定义解决方案之前,我想过要问一下。 谢谢。-大卫 在2013年9月3日,星期二,上午10:15,Etienne Tourigny写道: 您想要的可能超出了gdal的范围。它将需要一些聪明的元数据管理,以便gdal_translate将它们放在一个文件中... 我建议您使用gdal_translate将它们全部转换为netcdf,然后使用python-netcdf4(而不是numpy / scipy中的那个)将它们堆叠在时间维度上。 2013年9月3日,星期二,上午7:55,“ Signell,Richard”写道: 大卫,如果您将问题发布到GIS stackexchange组 /gis//上, 我将提供示例代码,该代码应该会有所帮助。 -丰富 ==================== PDT更新9/3/13 17:04 这是我的输入数据集之一的gdalinfo输出: gdalinfo 20120901T2024_align_x+22.19_y+3.68_z+14.97_warp.tif Driver: GTiff/GeoTIFF Files: 20120901T2024_align_x+22.19_y+3.68_z+14.97_warp.tif Size is 10666, 13387 Coordinate System is: PROJCS["unnamed", GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433], AUTHORITY["EPSG","4326"]], PROJECTION["Polar_Stereographic"], …
12 python  gdal  netcdf 

3
Gdal Dataset.ReadAsArray()使Python崩溃
我正在将Python 2.6.5(32bit)与Numpy 1.3和Gdal 1.9.1安装在Windows 7 64bit上。我试图将800 MB想象(.img)栅格数据集读取到Numpy数组中,以执行某些栅格代数操作,但是一旦运行以下代码,Python.exe就会崩溃。 from osgeo import gdal g = gdal.Open(r'path\to\dataset', gdal.GA_Readonly) b = g.GetRasterBand(1) data = b.ReadAsArray() Python.exe在b.ReadAsArray()调用时崩溃。我在Google上进行了一些搜索,发现了Gdal 1.6上的文章,其中提到了Windows 7 64bit的该问题,但他们还提到当时该问题已在最新的开发版本中修复。 其他人遇到过这个问题吗?任何解决方法? 更新: 我决定在PyDev中调试代码,以尝试确定失败的地方。据我所知(仍然没有收到任何错误消息),它在gdal_array.py的第22行上失败了。 _mod = imp.load_module('_gdal_array', fp, pathname, description) 当我进入上面的代码行时,它带我进入numpy 的init .py模块。当我到达numpy的结尾时。__ init __ .py模块,它跳回到上面的代码行。然后,当我按下“进入”按钮时,应该将我带到gdal_array.py中的下一行,该脚本只是终止而没有任何错误消息或任何内容。 更新#2: 我从Python Cheeseshop和OSGeo的Windows Binaries中卸载了GDAL 1.9.1,并安装了GDAL 1.6.1。仍然有同样的问题。
12 gdal  numpy  python-2.6  array 

3
GDAL和Python:如何获取具有特定值的所有单元格的坐标?
我有一个Arc / Info Binary Grid(具体地说,是ArcGIS流累积栅格),并且我想识别所有具有特定值(或值范围)的像元。最终,我想要一个表示这些单元的点的shapefile。 我可以使用QGIS打开hdr.adf并获得此结果,工作流程为: QGIS>栅格菜单>栅格计算器(用目标值标记所有点) QGIS>栅格菜单>多边形 QGIS>矢量菜单>几何子菜单>多边形形心 编辑质心以删除不需要的多质心(这些质心= 0) 这种方法“完成了任务”,但是对我来说并不有吸引力,因为它创建了两个我必须删除的文件,然后我必须从形心的shapefile中删除不需要的记录(即那些= 0)。 一个现有的问题可以解决这个问题,但是它是针对ArcGIS / ArcPy量身定制的,我想留在FOSS领域。 是否有人拥有可查询栅格像元值的现有GDAL / Python配方/脚本,并且在找到目标值(或目标范围内的值)时,将记录添加到shapefile中?这样不仅可以避免与UI的交互,而且还可以通过一次创建干净的结果。 我通过与Chris Garrard的一个演示文稿进行对比而对此进行了射击,但是光栅工作不在我的操盘手,并且我不想用我的弱代码使问题变得混乱。 如果有人希望使用确切的数据集,我将它作为.zip放在这里。 [编辑注释]留给后代保留。请参阅与om_henners的评论交流。基本上,x / y(行/列)值被翻转。最初的答案是这样的: (y_index, x_index) = np.nonzero(a == 1000) 倒像这样: (x_index, y_index) = np.nonzero(a == 1000) 当我第一次遇到屏幕快照中说明的问题时,我想知道我是否正确地实现了几何图形,并通过在此行中翻转x / y坐标值进行了实验: point.SetPoint(0, x, y) ..如.. point.SetPoint(0, y, x) 但是那没有用。而且我不认为尝试翻转om_henners的Numpy表达式中的值,是错误地认为在任一行上翻转它们都是等效的。我认为真正的问题分别与x_size和y_size值有关,当行和列索引用于计算单元格的点坐标时,将应用和。30-30 [原始编辑] …
12 python  raster  gdal 

5
Windows上的GEOS和Shapely安装
尝试在Windows 64位计算机上安装Shapely时,无法使GEOS库正常工作。 到目前为止,我已经运行了OSGeo4W安装程序,从中安装了GDAL(我相信该软件包中包含geos库)。之后,我检查了C:\OSGeo4W\bin目录中是否有geos_c.dll ,但是我错过了一些配置步骤,或者库不起作用。 我需要Shapely来工作,因此我也pip install shapely安装了GDAL之后也运行了,显然可以使用(尽管找不到GEOS的C库)。 在我的代码中,我可以导入Shapely,但是当我尝试使用它时,出现一条错误消息,告诉我"geos.dll"找不到。
12 qgis  python  gdal  shapely 

1
GDAL RasterizeLayer不会将所有多边形刻录到Raster吗?
我正在尝试使用GDAL的RasterizeLayer将shapefile刻录到栅格。给定特定的像素大小,我从另一个shapefile中预先创建了一个感兴趣的区域栅格。然后,此AOI将用作所有后续栅格化(相同数量的列和行,相同的投影和地理转换)的基础。 但是,当我基于相同的像素大小和投影将形状刻录到自己的栅格时,会发生问题。下面的链接(没有足够的代表来发布图像),以棕褐色显示原始shapefile,以及RasterizeLayer刻录数据的深粉红色。浅粉红色是深粉红色栅格数据的nodata值。灰色是完成形状文件刻录的AOI。 给定shapefile多边形的范围,我希望看到底部两个角处的刻录值,以及显示的数据下方的两个像素。但是,显然不是这种情况。 以下是我用来生成这些代码的代码。所有形状都是使用QGIS创建的,并且都在同一投影中创建。(应该注意的是,所示图片中的网格只是用来说明我所使用的像素大小。) from osgeo import ogr from osgeo import gdal aoi_uri = 'AOI_Raster.tif' aoi_raster = gdal.Open(aoi_uri) def new_raster_from_base(base, outputURI, format, nodata, datatype): cols = base.RasterXSize rows = base.RasterYSize projection = base.GetProjection() geotransform = base.GetGeoTransform() bands = base.RasterCount driver = gdal.GetDriverByName(format) new_raster = driver.Create(str(outputURI), cols, rows, bands, datatype) new_raster.SetProjection(projection) …

1
有没有办法在Python中适当地使GDAL引发异常?
我正在Python中使用GDAL,并且想让GDAL引发异常,以便我可以对它们做一些有用的事情。例如,如果无法使用gdal.Open()打开文件,我想抛出一个异常,而不是gdal返回None。我只想捕获错误而不是将它们转储到sys.stdout。 目前,我已经尝试使用该gdal.UseExceptions()功能,但是遇到了一个问题。当gdal.UseExceptions()设置似乎隐藏某些错误,他们不会引发异常。例如ERROR 5: Access window out of range in RasterIO() Requested (1,15) of size 25x3 on raster of 26x17消失,没有异常引发。这似乎很危险。 任何想法表示赞赏,谢谢。
12 python  gdal  ogr  osgeo 

1
将栅格数据转换为面数据
我正在尝试将栅格数据转换为面数据。以前,我使用shapefile.py在栅格上的各个纬度/经度上创建点数据。但这将创建大量数据,而对其进行查询将是一个大问题。 因此,如果能够将栅格数据转换为多边形数据会更好。我能够找到SAGA,但似乎它只能转换.grd文件。有没有一种方法可以将GeoTIFF格式或栅格数据集一般转换为Polygon? 更新:使用gdal_polygonize.py 我正在执行以下代码行, gdal_polygonize.py ~/development/Biodiversity/biodiversity/GeoTIFF/bio11.tif -f "ESRI Shapefile" bio11.shp 但是我收到以下错误。我的gdal版本是1.9.0。 Traceback (most recent call last): File "/usr/bin/gdal_polygonize.py", line 34, in <module> import gdal, ogr, osr File "/usr/lib/python2.7/dist-packages/gdal.py", line 2, in <module> from osgeo.gdal import deprecation_warn File "/usr/lib/python2.7/dist-packages/osgeo/__init__.py", line 21, in <module> _gdal = swig_import_helper() File "/usr/lib/python2.7/dist-packages/osgeo/__init__.py", line 17, in …

2
TRI,TPI或粗糙度
我正在进行选址投影,无法进行任何现场观察。选择过程的关键要素是基础地形的坚固性。 我计划使用GDALdem创建派生的耐用性贴图。我已经读过威尔逊等人。2007年论文和GDALdem文档。虽然两者都提供了用于生成索引的算法的见解,但只有Wilson论文提供了对索引适用性的评估。 至关重要的是,由于无法进行原位观察,因此选择的指数会过高估计表面粗糙度。 根据您的经验,您使用了哪个索引,用于什么应用程序,为什么?

7
在Mac OS X上将GEOS,PROJ,GDAL / OGR安装到python virtualenv中
我正在尝试设置一个隔离的python virtualenv来在Mac OS X上的GIS项目上工作。听起来我需要从kyngchaos站点(这里http://www.kyngchaos.com/软件/框架,而不是easy_install将其安装到我的virtualenv中。准确吗? kyngchaos上可用的下载是pkg安装程序,而不仅仅是python模块的egg或bdist。因此,除了将文件复制到/Library/Framework/geos.framework文件夹之外,我不确定安装程序还会对环境做什么。 如何将特定版本的GEOS,PROJ,GDAL / OGR安装到新的python virtualenv中?感谢您在此问题上的帮助/建议。
12 gdal  ogr  osx 

3
gdalmerge生成的文件太大
我正在尝试将60个geotiff文件合并为一个大文件,以便能够使用gdal2tiles从产生的巨大geotiff文件中生成切片。 合并过程可以正常工作,但是由于某种原因,它会生成一个大小为78GB的文件,而不是预期的19GB。不太确定那里出了什么问题。 尝试这样做的原因是因为将60个Geotiff一张一张地叠起来,在地图边框上给了我空白。

1
GDAL在Python中多边形创建空白多边形?
我在python中使用Polygonize函数遇到麻烦。可以在此处找到此食谱的示例。 我的代码的相关部分是: sourceRaster = gdal.Open('myraster.tif') band = sourceRaster.GetRasterBand(1) bandArray = band.ReadAsArray() outShapefile = "polygonized" driver = ogr.GetDriverByName("ESRI Shapefile") if os.path.exists(outShapefile+".shp"): driver.DeleteDataSource(outShapefile+".shp") outDatasource = driver.CreateDataSource(outShapefile+ ".shp") outLayer = outDatasource.CreateLayer("polygonized", srs=None) gdal.Polygonize( band, None, outLayer, -1, [], callback=None ) outDatasource.Destroy() sourceRaster = None 我知道乐队有相关信息,这是一个片段bandArray: array([[ 4., 4., 3., 3., 3., 2., 2., …
12 python  gdal 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.