Como criar pontos aleatórios fora dos polígonos?

11

A ferramenta Criar ponto aleatório é capaz de gerar um certo número de pontos nos polígonos. Gostaria de saber, dada uma caixa delimitadora, existe alguma maneira de gerar pontos aleatórios fora desses polígonos?

Visto
fonte

Respostas:

13

Pessoalmente, não gosto do algoritmo de ponto aleatório no ArcGIS. Como alternativa, use agenrandompnts função GME ( Geospatial Modeling Environment ) . Você poderá identificar polígonos específicos onde os pontos aleatórios serão excluídos (consulte a área destacada em .jpg em anexo). O melhor de tudo é que este software é gratuito.

O GME fornece a você um conjunto de ferramentas de análise e modelagem, que variam de pequenos 'blocos de construção' que você pode usar para criar um fluxo de trabalho sofisticado a programas de análise completamente independentes. Ele também usa o software de código aberto extraordinariamente poderoso R como o mecanismo estatístico para conduzir algumas das ferramentas de análise. Um dos muitos pontos fortes do R é que ele é de código aberto, completamente transparente e bem documentado: características importantes para qualquer software analítico científico.

insira a descrição da imagem aqui

Aaron
fonte
1
Você pode fornecer mais informações sobre por que você não gosta do algoritmo padrão de pontos aleatórios e por que os GME são mais ideais?
Stephen Lead
@ Aaron Nice one! Não tentei isso desde que eram as ferramentas de modelagem da Hawth - vou ter que fazer o download e fazer uma rachadura!
Om_henners
3
@ Stephen No último mês, eu estava gerando pontos aleatórios em quatro classes. Eu encontrei vários problemas: 1) O ArcGIS produziu vários pontos fora dos polígonos de entrada 2) O Arc teve dificuldade em lidar com áreas muito pequenas para meus parâmetros de entrada (por exemplo, distância mínima permitida = 50m e pontos = 50), enquanto o GME lidou com eles problemas produzindo pontos aleatórios até a violação das regras e exibindo uma mensagem de aviso 3) O RPG do Arc é mais lento que o do GME, provavelmente devido ao uso da memória local por R.
Aaron
Agradável! Ele tem um delimitador python para que eu possa fazer algum processamento em lote @Aaron?
Visto
2
@Seen verificar a seção de processamento de automação e batch (p10) no documento de suporte: spatialecology.com/gme/images/SpatialEcologyGME.pdf
Aaron
4

Você precisará criar um polígono de rosca, com o orifício da rosca representando o espaço interno não pontual e alguma extensão espacial representando a área delimitadora da área poligonal.


fonte
Só um adendo: com uma licença de ArcInfo você pode fazer isso com o Erase ferramenta
om_henners
3

Desculpe, eu simplesmente não consigo resistir. Como é sempre bom saber o que está acontecendo sob o capô com algo como GME, aqui está uma solução no código R real.

require(sp)
require(rgeos)

# Create example polygon data
x <- readWKT("POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))")
y <- readWKT("POLYGON ((3 3, 7 3, 7 7, 3 7, 3 3))")

# Calculate difference in polygon geometries to create null polygon
d <- gDifference(x,y)

# Create random sample in non-null polygon
rs <- spsample(d, 20, type="random")  

# Plot results  
plot(d, col="red")
  plot(rs,pch=19,col="black",add=TRUE)

Essa abordagem provavelmente é muito diferente de como o GME faz isso, mas está usando classes espaciais R sp nativas e uma biblioteca de topologia bastante nova, tornando o código muito eficiente. Isso também fornece um exemplo que pode ser facilmente envolvido em um loop for.

Jeffrey Evans
fonte