Questions tagged «gdal»

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

9
在将shapefile与ogr2ogr合并时,添加具有文件名的字段?
我正在合并一些shapefile,但在QGIS中这样做时遇到了一些问题,因此我直接使用了ogr2ogr。我正在这样做(批量): ogr2ogr -overwrite %destination% %n1% ogr2ogr -update -append %destination% %n2% -nln all_new ogr2ogr -update -append %destination% %n3% -nln all_new ogr2ogr -update -append %destination% %n4% -nln all_new 它工作正常,但现在我需要在生成的shapefile中有一个字段,其中包含我合并的原始shapefile的名称。听起来并不困难,但我没有设法做到这一点。 有人可以帮忙吗?谢谢!
14 gdal  ogr2ogr 

3
如何将仿射坐标转换为经/纬度?
我对GIS非常陌生。 我正在gdal阅读土地利用/土地覆盖图,我需要选择某些土地覆盖类型的经/纬度以索引到仅以经/纬度表示的不同数据集。不幸的是,我不了解从geotransform给我的x和y坐标的形式,特别是originXand originY以下: geotransform = dataset.GetGeoTransform() originX = geotransform[0] originY = geotransform[3] 打印这些值会给我类似的坐标(447466.693808, 4952570.40529)。这些与原始纬度和经度有何关系? 编辑: 这是一个简单的python示例,为我提供了我想要的东西: srs = osr.SpatialReference() srs.ImportFromWkt(dataset.GetProjection()) srsLatLong = srs.CloneGeogCS() ct = osr.CoordinateTransformation(srs,srsLatLong) print ct.TransformPoint(originX,originY) 从以下地方窃取:tolatlong.py

3
Gdal:用另一个栅格裁剪一个栅格
我正在编写一个简单的实用程序,将一批多波段Geotiff栅格文件裁剪到相同(较小)的区域。使用gdalwarp,我可以使用单多边形剪切shapefile轻松裁剪文件: gdalwarp -cutline clipper.shp -crop_to_cutline input.tif output.tif 但是,我要裁剪的实际区域将始终始终由另一个geotiff栅格文件而不是shapefile定义。如果可以将栅格的范围用作剪切文件,那将很好,但是我不确定如何执行此操作。毫不奇怪,以下代码不起作用(它不会引发错误,它只会产生任何东西): gdalwarp -cutline clipper.tif-crop_to_cutline input.tif output.tif 所以,我的问题是,有没有办法提供栅格gdalwarp -cutline?或者,是否还有另一个gdal函数可以使用另一个栅格裁剪一个栅格?如果这两种方法均不可行,是否有一种非常简单的方法来生成具有由栅格范围定义的单个多边形的shapefile? 这段代码将包装在更广泛的python脚本中,因此我可以使用命令行gdal实用程序或gdal的任何python绑定。 作为附带说明,我知道我可以轻松地制作一个裁剪shapefile,以覆盖我在QGIS中的栅格范围。如果找不到简单的解决方案,我可能会这样做,但是最终,作为大型自动化分析的一部分,我最终将在数十个甚至数百个区域中使用此实用程序,因此我不希望乏味即使非常简单,也可以手动执行。
14 python  raster  gdal  clip  gdalwarp 


2
如何获取GDAL以在Python中为GTiff创建统计信息
我定期使用GDAL在Python中创建自己的GeoTIFF栅格,例如: from osgeo import gdal from numpy import random data = random.uniform(0, 10, (300, 200)) driver = gdal.GetDriverByName('GTiff') ds = driver.Create('MyRaster.tif', 200, 300) band = ds.GetRasterBand(1) band.WriteArray(data) ds = band = None # save, close 但是,当使用ArcCatalog / ArcGIS查看结果时,由于没有统计信息,因此显示为黑色或灰色。可以通过右键单击栅格并在ArcCatalog中选择“计算统计信息...”(还有其他几种方法来解决此问题),也可以在命令提示符下使用gdalinfo来解决此问题: gdalinfo -stats MyRaster.tif 将生成MyRaster.tif.aux.xml,ArcGIS会使用来正确缩放栅格。PAM(永久辅助元数据)文件包含统计信息,最值得注意的是最小值和最大值: <PAMDataset> <PAMRasterBand band="1"> <Metadata> <MDI key="STATISTICS_MINIMUM">0</MDI> <MDI key="STATISTICS_MAXIMUM">10</MDI> …

