Questions tagged «gdal»

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

1
文件大小膨胀是否与gdalwarp正常?
在使用gdalwarp(通过-tap)投影并对齐到栅格后,我注意到输出栅格比原始栅格大得多。相当彻底的网络搜索发现了Trac问题: 弗兰克·沃默丹(Frank Warmerdam)解释了原因: “经过仔细检查,所讨论文件的不同之处在于,gdal_translate使用TIFFWriteScanline()接口从GTiffDataset :: CreateCopy?()内部写入输出文件,而这仅写入了最后一个'strip'完整的图像区域所需的文件。但是gdalwarp会通过blockio接口,该接口会写入完整的最终条带,甚至是掉落到文件末尾的部分。” 但是,此Trac问题gdalwarp已有7年之久了,我知道GDAL实用程序已经进行了一些更改。我想知道上述推理是否仍然成立,我看到的文件大小膨胀是否“正常”。此处的“正常”一词可能表示意料之中或意料之中,但更重要的是:是否可以采取任何措施来减轻这种影响,即减小输出栅格文件的大小?下表是我遇到的文件大小膨胀的表。 Input File Size (bytes) Output File Size (bytes) Inflation 1437380431 1698334217 18% 1428001178 1698334433 19% 41683165 137036637 228% 输入的TIFF文件是在ArcGIS中创建的,因此具有外部Worldfile,XML和DBF文件,但是这些文件并不能弥补文件大小的差异。这是一个示例gdalwarp调用,因为我在所有这些情况下都使用过它。实际执行由Python subprocess(subprocess.Popen)处理: $ gdalwarp -tap -tr 30 30 -t_srs "+proj=aea +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs" -co "COMPRESS=LZW" input_file.tif output_file.tif 我知道在极少数情况下,压缩会产生更大的文件,但是在不使用LZW压缩的情况下,效果是相同的。表中的比率为LZW压缩率。

4
如何使用VSIS3从S3存储桶中通过GDAL有效地访问文件?
因此,GDAL最近添加了一项新功能,该功能允许随机读取S3存储桶文件。我希望从图像的多个图块中裁剪GDAL图像,而不必下载整个文件。我只看过关于如何通过GDAL配置和访问S3存储桶的非常稀疏的文档,并且对如何开始感到困惑。是否有人会提供一个非常简短的示例/教程来说明如何为GDAL设置虚拟文件系统以实现这一目标?如果您的解决方案允许通过Python编写脚本,请加分! 需要说明的是:我们已经用Python完成了它。Python的问题在于,您必须下载整个图像才能对其进行操作。GDAL的最新版本支持安装S3存储桶,因此,如果我们需要对图像的一小部分进行裁剪,则可以直接在该小部分上进行操作。las,该功能仅在一月份在稳定分支中发布,因此我没有找到任何文档。因此,该解决方案应使用GDAL的最新版本中的VSI3系统,否则应巧妙地使用该系统,以防止用户需要将整个映像下载到EBS驱动器上以对其进行操作。 也就是说,悬赏将授予使用最新版本GDAL中的VSI API的答案,从而无需将整个文件读取到内存或磁盘中。另外,我们使用的存储桶并不总是公开的,因此发布的许多HTTP技巧在我们的许多情况下都行不通。


1
GDAL / Python:如何从SpatialReference获取坐标系名称?
在Python中,使用GDAL,我提取了栅格投影作为WKT字符串,如下所示: wkt = dataset.GetProjection() # wkt is 'PROJCS["GDA_1994_Transverse_Mercator",GEOGCS["GDA_1994",DATUM["GDA_1994",SPHEROID["GRS_1980",6378137,298.2572221010002],TOWGS84[0,0,0,0,0,0,0]],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",10000000],UNIT["Meter",1]]' 使用WKT字符串,我可以创建一个SpatialReference实例,如下所示: src = osr.SpatialReference() src.ImportFromWkt(wkt) 这很容易。我可以src很容易地从诸如UTM区域等中提取投影的几个参数。但是我不知道如何提取类似投影名称的内容,即"GDA_1994_Transverse_Mercator"。这肯定是有可能的,但是就其所有用途而言,Python API文档也可能不存在。 如何提取投影和地理坐标系的名称?

