Obtendo limites da imagem rasterizada como polígono no ArcGIS Desktop?


28

Eu tenho uma imagem quadriculada retangular no ArcGIS Desktop.

Como posso produzir um polígono que seja exatamente a extensão da imagem rasterizada?

Ou seja, eu quero ter uma camada de polígono com um único quadrilátero que é a borda da imagem.

Eu tentei simplesmente fazer uma conversão Raster-> Polygon, mas isso tenta usar os dados da imagem para gerar o contorno - tudo o que eu quero é o contorno da borda da imagem.

Estou usando o ArcGIS Desktop 10.

Respostas:


33

Se você possui um Analista Espacial , pode:

  1. Multiplique a varredura por 0 para criar uma varredura de valor constante usando a Calculadora de varredura. (certifique-se de convertê-lo para o tipo inteiro ou a etapa 2 não funcionará)
  2. Converta o resultado da etapa 1 em polígono usando a ferramenta Raster to Polygon.

Outra solução:

Se você possui uma licença do 3D Analyst , pode usar a ferramenta Raster Domain em 3D Analyst> Conversion> from raster (no entanto, ela não possui a função suave)


12

Você pode usar a ferramenta Domínio de varredura do 3D Analyst para criar um polígono com a mesma extensão que seus dados de varredura


Bem-vindo ao GIS SE! Você poderia adicionar referências à sua resposta? Dessa forma, seria mais sólido.
— RK

A ferramenta Raster Domain fez o trabalho, perfeitamente! Cria um contorno ou limite dos dados de varredura.

1
Uma palavra de aviso sobre esta ferramenta - o polígono delimitador criado é a extensão dos dados rasterizados que começam e terminam no pixel CENTER, não na borda externa dos pixels. Eu apenas tentei e pensei que ele retornou a caixa delimitadora externa da varredura, mas quando você aumentar o zoom, verá que a caixa delimitadora começa no centro do pixel.
— Fbiles

Na verdade, existe um parâmetro para o método IRasterDomainExtractor.ExtractDomain que controla se ele usa o centro ou a borda externa dos pixels / células.
— Preston

Isto é perfeito! Uma ferramenta e eu temos um esboço de polígono da minha varredura. Obrigado!
— precisa saber é o seguinte

11

Que tal simplesmente digitalizá-lo? Clique-clique-clique-clique concluído.


8
Não sei ao certo por que essa opção foi rejeitada. Você pode encontrar as coordenadas dos cantos da extensão e criar vértices nessas coordenadas. Pode até ser usado para análise. Se for apenas para exibição, clique-clique-clique-clique funciona muito bem.
— Baltok

3
Eu diria porque o raster poderia ser uma forma irregular e, dependendo da complexidade, pode resultar em um trabalho muito cansativo digitalização
— Phil Henley

4
Mas o OP disse que era retangular. Parece um trabalho bastante simples para mim. Ao ampliar e ser preciso, a diferença entre o contorno de varredura real e o contorno digitalizado seria insignificante para qualquer aplicativo do mundo real.
— Matt

10

Você pode usar a ferramenta Build Footprint na caixa de ferramentas Gerenciamento de dados. Você precisa criar um conjunto de dados do mosaico a partir da sua varredura.

Crie um novo mosaico em um geodatabase de arquivo e adicione sua varredura.

Abra seu mosaico no ArcMap e extraia a pegada.

Isso é o que eu faria.


8

Eu uso esse script python simples, ele cria uma classe de característica de polígono com a extensão de toda a varredura presente em uma pasta. Para usá-lo, você pode criar uma ferramenta no ArcToolbox ou simplesmente alterar as variáveis ​​InFolder e Dest (Destination).

import arcpy,os

InFolder = arcpy.GetParameterAsText(0)
Dest=arcpy.GetParameterAsText(1)

arcpy.env.workspace=InFolder
#The raster datasets in the input workspace
in_raster_datasets = arcpy.ListRasters()

arcpy.CreateFeatureclass_management(os.path.dirname(Dest),
                                   os.path.basename(Dest),
                                   "POLYGON")
arcpy.AddField_management(Dest,"RasterName", "String","","",250)
arcpy.AddField_management(Dest,"RasterPath", "String","","",250)