2
Python,GDAL和构建栅格属性表
我有一个整数栅格,我想使用Python和GDAL为其构建栅格属性表。我可以在Python中创建GDAL栅格属性表,如下所示: >>> rat = gdal.RasterAttributeTable() 如我们所见,这很好用: >>> rat <osgeo.gdal.RasterAttributeTable; proxy of <Swig Object of type 'GDALRasterAttributeTableShadow *' at 0x0000000002A53D50> > 这样创建的表没有行或列: >>> rat.GetRowCount() 0 >>> rat.GetColumnCount() 0 我创建了一个名为“值”的列,以将唯一值存储在栅格中: >>> rat.CreateColumn("Value", gdalconst.GFT_Integer, gdalconst.GFU_MinMax) 0 很好,并且列数已更新: >>> rat.GetColumnCount() 1 现在,我必须将值(记录)添加到该列中才能使用。我可以从栅格波段中获得唯一值的列表,如下所示: >>> data = band.ReadAsArray(0, 0, dataset.RasterXSize, dataset.RasterYSize) >>> vals = list(numpy.unique(data)) >>> …

2
将.tif与.tfw转换为GeoTiff?
我有一个tif图像文件和一个.tfw世界文件(使用Mapertive从OSM数据创建)。如何(使用Linux命令行)将其转换为GeoTIFF文件?(即我想要一个文件,而不是2个文件)。我相信gdal之类的东西是可能的。

