Convertendo dados de varredura em dados de polígono

12

Estou tentando converter dados rasterizados em dados poligonais. Anteriormente, eu estava usando o shapefile.py para criar dados de pontos em lat / lon individuais na varredura. Mas isso criará uma enorme quantidade de dados e a consulta será um grande problema.

Portanto, seria melhor se eu pudesse converter os dados rasterizados em dados poligonais. Consegui encontrar o SAGA , mas parece que ele pode converter os arquivos .grd . Existe uma maneira de converter o formato GeoTIFF ou conjuntos de dados raster em geral para Polygon?

ATUALIZAÇÃO: Usando gdal_polygonize.py

Estou executando a seguinte linha de código,

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

Mas estou recebendo o seguinte erro. Minha versão 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
Sam007
fonte
1
Se você estiver fazendo uma classificação de terrenos com tiffs, confira o link ( gis.stackexchange.com/q/29570/8104 ), onde existe um método para converter tiffs em polígonos usando a classificação de probabilidade máxima não supervisionada.
Aaron
graças @ Aaron, mas eu preciso trabalhar em código aberto neste projeto
Sam007
existe uma maneira de converter 200 tifs de uma só vez?
21918 Benjo

Respostas:

21

Tente gdal_polygonize.py . Por exemplo, para criar um Shapefile a mylayer.shppartir da entrada myraster.tif:

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

ou para enviar diretamente para um banco de dados PostGIS (consulte os detalhes do driver PostgreSQL / PostGIS para GDAL ):

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

(ignore a mensagem "ERRO 1: Nenhuma definição de campo encontrada para 'mylayer', é uma tabela?")

Existem ligações Python abaixo do GDALPolygonize , se você precisar dessa ferramenta personalizada.

Mike T
fonte
Obrigado Mike. Deixe-me tentar isso. Além disso, em vez de enviá-lo como shapefile, posso atribuir isso diretamente ao PostGIS e acessá-lo no Geoserver.
Sam007
@ Sam007 sim, saída PostGIS funciona também, ver atualizados
Mike T
Este erro foi causado por criar o shapefile. Não foi adicionado ao banco de dados postgis. dpaste.de/L8tSK É um problema se o GeoTIFF estiver em outro diretório?
Sam007
Parece um erro perturbador, relacionado às ligações SWIG usadas pelo Python. Qual versão do GDAL você possui e como instalou?
Mike T
1
@ Sam007 Tente sudo apt-get install python-gdal, mas se isso não funcionar, sim poste uma nova pergunta. Ainda não testei como isso funciona ou não com o OpenGeo.
Mike T