cursor = arcpy.InsertCursor(Dest)
point = arcpy.Point()
array = arcpy.Array()
corners = ["lowerLeft", "lowerRight", "upperRight", "upperLeft"]
for Ras in in_raster_datasets:
    feat = cursor.newRow()  
    r = arcpy.Raster(Ras)
    for corner in corners:    
        point.X = getattr(r.extent, "%s" % corner).X
        point.Y = getattr(r.extent, "%s" % corner).Y
        array.add(point)
    array.add(array.getObject(0))
    polygon = arcpy.Polygon(array)
    feat.shape = polygon
    feat.setValue("RasterName", Ras)
    feat.setValue("RasterPath", InFolder + "\\" + Ras)
    cursor.insertRow(feat)
    array.removeAll()
del feat
del cursor  

pode nos dizer em detalhes como usar esse código. Eu quero usá-lo no arquivo raster .asc. Minhas imagens são diferentes subpasta diferente.?
— GIS Data Butcher

1
A resposta de jeb funcionou para mim, não tenha representante suficiente para votar nele. @GIS Data Butcher Salve a fonte completa em um arquivo script.py e execute-o na Janela Python no ArcMap. Você pode usar o seguinte comando na janela Python para executar o script do arquivo. > Execfile (r'd: \ temp \ script.py ')
— Asad

perfeito!! Gostaria de saber, existe um caminho para a ferramenta ler subpastas também?
— raphael

@raphael, com certeza, você só precisa implementar o python padrão os.listdir ou os.walk no script.
— jeb

@ jeb sim, entendo o conceito ... bot, sou muito novo nisso, e não consegui fazê-lo funcionar ... você pode dar alguma ajuda?
— raphael

4

Além disso, uma maneira fácil é usar a ferramenta Reclassificar, onde você deve clicar no botão Classificar e alterar o número de classes para 1. Clique em OK. Agora, a varredura de saída pode ser facilmente convertida usando a Ferramenta de conversão de varredura em polígono. ;)


4

Eu acho que reclassificar e converter o raster em polígono pode consumir muito tempo. Na minha opinião, a maneira mais fácil de fazer isso é:

  • Obtenha maxX, maxY, minX, minY (isso pode ser feito em Python com o comando de descrição)
  • Execute Create Fishnet com a extensão acima e o número de linhas / colunas como 1

Se você tiver muitos rasters, isso deve ser feito em Python e pode criar centenas de pegadas em questão de segundos.


0

No ArcCatalog, você pode criar um catálogo raster em um .gdb (Data Management Tools-> Raster). Não gerenciado é bom. Em seguida, clique com o botão direito do mouse e carregue (se os rasters estiverem apenas em uma pasta, "carregue da área de trabalho". Se você carregar o catálogo raster no ArcMap, poderá clicar com o botão direito do mouse-> dados-> exportar pegada, como um arquivo de forma ou classe de recurso. O arquivo de forma terá um campo 'nome' preenchido com o nome da varredura.

O Raster Catalog exibirá automaticamente as extensões, mas eu precisava enviá-las para alguém que não estivesse usando o ArcGIS.


0

Use a ferramenta "Raster to Polygon" na caixa de ferramentas de conversão. Desmarque a caixa de simplificar polígonos. Isso criará exatamente o que você deseja.


8
Tem certeza de que isso não cria apenas uma grande confusão de polígonos, um para cada conjunto contíguo de pixels de valor igual na imagem original?
— whuber

Você sempre pode adicionar uma dissolução depois disso para obter a extensão poli. No entanto, aposto que a solução python listada por @jeb é mais rápida.
— GeoJohn

0

A ferramenta "Domínio de varredura" criará um polígono em torno de uma varredura de formato irregular. Eu acredito que requer uma licença para a extensão de analista 3d.


0

Usar o ArcCatalog é a melhor opção. Crie um conjunto de dados do mosaico a partir dos rasters disponíveis. Defina "SEM VALOR" no mosaico para evitar que o plano de fundo da varredura seja incluído no polígono. Construa pegadas usando o método Radiométrico. Abra o conjunto de dados Mosaic no ArcGIS e exporte Footprints para o arquivo shp. Ótima maneira de obter os limites do mosaico ...


0

Se você estiver tentando obter o esboço de uma varredura DEM, precisará fazer o seguinte

Se você possui analista espacial e analista 3d, pode:

  1. multiplique a varredura por 0 para criar uma varredura de valor constante usando a Calculadora de varredura.
  2. Converta os resultados da etapa 1 em um número inteiro rasterizado usando o "INT (Tool)". Isso é necessário para o próximo passo.
  3. converta o resultado da etapa 2 em polígono usando a ferramenta Raster to Polygon (funciona apenas com números inteiros de varredura).

Olá Seamster02, bem-vindo ao GIS Stack Exchange :) Como está escrito, isso não é muito diferente da resposta aceita, gis.stackexchange.com/a/22016/108 .
— Matt Wilkie
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.