Konversi Data Raster ke data Polygon

12

Saya mencoba mengonversi data raster ke data poligon. Sebelumnya saya menggunakan shapefile.py untuk membuat data titik pada lat individu / lon pada raster. Tapi itu akan membuat data besar dan menanyakannya akan menjadi masalah besar.

Jadi, akan lebih baik jika saya dapat mengubah data raster menjadi data poligon. Saya dapat menemukan SAGA , tetapi tampaknya hanya dapat mengonversi file .grd . Apakah ada cara untuk mengkonversi format GeoTIFF atau dataset raster secara umum ke Polygon?

UPDATE: Menggunakan gdal_polygonize.py

Saya mengeksekusi baris kode berikut,

gdal_polygonize.py ~/development/Biodiversity/biodiversity/GeoTIFF/bio11.tif -f "ESRI Shapefile" bio11.shp

Tapi saya mendapatkan kesalahan berikut. Versi gdal saya adalah 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
Sam007
sumber
1
Jika Anda melakukan klasifikasi tanah dengan tiffs, periksa tautannya ( gis.stackexchange.com/q/29570/8104 ) di mana ada metode untuk mengubah tiffs menjadi poligon menggunakan klasifikasi kemungkinan maksimum tanpa pengawasan.
Aaron
terima kasih @ Harun tetapi saya harus bekerja pada open source pada proyek ini
Sam007
apakah ada cara untuk mengkonversi 200 tif sekaligus?
Benjo

Jawaban:

21

Coba gdal_polygonize.py . Misalnya, untuk membuat Shapefile mylayer.shpdari input myraster.tif:

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

atau untuk menampilkan langsung ke database PostGIS (lihat detail driver PostgreSQL / PostGIS untuk GDAL ):

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

(abaikan pesan "KESALAHAN 1: Tidak ada definisi bidang yang ditemukan untuk 'pemainanku', apakah ini sebuah tabel?")

Ada binding Python di bawahnya untuk GDALPolygonize , jika Anda membutuhkan alat ini disesuaikan.

Mike T
sumber
Terima kasih Mike. Biarkan saya mencobanya. Selain itu, daripada menampilkannya sebagai shapefile, dapatkah saya langsung menetapkan ini ke dalam PostGIS dan mengaksesnya dari Geoserver.
Sam007
@ Sam007 ya, keluaran PostGIS juga berfungsi, lihat diperbarui
Mike T
Mendapat kesalahan ini mengapa membuat shapefile. Tidak menambahkan ke database postgis. dpaste.de/L8tSK Apakah masalah jika GeoTIFF berada di dir lain?
Sam007
Itu terlihat seperti kesalahan yang mengganggu, terkait dengan binding SWIG yang digunakan oleh Python. Versi GDAL apa yang Anda miliki, dan bagaimana Anda menginstalnya?
Mike T
1
@ Sam007 Coba sudo apt-get install python-gdal, tetapi jika itu tidak berhasil, maka ya posting pertanyaan baru. Saya masih belum sempat menguji bagaimana cara kerjanya atau tidak dengan OpenGeo.
Mike T