5
使用GDAL将栅格分割成较小的块?
我有一个栅格(实际上是USGS DEM),我需要将其分成较小的块,如下图所示。这是在ArcGIS 10.0中使用“分割栅格”工具完成的。我想要一个FOSS方法来做到这一点。我看过GDAL,可以肯定会这样做(使用gdal_translate可以做到),但是什么也找不到。最终,我希望能够获取栅格并说出我希望将栅格分成多大(4KM x 4KM块)。

8
为Python安装GDAL和OGR?
这篇文章是社区维基。编辑现有答案以改善此职位。它当前不接受新的答案。 我正在用Python开发一些代码,并且想使用GDAL / OGR python绑定。我需要安装GDAL和OGR python绑定的最低数量是多少? 如果我只想从Python使用GDAL / OGR,最简单的安装方法是什么? 我正在寻找适用于Mac和Windows的答案。 GDAL在Python软件包索引(PyPi)中列出,但我不明白如何安装其依赖项(libgdal和libgdal和numpy的头文件)。也许我需要做的就是安装numpy,然后在某处获取libgdal,如果是,在哪里?Windows安装除了 libgdal及其头文件外是否还需要Windows Binaries ? 如何确保为我的Python版本(2.5、2.6、2.7、3)获得正确的python绑定? 为了使用Python中的GDAL和OGR,必须对PATH环境变量进行更改,还是可以通过我的site-packages文件夹和典型import语句访问所有内容? 这些问题与此问题相关,但不能回答: 在Mac OS X上将GEOS,PROJ,GDAL / OGR安装到python virtualenv中。 如何在Windows上使用Python安装GDAL? 我应该注意,FWTools,OSGeo4W和kyngchaos提供了带有Python绑定的ogr和gdal,并且非常出色,但是FWTools和OSGeo4W附带了自己的python,而不是充当现有python安装的库,并且kyng chaos框架似乎是仅适用于OSX。
18 python  gdal  ogr 

1
如何使用GDAL / OGR更改Shapefile的字段值?
我正在尝试更改shapefile的字段值。但是,它不会更改值。我的代码有什么问题? import ogr driver = ogr.GetDriverByName('ESRI Shapefile') fn = 'dist.shp' dataSource = driver.Open(fn, 0) layer = dataSource.GetLayer() feature = layer.GetNextFeature() dist = 233 while feature: feature.SetField("dist", dist) layer.SetFeature(feature) feature = layer.GetNextFeature() dataSource.Destroy()

4
使用“ ESRI Shapefile”驱动程序时如何从缩写字段名称中停止writeOGR
我目前正在使用以下脚本将表中的某些属性数据添加到很多单独的shapefile中: library(rgdal) specieslist <- read.csv("SpeciesList1.txt", header=F) attdata <- read.table("TestAtt.csv", sep = ",", header=T) for (n in 1:dim(specieslist)[1]) { speciesname <- specieslist[n,1] shp <- readOGR("Mesoamerica_modified_polygons", speciesname) shp$ENGL_NAME<-attdata[n,2] writeOGR(shp, "PolygonsV2", speciesname, driver="ESRI Shapefile") } 最后我得到以下警告: 1: In writeOGR(shp, "PolygonsV2", speciesname, driver = "ESRI Shapefile") : Field names abbreviated for ESRI Shapefile driver …

1
为什么要在GDAL Python中关闭数据集?
我经常在Python GDAL代码中看到人们在脚本结束时关闭数据集。为什么在Python GDAL中关闭数据集有意义?如果不这样做会不会有后果? import gdal # open dataset ds = gdal.Open('test.tif') # close dataset ds = None
17 python  gdal 