6
如何遍历连续栅格中的每个像元?
有关更多详细信息,请参见此链接。 问题: 我想遍历一个连续的栅格(一个没有属性表的栅格),逐个像元,并获取像元的值。我想采用这些值并对它们运行条件,模拟下面详细介绍的地图代数步骤,而无需实际使用栅格计算器。 根据下面的评论请求,我添加了详细信息,为问题提供了背景,并证明有必要在下面称为“所需的分析:”的部分中实施这样的方法。 下面提出的分析虽然通过提供背景与我的问题相关,但无需在答案中进行。问题的范围仅涉及对连续栅格进行迭代以获取/设置像元值。 分析需要: 如果满足以下任一条件,则将输出单元格的值设置为1。如果不满足任何条件,则仅将输出单元格的值设置为0。 条件1:如果单元格值大于顶部和底部单元格,则给出值1: Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0) 内核文件如下所示: 3 3 0 1 0 0 0 0 0 1 0 条件2:如果单元格值大于左右单元格,则给定值1: Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0) 内核文件如下所示: 3 3 0 0 0 1 0 1 0 0 0 条件3:如果单元格的值大于左上角和右下角的单元格,则将值设为1: Con("raster" > …
13 python  raster  arcobjects  gdal  c# 

3
如何在多个扫描的纸图上均衡颜色,亮度和对比度
我主要是矢量人员,但是对于当前的项目,我需要使用一堆旧的扫描纸质地图(如果您有兴趣的话,可以查看伦敦的ww2炸弹爆炸图!) 我们扫描了地图并对其进行了地理定位,现在想创建一个平铺的复合层以在网站上提供服务。我们显然会划掉边界,这不是这里的问题。 问题是,地图图纸之间在视觉上存在视觉上的颜色和亮度差异。我对如何均衡它们以产生连贯的视觉效果感到困惑。我阅读了直方图均衡化,但是我当前的工具箱(Manifold GIS,GDAL,GeoServer)似乎没有所需的功能。 已经地理定位的4个扫描的示例:

3
用于逻辑运算符和其他功能的gdal_calc栅格计算器语法
在gdal_calc的文档中,使用numpy语法声明了命令行栅格计算器。稍后有几个示例,其中一个示例: gdal_calc.py -A input.tif --outfile = result.tif --calc =“ A *(A> 0)” --NoDataValue = 0- 表示将零以下的值设置为null 不幸的是,没有逻辑运算符的示例,例如: --calc =“ A *(A> 0和A> B)”- 表示如果A大于零且B较大,则保留A,并将其余值设置为null 基于Numpy / Scipy逻辑函数,我希望将逻辑运算符写为: --calc =“ A * logical_and(A> 0,A> B)” 我尝试了一下,它似乎可以工作,但是我想向您保证这是正确的。 以类似的方式,如果您想要最少的A和B: --calc =“ A *(A <= B)+ B *(A> B)” 您可以这样写: --calc =“ minimum(A,B)” 我的问题是我找不到任何食谱来确保我做对了。是否有一些不错的食谱,其中包含有关gdal_calc什么是和不可能的高级示例?
13 python  gdal  numpy  gdal-calc 

2
使用Psycopg2从Postgis将栅格数据下载到python中
我在postgres表中有栅格数据,我想以numpy数组的形式进入python。我正在使用psycopg2连接到数据库。我可以下载数据,但它以字符串形式返回(可能是序列化的二进制文件)。 有谁知道如何获取此字符串并将其转换为numpy数组吗? 我探索了其他下载栅格的选项,例如使用st_astiff并编码以下载hex文件并使用xxd,但这没有用。我不断收到错误消息“ rt_raster_to_gdal:无法加载输出GDAL驱动程序”,并且我没有权限设置环境变量以能够打开驱动程序。 TL,DR:想将栅格数据导入numpy数组(使用python)。

1
OGR / GDAL线程导致内核利用率低
我正在尝试使用ogr / gdal处理一些栅格数据,但似乎无法充分利用计算机上的所有内核。当我仅在单个内核上运行该进程时,该内核的利用率为100%。当我尝试拆分为多核时(在下面的示例中,通过对x偏移量进行分块并将它们放入队列中),我的8个内核中的每个内核都得到了可悲的利用。看起来每个内核的利用率仅相加达到100%(例如,每个内核的利用率为12.5%)。 我担心使用相同的数据源是瓶颈,但是后来我为每个核心复制了底层栅格文件...并且核心利用率仍然很低。这使我相信,ogr或gdal某种程度上表现得像瓶颈共享资源,但是我在网上找不到任何东西。任何帮助将非常感激! 这是在每个辅助线程中运行的“帮助器”功能: def find_pixels_intersect_helper(datasource, bounds_wkt, x_min, x_max): bounds = ogr.CreateGeometryFromWkt(bounds_wkt) rows_to_write = [] for x_offset in range(x_min, x_max): for y_offset in range(datasource.RasterYSize): pxl_bounds_wkt = pix_to_wkt(datasource, x_offset, y_offset) pxl_bounds = ogr.CreateGeometryFromWkt(pxl_bounds_wkt) if pxl_bounds.Intersect(bounds): rows_to_write.append(['%s_%s' % (x_offset, y_offset), pxl_bounds.Centroid().ExportToWkt()])

3
如何在Fiona中添加对FileGDB(Esri文件gdb API)驱动程序的支持?
对此有很多问题,但没有一个解决了我的问题。 我有一台机器有: Windows 7 x64 Python 3.4.3 x64 @中安装:gdalinfo --version --> GDAL 1.11.4, released 2016/01/25; gdal是GDAL-1.11.4-cp34-none-win_amd64.whl从这里通过轮子安装的 GDAL已安装到中C:\Python34\Lib\site-packages\osgeo。在那里,我有一堆用于gdal和ogr以及.pyd文件的.exe文件。 安装了fiona:是Fiona-1.6.3-cp34-none-win_amd64.whl从同一网站上的wheel安装的。 我能够运行以下代码,并且可以成功执行: import gdal import ogr from gdalconst import * shp = r"C:\Data\GIS\PTS.shp" driver = ogr.GetDriverByName('ESRI Shapefile') dataset = driver.Open(shp) layer = dataset.GetLayer() layer.GetFeatureCount() schema = layer.schema fields = [field.GetName() for field in …


4
没有名为“ osgeo”的模块
我已经安装了GDAL并在命令行中进行了检查,它正在运行,当我在命令行中运行gdal2tiles.py时,它可以工作,但是当我使用python IDLE运行相同的文件gdal2tiles.py时,我得到了“没有名为'osgeo的模块'”错误。你能帮忙吗
13 python  gdal  osgeo  osgeo4w  pyqt4 

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.