Criando um número definido de pontos regularmente espaçados no polígono no QGIS

12

Usei a ferramenta de pesquisa "Pontos regulares" para produzir um certo número de pontos dentro de um polígono, mas ela forma uma grade retangular de pontos, e não apenas na forma do polígono. Como preciso de um certo número de pontos no polígono, existe alguma maneira de fazê-lo sem tentativa e erro?

Por exemplo, agora apenas 8 dos 25 pontos que eu quero estão dentro do polígono, mas eu quero 25 pontos, então eu poderia aumentar para 50 pontos e ver quantos então apareceriam dentro do polígono

insira a descrição da imagem aqui

celacanto
fonte
Eu também quero criar regularmente espaçados, definidos # de pontos no polígono no QGIS, existe algum plugin para isso? Eu poderia fazer isso com uma extensão do Arcgis chamada ET GEOWIZARD (pontos uniformes em polígonos), mas eu preciso fazer no QGIS !! Pode me ajudar?
Ana María

Respostas:

3

O que o QGIS está se referindo em termos do limite da camada é na verdade o envelope ou a caixa delimitadora da geometria.

Eu documentei uma solução que provavelmente é a mais próxima que você conseguirá de automatizar isso (sem apresentar uma solicitação de bug / recurso).

O processo funciona com base na razão entre a área dos dois objetos: a geometria do recurso e sua caixa delimitadora).

Verifique os seguintes passos abaixo:

  1. Selecione a camada na qual deseja trabalhar.

  2. Selecione o recurso que você deseja trabalhar. Verifique se nada mais está selecionado.

  3. Execute o seguinte trecho no console do Python.

    layer = qgis.utils.iface.activeLayer()
    features = layer.selectedFeatures()
    feature = features[0]
    geom = feature.geometry()
    env_rect = geom.boundingBox()
    env_geom = QgsGeometry.fromRect(env_rect)
    env_geom.area() / geom.area()

    Certifique-se de pressionar enter, pois a última linha não retornará automaticamente.

  4. Execute a Regular Pointsferramenta novamente, mas insira o número de pontos que você deseja dentro da caixa multiplicado pela saída fornecida pelo seu script.

Na minha amostra abaixo, o resultado que recebi da saída foi um valor de ~ 2. Solicitei a saída de 20 pontos pelo processo em que realmente queria apenas 10. Recebi 8 em troca, o que é bastante próximo. Dependendo da forma real que você está usando, os resultados variam.

Se você fosse tão inclinado, poderia automatizar (recursivamente) o processo de pontos regulares modificando as variáveis ​​até chegar ao número desejado.

Amostra

nagytech
fonte
+1 Sua sugestão está próxima, mas pode falhar na convergência. O que você quer fazer é (a) estimar um espaçamento que fará com que o número desejado de pontos caia dentro do polígono e (b) iterar com um deslocamento aleatório (mostrado na captura de tela).
whuber
Se eu fizer um deslocamento aleatório, não será mais uma grade, certo? Uma grade dentro do polígono com um certo número de pontos é o que eu quero, para provar em toda a área. Ou talvez não seja o que eu quero, porque escolher um ponto de partida e partir daí não é aleatório o suficiente?
celacanth
@coelacanth Talvez você não esteja revelando informações suficientes sobre o seu problema? Qual seria o próximo passo na sua análise? Pode haver outras maneiras de atingir seu objetivo, além de usar uma grade de pontos.
Nagytech 6/08/12
Hmmm, eu sou novo em todo o campo de GPS / GIS e design de pesquisas, então, deixe-me saber se há uma maneira melhor de fazer as coisas. Quero configurar um certo número de áreas de amostragem dentro de um polígono (isto é, uma seção de uma floresta) para amostrar a vegetação. Quero que as áreas sejam espalhadas por todo o site, para que eu possa obter uma representação de todo o site. O que eu quero usar esse recurso é definir os locais dessas áreas de amostragem dentro dos limites. Depois, navegaria até esse ponto usando uma unidade de GPS e coletava meus dados.
Celelantant #
0

Você pode facilmente fazer isso apenas cortando: gere a grade regular de pontos da mesma forma que fez e, em seguida, use Vetor> Ferramentas de geoprocessamento> Clipe, insira a grade de pontos gerada e use o recurso como máscara de clipe.

Rodrigues
fonte
-1

Uma solução simplista é sugerida pela captura de tela. Você pode extrair os polígonos em novas camadas com Vector -> Data Managment Tools -> Split vector layer, importá-los e, em seguida, escolher a camada com o recurso (ID) que deseja como camada de entrada para o amostrador "Pontos regulares".

Se você precisar fazer isso por apenas alguns polígonos, localizá-los e exportá-los separadamente pode ser mais eficiente. Depois de selecionar um, clique com o botão direito do mouse no nome da camada e escolha Save Selection As ..., escolha shapefile, preencha o restante e repita como antes.

EDIT: Como você já possui um único recurso, não consigo pensar em nada mais simples do que usar uma grade mais densa, cruzando-a com o polígono novamente e finalmente removendo todos os pontos extranústicos (mais fácil através da tabela de atributos, já que é fácil centralizar e contagem total).

lynxlynxlynx
fonte
Já existe apenas um polígono no shapefile.
22412 coelacanth
Oh, que chato então (como o fato de criar 20 em vez de 25 pontos). Sugiro que você abra uma solicitação de recurso em hub.qgis.org/projects/quantum-gis/issues - suponho que ele deva ter uma caixa de seleção adicional para usar o limite da camada verdadeira.
Lynxlynxlynx
-2

Aplique uma consulta de definição aos seus polígonos (em 1.8, clique com o botão direito do mouse na camada e escolha Consulta). Em seguida, execute a ferramenta. Remova a consulta.

John
fonte
Como isso ajuda? É o mesmo que fazer uma seleção.
21712 Nathan W
Bastante. Mas isso funciona no QGIS agora, enquanto a seleção não funciona, pelo menos nas minhas máquinas.
John John