将栅格数据转换为面数据


12

我正在尝试将栅格数据转换为面数据。以前,我使用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 swig_import_helper
    _mod = imp.load_module('_gdal', fp, pathname, description)
ImportError: libjvm.so: cannot open shared object file: No such file or directory

1
如果您正在使用tiff进行土地分类,请查看链接(gis.stackexchange.com/q/29570/8104),其中有一种方法可以使用无监督的最大似然分类将tiff转换为多边形。
亚伦

感谢@Aaron,但我需要在这个项目上从事开源工作
Sam007

有没有办法一次转换200 tif?

Answers:


21

尝试gdal_polygonize.py。例如,mylayer.shp根据输入创建一个Shapefile myraster.tif

gdal_polygonize.py myraster.tif -f "ESRI Shapefile" mylayer.shp

或直接输出到PostGIS数据库(请参阅GDALPostgreSQL / PostGIS驱动程序详细信息):

gdal_polygonize.py myraster.tif -f PostgreSQL PG:"dbname='postgis' user='postgres'" mylayer

(忽略“错误1:找不到'mylayer'的字段定义,它是表吗?”消息)

如果需要自定义此工具,则GDALPolygonize下面有Python绑定。


谢谢迈克。让我试试看。另外,除了将其输出为shapefile之外,我还可以将其直接分配到PostGIS中并从Geoserver中访问它。
Sam007

@ Sam007是的,PostGIS输出也可以工作,请参见更新
Mike T

为什么创建shapefile时出现此错误。没有添加到postgis数据库。dpaste.de/L8tSK如果GeoTIFF在另一个目录中,是否有问题?
Sam007

这看起来像一个分散注意力的错误,与Python使用的SWIG绑定有关。您拥有哪个版本的GDAL,以及如何安装?
Mike T

1
@ Sam007试试看sudo apt-get install python-gdal,但是如果那不起作用,那么可以发布一个新问题。我仍然无法通过OpenGeo测试它的工作方式。
Mike T
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.