2
使用GDAL用Python重新投影WGS 1984 Web Mercator(EPSG:3857)
我正在使用GDAL在python中重新投影栅格。我需要将多个tiff从地理WGS 84坐标投影到WGS 1984 Web Mercator(辅助领域),以便以后在Openlayers中与OpenStreetMap以及Google地图一起使用。我从这里开始使用Python 2.7.5和GDAL 1.10.1 ,并从这里开始使用建议转换坐标(我的代码在下面)。简而言之,我导入了osgeo.osr并使用了ImportFromEPSG (code)和CoordinateTransformation(from,to)。 我首先尝试EPSG(32629),这是UTM区29和得到这个投影光栅(或多或少罚款),所以代码似乎是正确的: 然后我用EPSG(3857) ,因为我读过这个和这个问题,并发现这是正确的最近有效密码。但是创建的栅格完全没有空间参考。它在WGS 84数据帧中距离很远(但是如果我将数据帧切换到Web Mercator,就可以了)。 使用EPSG(900913),输出已进行地理参考,但向北移动了约3个栅格像元: 当我使用ArcGIS重新投影栅格时(在WGS_1984_Web_Mercator_Auxiliary_Sphere中导出),结果几乎是正确的: 当我使用旧代码102113(41001,54004)时,结果是完美的: 使用所有代码的测试摘要: 3857: far away up (missing georeference) 3785: far away up (like 3857) 3587: far away right 900913: slightly jumped up 102100: python error 102113: perfect 41001: perfect 54004: perfect ArcGIS (web merc. …


3
如何将Geotiff“无数据”颜色更改为白色/透明而不是黑色?
我正在准备将数据包含到地理网络节点中,该节点通过geoserver显示地图。 问题是没有“数据”的单元格在Geotiff中显示为黑色,我希望将颜色设置为白色或透明。 我正在使用ArcView,但无法访问Spatial Analyst或3D分析师。 我不希望不必分配新的sld文件,并且在从ArcGIS Desktop导出时目前使用“使用颜色图”。

4
-3.4e + 38 nodata值怎么办?
我正在尝试处理一些生物气候栅格文件,例如可以从http://www.worldclim.org/current(bioclim set)下载的文件。他们似乎没有-3.4e+38根据QGIS 设置的无数据值(查看gdalinfo的输出是-3.39999999999999996e+38)。 似乎gdal工具无法处理此nodata值,而qgis似乎也无法识别它。在图层样式中,有一个-3.4e + 38项设置为100%透明,但是即使“识别要素”选择器将其显示为值-3.4e + 38,它仍然显示此类值。 我试图创建一个vrt来将nodata值转换为-9999,但这还是行不通的。 如何处理此类文件以具有可用的nodata值?
17 qgis  raster  gdal 

5
在MacOSX上安装GDAL?
有谁知道在MacOSX上安装GDAL 2.0的最简单方法是什么? 通常的嫌疑人kingchaos二进制分发和自制软件似乎停留在GDAL 1.11上 我需要对似乎包含在2.0中的 TopoJSON功能属性的支持 编辑2017/01/07: kingchaos二进制发行版现在提供了GDAL 2.1发行版

3
极地立体影像的地理转换?
我目前正在将CANGRID气候数据(以Surfer Grid ascii,“。grd”文件提供)导入ArcGIS。网格大小为95行乘125列。元数据提供原始纬度/经度(左下角),像元大小(50公里)以及以中央子午线(纬度110度)和纬度纬度(北纬60度)的极地立体图形式进行的注释投影。 首次尝试将.grd转换为.ascii和.flt栅格失败后,我设法使用GDAL设置范围和投影,但是数据集未正确与目标区域的边界对齐。见下图。 是否存在公认的极地立体地理变换,可以解释这种缺乏对齐的情况? 例如,是否应该使用特定的转换因子或轮换? 数据集中的示例文件在此处:“ t201113.grd” 这是我目前在GDAL中使用的代码 ds = gdal.Open("t201113.grd") array = ds.ReadAsArray() x_rotation = 0 y_rotation = 0 xres = 1 yres = -1 llx = -129.8530 lly = 40.0451 ulx = -175.144 uly = 71.385 input_osr = osr.SpatialReference() input_osr.ImportFromWkt(ds.GetProjection()) wgs84_osr = osr.SpatialReference() wgs84_osr.ImportFromEPSG(4326) wgs_to_nps_trans = osr.CoordinateTransformation(wgs84_osr, …

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.