Mais

Como dividir um polígono em quadrantes no R / Qgis?


Estou resolvendo o mesmo problema de Como dividir um polígono em quadrantes ?, exceto que estou procurando uma solução em R ou QGis. Então, eu tenho um shapefile de camada de polígono, que infelizmente não exatamente retangular (devido a algumas reprojeções, etc.). Gostaria de dividir os "quadrados" em quadrados menores 2x2, 4x4 ou 8x8, o mais igual possível.

Observe que não estou procurando uma ferramenta para gerar uma nova grade, mas para dividir a que já tenho.


Ftyjkyo

O que acontece se eu dobrar o gatilho de 'entrar no campo de batalha' do Mago Meddling?

Pode haver plantas no lado escuro de um mundo bloqueado por maré?

Que drogas foram usadas na Inglaterra durante a Alta Idade Média?

Um país pode evitar o processo por crimes contra a humanidade negando o que aconteceu?

O novo sabre de luz de Rey já foi visto no cânone ou nas lendas?

A ordem dos eventos importa na atualização bayesiana?

O processador de arquivamento não arquiva

O que Boris Johnson quis dizer quando disse "34 bilhões extras indo para o NHS"

Qual é a causa mais provável de avaliações curtas, rápidas e inúteis?

Gere pontos para movimento suave entre dois pontos dados

Ao fazer iogurte, por que as bactérias ruins não crescem também?

Meu chefe diz: "Isso nos ajudará a ver melhor a utilização de seus serviços." Isso significa que meu trabalho está terminando nesta organização?

Qual é o melhor algoritmo de hash de senha no .NET Core?

É possível observar detritos espaciais com binóculos?

podar subdomínios de outros domínios em um arquivo usando script (bash, awk ou semelhante)

Por que um chip Intel 8080 seria destruído se +12 V fosse conectado antes de -5 V?

O que é esse inseto vermelho que infesta algumas árvores no sul da Alemanha?

Qual é a diferença entre uma ação e uma ação?

Planeta com 90% de água ou mais?

Qual é a diferença entre "wie" e "nach" em "Klingt wie / nach."

Dividindo polígonos na parte mais estreita usando R?

Removendo lascas após dividir um polígono com um lineMapping Rússia - Int'l dateline splitting polygonComo mesclar polígonos únicos em polígonos de várias partes por distâncias máximas? Cortar polígono usando linha - cortador, cortar () - usando ArcPy? QGIS dividir linha em segmentos em polygonSplit polígonos baseados na camada raster e tamanho de destino definidoDividindo polígonos no ponto médio usando ArcPy? Dividindo polígonos com grade de linha no QGIS? Identificando polígonos em duas camadas separadas com uma grande (& # 6285%) sobreposiçãoPreenchendo ou dividindo polígonos proporcionalmente com base em variáveis ​​usando QGIS?

Eu tenho um conjunto de dados de polígonos como este:

Gostaria de dividir esses polígonos em partes separadas em sua localização mais estreita (se houver). Por exemplo, os dois polígonos pequenos não devem ser divididos. Portanto, eu precisaria identificar locais estreitos e dividir o polígono ali.

Como isso poderia ser feito usando R?

Por que os dois polígonos menores não deveriam ser divididos? Eles devem ter um ponto mais estreito se tiverem qualquer largura variável. O canto inferior direito parece que o mais estreito cortaria a "bolha" mais à esquerda.

Mas o polígono pequeno tem uma parte mais estreita, como você determinou que eles não deveriam se dividir (área mínima, parte mais estreita menor que X, outro).

Isso é verdade & # 8211 talvez algum tipo de complexidade do polígono e um critério de tamanho deva determinar se um polígono é dividido ou não.

Claro, mas se você não conhecesse suas próprias necessidades, como poderíamos propor uma solução?

Um algoritmo pode ser encontrar o menor buffer de distância negativa (isto é, interno) que divide o polígono em dois polígonos, e então usar isso de alguma forma para decidir onde dividir o polígono. Eu não resolvi isso totalmente ainda.

Eu tenho um conjunto de dados de polígonos como este:

Gostaria de dividir esses polígonos em partes separadas em sua localização mais estreita (se houver). Por exemplo, os dois polígonos pequenos não devem ser divididos. Portanto, eu precisaria identificar locais estreitos e dividir o polígono ali.

Como isso poderia ser feito usando R?

Por que os dois polígonos menores não deveriam ser divididos? Eles devem ter um ponto mais estreito se tiverem qualquer largura variável. O canto inferior direito parece que o mais estreito cortaria a "bolha" mais à esquerda.

Mas o polígono pequeno tem uma parte mais estreita, como você determinou que eles não deveriam se dividir (área mínima, parte mais estreita menor que X, outro).

Isso é verdade & # 8211 talvez algum tipo de complexidade do polígono e um critério de tamanho deva determinar se um polígono é dividido ou não.

Claro, mas se você não conhecesse suas próprias necessidades, como poderíamos propor uma solução?

Um algoritmo pode ser encontrar o menor buffer de distância negativa (isto é, interno) que divide o polígono em dois polígonos, e então usar isso de alguma forma para decidir onde dividir o polígono. Eu não resolvi isso totalmente ainda.

Eu tenho um conjunto de dados de polígonos como este:

Gostaria de dividir esses polígonos em partes separadas em sua localização mais estreita (se houver). Por exemplo, os dois polígonos pequenos não devem ser divididos. Portanto, eu precisaria identificar locais estreitos e dividir o polígono ali.

Como isso poderia ser feito usando R?

Eu tenho um conjunto de dados de polígonos como este:

Gostaria de dividir esses polígonos em partes separadas em sua localização mais estreita (se houver). Por exemplo, os dois polígonos pequenos não devem ser divididos. Portanto, eu precisaria identificar locais estreitos e dividir o polígono ali.

Como isso poderia ser feito usando R?

Por que os dois polígonos menores não deveriam ser divididos? Eles devem ter um ponto mais estreito se tiverem qualquer largura variável. O canto inferior direito parece que o mais estreito cortaria a "bolha" mais à esquerda.

Mas o polígono pequeno tem uma parte mais estreita, como você determinou que eles não deveriam se dividir (área mínima, parte mais estreita menor que X, outro).

Isso é verdade & # 8211 talvez algum tipo de complexidade do polígono e um critério de tamanho deva determinar se um polígono é dividido ou não.

Claro, mas se você não conhecesse suas próprias necessidades, como poderíamos propor uma solução?

Um algoritmo pode ser encontrar o menor buffer de distância negativa (isto é, interno) que divide o polígono em dois polígonos, e então usar isso de alguma forma para decidir onde dividir o polígono. Eu não resolvi isso totalmente ainda.

Por que os dois polígonos menores não deveriam ser divididos? Eles devem ter um ponto mais estreito se tiverem qualquer largura variável. O canto inferior direito parece que o mais estreito cortaria a "bolha" mais à esquerda.

Mas o polígono pequeno tem uma parte mais estreita, como você determinou que eles não deveriam se dividir (área mínima, parte mais estreita menor que X, outro).

Isso é verdade & # 8211 talvez algum tipo de complexidade do polígono e um critério de tamanho deva determinar se um polígono é dividido ou não.

Claro, mas se você não conhecesse suas próprias necessidades, como poderíamos propor uma solução?

Um algoritmo pode ser encontrar o menor buffer de distância negativa (isto é, interno) que divide o polígono em dois polígonos, e então usar isso de alguma forma para decidir onde dividir o polígono. Eu não resolvi isso totalmente ainda.

Por que os dois polígonos menores não deveriam ser divididos? Eles devem ter um ponto mais estreito se tiverem qualquer largura variável. O canto inferior direito parece que o mais estreito cortaria a "bolha" mais à esquerda.

Por que os dois polígonos menores não deveriam ser divididos? Eles devem ter um ponto mais estreito se tiverem qualquer largura variável. O canto inferior direito parece que o mais estreito cortaria a "bolha" mais à esquerda.

Mas o polígono pequeno tem uma parte mais estreita, como você determinou que eles não deveriam se dividir (área mínima, parte mais estreita menor que X, outro).

Mas o polígono pequeno tem uma parte mais estreita, como você determinou que eles não deveriam se dividir (área mínima, parte mais estreita menor que X, outro).

Isso é verdade & # 8211 talvez algum tipo de complexidade do polígono e um critério de tamanho deva determinar se um polígono é dividido ou não.

Isso é verdade & # 8211 talvez algum tipo de complexidade do polígono e um critério de tamanho devam determinar se um polígono é dividido ou não.

Claro, mas se você não conhecesse suas próprias necessidades, como poderíamos propor uma solução?

Claro, mas se você não conhecesse suas próprias necessidades, como poderíamos propor uma solução?

Um algoritmo pode ser encontrar o menor buffer de distância negativa (isto é, interno) que divide o polígono em dois polígonos, e então usar isso de alguma forma para decidir onde dividir o polígono. Eu não resolvi isso totalmente ainda.

Um algoritmo pode ser encontrar o menor buffer de distância negativa (isto é, interno) que divide o polígono em dois polígonos, e então usar isso de alguma forma para decidir onde dividir o polígono. Eu não resolvi isso totalmente ainda.


Hfrhyu

“A que horas.” Ou “A que horas.” - o que é mais gramaticalmente correto?

Geografia no nível do pixel

Alternativas realistas para a poeira: o que mais poderia alimentar uma flor de plâncton?

Como lidar com o medo de assumir dependências

É possível obter pontuação negativa?

A diferença entre as marcas de diálogo

Como a inclinação da órbita do Skylab foi escolhida?

Por que os políticos do Reino Unido aparentemente ignoram as pesquisas de opinião sobre o Brexit?

Situação extrema e inaceitável e não posso ir ao trabalho amanhã de manhã

Qual poderia ser a fonte de alimentação certa para uma motosserra gigante descartável com vida útil de 15 segundos?

Como responder questionando "você está parando" quando eu não quero que eles suspeitem

O que significa "explns sndry" em um dos guias do Mochileiro?

Como mudar os limites da integração

Limitar a quantidade de RAM que o Mathematica pode acessar?

Morfismos distintos entre curvas podem induzir o mesmo morfismo na cohomologia singular?

"Para partir os cabelos" vs "Para ser pedante"

Por que você pode ouvir um Amstrad CPC funcionando?

Sobre a loucura dos reis como argumento contra a Monarquia

As tomadas USB nas tomadas de parede estão ativas o tempo todo, mesmo quando o interruptor está desligado?

De onde se origina a "explosão de brilho" da Arma Sagrada?

O gravador de dados de voo é apagado após cada voo?

Existe uma maneira de cortar uma camada com uma forma de outra camada em `sf`?

Os resultados da pesquisa Stack Overflow Developer Survey de 2019 são InHow para cortar uma camada vetorial de linhas em uma camada de polígono no QGIS? Cortar um raster com uma camada de forma falha ao retornar um raster vazio (nan-0) Por que o ArcMap não está cortando para o polígono? & # 8220Dividir os recursos selecionados com a linha selecionada de outra camada & # 8221Clipar o arquivo de forma com o arquivo de forma Remover os pontos que ficam fora dos polígonos selecionados usando o QGIS? A saída da ferramenta de corte não segue a forma da extensão de saída e os valores raster são simplificadosClipar rasters e vetores simultaneamente no QGIS 2.18 ferramentas de recorte e / ou interseção que me dão resultados errados no qgis 2.18.16 Não é possível recortar um raster excluindo conjunto de dados

Eu gostaria de obter os polígonos verdes que cruzam (ou se sobrepõem) ao polígono delineado em vermelho (veja a imagem abaixo).

Tentei sf :: st_intersection () mas o polígono em amarelo (sim, apenas um polígono) não foi levado em consideração.

No QGIS, a ferramenta de clipe (corte) fez exatamente o que eu queria. Existe uma ferramenta semelhante em R para cortar uma camada usando outra camada?

Tentei usar sf :: st_overlaps () mas a matriz retornada era maior do que minha tabela de recursos. sf :: st_crops () também não cabe, pois desejo cortar em uma forma específica.

O polígono amarelo não "se encaixa" no contorno vermelho. Ele se cruza ou se sobrepõe. "Ajustar-se a" para mim significa "está totalmente dentro". Esses são polígonos de aparência muito complexa e é possível que alguma restrição de validade não seja válida e não podemos dizer isso sem seus dados.

Obrigado por seus comentários. Estou bem ciente de que o polígono amarelo não se encaixa, quero selecioná-lo (por uma interseção) ou obter a parte dentro do polígono delineado em vermelho (cortando-o). Na verdade, sf :: st_intersects () perde o polígono amarelo (e a ferramenta de geoprocessamento QGIS também). Não sou um falante nativo de inglês, então posso ter usado mal a palavra "ajuste". Na verdade, comecei por uma interseção por hábito, e porque não pensei que haveria polígonos grandes como este, mas cortar é mais do que preciso neste caso de uso. Então minha pergunta ainda é válida.

& # 8211 & # 160Nicolas Roelandt
5 de abril às 7h25

Editei minha pergunta para remover a palavra mal utilizada.

& # 8211 & # 160Nicolas Roelandt
5 de abril às 7h27

Estou surpreso que sf :: st_intersection () não está funcionando: geocompr.robinlovelace.net/figures/venn-clip-1.png Você precisa cortar a subseção verde dentro do contorno vermelho, ou tanto o amarelo quanto o verde juntos? Executar um st_union () antes de recortar funcionaria para você?

& # 8211 & # 160spacedSparking
5 de abril às 8:11

@spacedSparking, também estou surpreso. Eu verifiquei a validade dos polígonos e todos são validos. Na verdade o verde e o amarelo estão na mesma camada, apenas destaquei o polígono problemático.

& # 8211 & # 160Nicolas Roelandt
5 de abril às 8:53

Eu gostaria de obter os polígonos verdes que cruzam (ou se sobrepõem) ao polígono delineado em vermelho (veja a imagem abaixo).

Tentei sf :: st_intersection () mas o polígono em amarelo (sim, apenas um polígono) não foi levado em consideração.

No QGIS, a ferramenta de clipe (corte) fez exatamente o que eu queria. Existe uma ferramenta semelhante em R para cortar uma camada usando outra camada?

Tentei usar sf :: st_overlaps () mas a matriz retornada era maior do que minha tabela de recursos. sf :: st_crops () também não cabe, pois desejo cortar em uma forma específica.

O polígono amarelo não "se encaixa" no contorno vermelho. Ele se cruza ou se sobrepõe. "Ajustar-se a" para mim significa "está totalmente dentro". Esses são polígonos de aparência muito complexa e é possível que alguma restrição de validade não seja válida e não podemos dizer isso sem seus dados.

Obrigado por seus comentários. Estou bem ciente de que o polígono amarelo não se encaixa, quero selecioná-lo (por uma interseção) ou obter a parte dentro do polígono delineado em vermelho (cortando-o). Na verdade, sf :: st_intersects () perdeu o polígono amarelo (e a ferramenta de geoprocessamento QGIS também). Não sou um falante nativo de inglês, então posso ter usado mal a palavra "ajuste". Na verdade, comecei por uma interseção por hábito, e porque não pensei que haveria grandes polígonos como este, mas cortar é mais do que preciso neste caso de uso. Então, minha pergunta ainda é válida.

& # 8211 & # 160Nicolas Roelandt
5 de abril às 7h25

Editei minha pergunta para remover a palavra mal utilizada.

& # 8211 & # 160Nicolas Roelandt
5 de abril às 7h27

Estou surpreso que sf :: st_intersection () não está funcionando: geocompr.robinlovelace.net/figures/venn-clip-1.png Você precisa cortar a subseção verde dentro do contorno vermelho, ou tanto o amarelo quanto o verde juntos? Executar um st_union () antes de recortar funcionaria para você?

& # 8211 & # 160spacedSparking
5 de abril às 8:11

@spacedSparking, também estou surpreso. Eu verifiquei a validade dos polígonos e todos são validos. Na verdade o verde e o amarelo estão na mesma camada, apenas destaquei o polígono problemático.

& # 8211 & # 160Nicolas Roelandt
5 de abril às 8:53

Eu gostaria de obter os polígonos verdes que cruzam (ou se sobrepõem) ao polígono delineado em vermelho (veja a imagem abaixo).

Tentei sf :: st_intersection () mas o polígono em amarelo (sim, apenas um polígono) não foi levado em consideração.

No QGIS, a ferramenta de clipe (corte) fez exatamente o que eu queria. Existe uma ferramenta semelhante em R para cortar uma camada usando outra camada?

Tentei usar sf :: st_overlaps () mas a matriz retornada era maior do que minha tabela de recursos. sf :: st_crops () também não cabe, pois desejo cortar em uma forma específica.

Eu gostaria de obter os polígonos verdes que cruzam (ou se sobrepõem) ao polígono delineado em vermelho (veja a imagem abaixo).

Tentei sf :: st_intersection () mas o polígono em amarelo (sim, apenas um polígono) não foi levado em consideração.

No QGIS, a ferramenta de clipe (corte) fez exatamente o que eu queria. Existe uma ferramenta semelhante em R para cortar uma camada usando outra camada?

Tentei usar sf :: st_overlaps () mas a matriz retornada era maior do que minha tabela de recursos. sf :: st_crops () também não cabe, pois desejo cortar em uma forma específica.

O polígono amarelo não "se encaixa" no contorno vermelho. Ele se cruza ou se sobrepõe. "Ajustar-se a" para mim significa "está totalmente dentro". Esses são polígonos de aparência muito complexa e é possível que alguma restrição de validade não seja válida e não podemos dizer isso sem seus dados.

Obrigado por seus comentários. Estou bem ciente de que o polígono amarelo não se encaixa, quero selecioná-lo (por uma interseção) ou obter a parte dentro do polígono delineado em vermelho (cortando-o). Na verdade, sf :: st_intersects () perdeu o polígono amarelo (e a ferramenta de geoprocessamento QGIS também). Não sou um falante nativo de inglês, então posso ter usado mal a palavra "ajuste". Na verdade, comecei por uma interseção por hábito, e porque não pensei que haveria grandes polígonos como este, mas cortar é mais do que preciso neste caso de uso. Então, minha pergunta ainda é válida.

& # 8211 & # 160Nicolas Roelandt
5 de abril às 7h25

Editei minha pergunta para remover a palavra mal utilizada.

& # 8211 & # 160Nicolas Roelandt
5 de abril às 7h27

Estou surpreso que sf :: st_intersection () não está funcionando: geocompr.robinlovelace.net/figures/venn-clip-1.png Você precisa cortar a subseção verde dentro do contorno vermelho, ou tanto o amarelo quanto o verde juntos? Executar um st_union () antes de recortar funcionaria para você?

& # 8211 & # 160spacedSparking
5 de abril às 8:11

@spacedSparking, também estou surpreso. Eu verifiquei a validade dos polígonos e todos são validos. Na verdade o verde e o amarelo estão na mesma camada, apenas destaquei o polígono problemático.

& # 8211 & # 160Nicolas Roelandt
5 de abril às 8:53

O polígono amarelo não "se encaixa" no contorno vermelho. Ele se cruza ou se sobrepõe. "Ajustar-se a" para mim significa "está totalmente dentro". Esses são polígonos de aparência muito complexa e é possível que alguma restrição de validade não seja válida e não podemos dizer isso sem seus dados.

Obrigado por seus comentários. Estou bem ciente de que o polígono amarelo não se encaixa, quero selecioná-lo (por uma interseção) ou obter a parte dentro do polígono delineado em vermelho (cortando-o). Na verdade, sf :: st_intersects () perde o polígono amarelo (e a ferramenta de geoprocessamento QGIS também). Não sou um falante nativo de inglês, então posso ter usado mal a palavra "ajuste". Na verdade, comecei por uma interseção por hábito, e porque não pensei que haveria grandes polígonos como este, mas cortar é mais do que preciso neste caso de uso. Então, minha pergunta ainda é válida.

& # 8211 & # 160Nicolas Roelandt
5 de abril às 7h25

Editei minha pergunta para remover a palavra mal utilizada.

& # 8211 & # 160Nicolas Roelandt
5 de abril às 7h27

Estou surpreso que sf :: st_intersection () não está funcionando: geocompr.robinlovelace.net/figures/venn-clip-1.png Você precisa cortar a subseção verde dentro do contorno vermelho, ou tanto o amarelo quanto o verde juntos? Executar um st_union () antes de recortar funcionaria para você?

& # 8211 & # 160spacedSparking
5 de abril às 8:11

@spacedSparking, também estou surpreso. Eu verifiquei a validade dos polígonos e todos são validos. Na verdade o verde e o amarelo estão na mesma camada, apenas destaquei o polígono problemático.

& # 8211 & # 160Nicolas Roelandt
5 de abril às 8:53

O polígono amarelo não "se encaixa" no contorno vermelho. Ele se cruza ou se sobrepõe. "Ajustar-se a" para mim significa "está totalmente dentro". Esses são polígonos de aparência muito complexa e é possível que alguma restrição de validade não seja válida e não podemos dizer isso sem seus dados.

O polígono amarelo não "se encaixa" no contorno vermelho. Ele se cruza ou se sobrepõe. "Ajustar-se a" para mim significa "está totalmente dentro". Esses são polígonos de aparência muito complexa e é possível que alguma restrição de validade não seja válida e não podemos dizer isso sem seus dados.

Obrigado por seus comentários. Estou bem ciente de que o polígono amarelo não se encaixa, quero selecioná-lo (por uma interseção) ou obter a parte dentro do polígono delineado em vermelho (cortando-o). Na verdade, sf :: st_intersects () perdeu o polígono amarelo (e a ferramenta de geoprocessamento QGIS também). Não sou um falante nativo de inglês, então posso ter usado mal a palavra "ajuste". Na verdade, comecei por uma interseção por hábito, e porque não pensei que haveria grandes polígonos como este, mas cortar é mais do que preciso neste caso de uso. Então, minha pergunta ainda é válida.

& # 8211 & # 160Nicolas Roelandt
5 de abril às 7h25

Obrigado por seus comentários. Estou bem ciente de que o polígono amarelo não se encaixa, quero selecioná-lo (por uma interseção) ou obter a parte dentro do polígono delineado em vermelho (cortando-o). Na verdade, sf :: st_intersects () perdeu o polígono amarelo (e a ferramenta de geoprocessamento QGIS também). Não sou um falante nativo de inglês, então posso ter usado mal a palavra "ajuste". Na verdade, comecei por uma interseção por hábito, e porque não pensei que haveria polígonos grandes como este, mas cortar é mais do que preciso neste caso de uso. Então, minha pergunta ainda é válida.


Um método de índice espacial Quadtree com relações de inclusão e sua aplicação na atualização do banco de dados de cobertura de terra

O banco de dados de Landcover geralmente tem vários polígonos não uniformes que contêm milhares de orifícios e até orifícios de aninhamento. Durante a atualização incremental, o novo polígono alterado é usado para cortar os polígonos complexos do estado de base e pode cruzar alguns orifícios nos últimos. As ferramentas de atualização tradicionais, principalmente algoritmos de recorte, devem atravessar todos os buracos de polígonos complexos, o que afeta seriamente a eficiência da atualização. Para resolver o problema, este artigo aprimora o índice espacial quadtree considerando as relações de inclusão entre polígonos. Nesse método, os polígonos são divididos em duas categorias: polígonos de interseção (interseção dos eixos do quadrante) e polígonos desarticulados (desarticulação dos eixos do quadrante). Os polígonos que se cruzam são armazenados nos nós raiz em diferentes níveis, enquanto os polígonos desarticulados são armazenados nos nós folha na árvore de índice. Em seguida, o autor apresentou a construção do índice espacial e a tabela de relações de inclusão, e explicou as operações do índice espacial quadtree aprimorado, a saber, inserção, exclusão e consulta. Em seguida, o método proposto foi aplicado à atualização incremental do banco de dados de cobertura vegetal, e comparado com o índice MX-CIF quadtree por meio de experimentos. Os resultados mostram que a eficiência de atualização do nosso método foi várias vezes melhor do que a do método contrastivo, e que a eficiência do nosso método aumentou com o volume e a complexidade dos dados.

índice espacial, banco de dados de cobertura vegetal, relação de inclusão, quadtree, atualização incremental

Nos últimos anos, viu-se o surgimento de muitos bancos de dados de cobertura de terras, a saber, GlobeLand30 [1]. Os bancos de dados devem ser atualizados regularmente para refletir as mudanças contínuas no uso da terra e no meio ambiente do mundo real. Portanto, o foco do tratamento de dados de cobertura vegetal mudou da geração de dados para a manutenção de dados, e uma atenção cada vez maior foi direcionada ao problema de atualização. A estratégia de atualização comum é a atualização incremental, ou seja, apenas renovar os dados que refletem as mudanças do mundo real [2]. Durante a atualização incremental, um novo polígono alterado geralmente tem interseções 2D (por exemplo, sobreposição, igual e dentro) com vários polígonos existentes. Esses polígonos devem ser identificados para obter a atualização automática. Se eles forem polígonos complexos (ou seja, orifícios de polígonos, mesmo orifícios de aninhamento), que são comuns em bancos de dados de cobertura vegetal de dados vetoriais, então é necessário determinar se os orifícios estão dentro das interseções 2D. Os furos dentro e fora das intersecções são respectivamente chamados de furos envolvidos e furos não envolvidos. As ferramentas de atualização tradicionais, principalmente algoritmos de recorte, devem atravessar todos os buracos de polígonos complexos, o que afeta seriamente a eficiência da atualização. Os métodos de índice espacial atuais, agrupados pela caixa delimitadora mínima (MBB) para minimizar o tamanho do arquivo de índice e aumentar a eficiência do filtro, não podem identificar os furos não envolvidos rapidamente. Isso porque esses métodos armazenam apenas o MBB do anel externo do polígono complexo, não apresentando a relação de inclusão entre o polígono complexo e seus orifícios.

O índice espacial é usado no sistema de informações geográficas (GIS) para fazer operações geométricas refinadas que visam um número limitado de objetos. Métodos populares de índice espacial incluem Quadtree [3-4], R-tree [5-8], R + tree [9], R * tree [10], Grid (índice espacial) [11], Hilbert R-tree [12 ], kd tree [13] e quadtree [14]. Um exemplo de polígonos que se cruzam é ​​dado na Figura 1, onde C (Figura 1a) é um polígono complexo com mais de 1.000 buracos, denotado como B, D, E, F ..., P1 (Figura 1b) é um novo polígono alterado. A interseção 2D entre P1 e C cobre apenas os furos B e F. Se tratado pelos métodos de índice espacial existentes, a operação geométrica refinada deve ser realizada entre P1 e cada um dos 1.000 furos de C. Juntamente com o alto custo da operação, é extremamente complexo e ineficiente identificar os polígonos com os métodos de índice espacial existentes.

O índice espacial Quadtree é dinâmico e eficiente em espaço de memória e tempo de resposta. Ele tem sido amplamente adotado em sistemas de gerenciamento de banco de dados espaciais comerciais (DBMSs) [15]. Neste artigo, um índice espacial quadtree melhorado é desenhado com base na relação de inclusão entre o polígono complexo e seus furos, com o objetivo de identificar os furos não envolvidos e realizar uma atualização incremental eficiente. Neste método, os polígonos são divididos em duas categorias: polígonos de interseção (interseção dos eixos do quadrante) e polígonos desarticulados (desarticulação dos eixos do quadrante). Os polígonos que se cruzam são armazenados nos nós raiz em diferentes níveis, enquanto os polígonos desarticulados são armazenados nos nós folha na árvore de índice.

Figura 1. Um exemplo de polígonos que se cruzam na atualização incremental de um banco de dados de cobertura de solo


Suponho que você esteja familiarizado com alguma trigonometria básica. Se você tem um círculo de centro $ C = (x_C, y_C) $ e raio $ r $, então cada ponto do círculo pode ser escrito como $ P = (x_C + r cos theta, y_C + r sin theta) $, onde $ theta $ é o ângulo formado pela linha $ CP $ com o eixo $ x $.

Seu primeiro vértice $ P_0 = (x_0, y_0) $ também pode ser escrito nessa forma, portanto, corresponde a algum ângulo $ theta_0 $. Como o ângulo central entre dois vértices consecutivos é $ 2 pi / n $, os outros vértices corresponderão aos ângulos $ theta_1 = theta_0 + 2 pi / n $, $ theta_2 = theta_0 + 4 pi / n $, $ theta_3 = theta_0 + 6 pi / n $ e assim por diante. Uma vez que você conhece $ theta_0 $, é fácil escrever as coordenadas dos outros vértices.

Finalmente, para obter $ theta_0 $ observe que $ x_0 = x_C + r cos theta_0 $ e $ y_0 = y_C + r sin theta_0 $, de modo que: $ tan theta_0 =. $

Para verificar se dois pontos $ A $ e $ B $ no círculo são os vértices de um $ n $ -polígono, pode-se calcular $ cos ( theta_A- theta_B) = cos theta_A cos theta_B + sin theta_A sin theta_B =+ $ e $ sin ( theta_A- theta_B) = sin theta_A cos theta_B- cos theta_A sin theta_B =-. $ Destes você pode obter $ theta_A- theta_B $ e verificar se é um múltiplo de $ 2 pi / n $.


Um sistema de informação geográfica usando quadtrees ☆

Descrevemos o estado atual de um esforço de pesquisa em andamento para desenvolver um sistema de informações geográficas baseado em quadtrees. Codificações Quadtree foram construídas para recursos de área, ponto e linha para uma pequena área no norte da Califórnia. A codificação usada foi uma variante do quadtree linear. A implementação usou uma árvore B para organizar a lista de folhas e permitir o gerenciamento de árvores muito grandes para caber na memória central. Várias funções de consulta de banco de dados foram implementadas, incluindo operações de conjunto, cálculos de propriedade de região, funções de edição de mapa e subconjunto de mapa e funções de janela. Um usuário do sistema pode acessar o banco de dados por meio de um idioma de consulta semelhante ao inglês.


Parâmetros

Os recursos do polígono a serem subdivididos.

A classe de recurso de saída de polígonos subdivididos.

Especifica o método que será usado para dividir os polígonos.

  • Número de partes iguais - os polígonos serão divididos igualmente em várias partes. Este é o padrão.
  • Áreas iguais - os polígonos serão divididos em um número especificado de partes de uma determinada área e uma parte restante.

O número de áreas nas quais o polígono será dividido se o método de subdivisão Número de partes iguais for especificado.

A área das partes iguais se o método de subdivisão de áreas iguais for especificado. Se a área de destino for maior do que a área do polígono de entrada, o polígono não será subdividido.

Este parâmetro ainda não é compatível.

O ângulo que será usado para desenhar as linhas que dividem o polígono. O padrão é 0.

Especifica como os polígonos serão divididos.

  • Tiras - os polígonos serão divididos em tiras. Este é o padrão.
  • Blocos empilhados - os polígonos serão divididos em blocos empilhados.

Os recursos do polígono a serem subdivididos.

A classe de recurso de saída de polígonos subdivididos.

Especifica o método que será usado para dividir os polígonos.

  • NUMBER_OF_EQUAL_PARTS - Os polígonos serão divididos igualmente em várias partes. Este é o padrão.
  • EQUAL_AREAS - os polígonos serão divididos em um número especificado de partes de uma determinada área e uma parte restante.

O número de áreas nas quais o polígono será dividido se o método de subdivisão NUMBER_OF_EQUAL_PARTS for especificado.

A área das partes iguais se o método de subdivisão EQUAL_AREAS for especificado. Se target_area for maior do que a área do polígono de entrada, o polígono não será subdividido.

Este parâmetro ainda não é compatível.

O ângulo que será usado para desenhar as linhas que dividem o polígono. O padrão é 0.

Especifica como os polígonos serão divididos.

  • TIRAS - Os polígonos serão divididos em tiras. Este é o padrão.
  • STACKED_BLOCKS - Os polígonos serão divididos em blocos empilhados.

Amostra de código

O seguinte script de janela Python demonstra como usar a ferramenta SubdividePolygon no modo imediato.


Capítulo 13 Transforme seus dados de mapa

No Capítulo 7: Mapeie seus dados, introduzimos conceitos básicos sobre mapas da web interativos, que são compostos de diferentes camadas de dados. Quando os usuários exploram um mapa interativo, eles geralmente clicam na camada superior, que geralmente exibe alguma combinação de pontos, polilinhas e polígonos, no topo de um conjunto contínuo de blocos de mapas base que são construídos a partir de dados raster ou vetoriais. Quer você crie mapas com ferramentas de arrastar e soltar, como Datawrapper, ou personalize os modelos de código de mapa do Leaflet, pode ser necessário transformar os dados para trabalhar com um desses tipos de camadas de mapa.

Neste capítulo, vamos nos aprofundar no tópico de dados geoespaciais e seus diferentes formatos, como GeoJSON, o formato de padrão aberto mais comumente usado neste livro. Você aprenderá como encontrar e extrair arquivos de limites geográficos neste formato da plataforma OpenStreetMap de origem coletiva. Além disso, mostraremos como converter ou criar seus próprios dados de camada de mapa de nível superior usando a ferramenta GeoJson.io e como editar essas camadas com dados de planilha usando a ferramenta Mapshaper. Além disso, você também aprenderá como georreferenciar uma imagem de mapa estático de alta qualidade e transformá-la em blocos de mapas interativos usando a ferramenta Map Warper. Todas essas ferramentas gratuitas de geodados baseadas na web são fáceis de aprender e, em muitos casos, substituem a necessidade de sistemas de informação geográfica mais caros ou complexos, como o ArcGIS proprietário e os aplicativos de desktop QGIS de código aberto. Por fim, concluiremos com estratégias para geocodificar em massa grandes lotes de dados de endereço e pivotar pontos em dados de polígono, o que permite exibir essas informações em mapas coropléticos. Ao final deste capítulo, você deve se sentir muito mais confiante para navegar no mundo um tanto opressor dos dados geoespaciais.

Let’s start with a general overview of geospatial data, and introduce you to various file formats to ensure you are ready to create, use, and share map data.

Buy the print book at Amazon - Barnes & Noble - Bookshop - Powell's - or your local bookstore.
Or begin a 30-day free trial to all books and digital content on the O'Reilly online learning platform.
Share your feedback about the book by tagging @handsondataviz on Twitter or contact the authors.


Bumped to the homepage by Community ♦ yesterday

This question has answers that may be good or bad the system has marked it active so that they can be reviewed.

What's a "sna"? The School Nutrition Association? The ticker symbol of Snap-on Incorporated?

Depending on the setup of your data, this may help: gis.stackexchange.com/questions/295022/…

I have a GeoPackage that includes series of lines, each line corresponds to the itinerary of a person from point A to point B. I would like to know how to calculate the overlapping of lines (the superimposition has been made by the sna) and how to get to know which one are the most used itineraries.

I've already tried to use QChainage to get a heat map but I wondered if there was another way.

I have a GeoPackage that includes series of lines, each line corresponds to the itinerary of a person from point A to point B. I would like to know how to calculate the overlapping of lines (the superimposition has been made by the sna) and how to get to know which one are the most used itineraries.

I've already tried to use QChainage to get a heat map but I wondered if there was another way.


3 respostas 3

One idea is to use the similarity with polar coordinates in the transformation you want. The idea relies on the fact that you need to split the transformation in four cases, one for each of the quadrants of the joystick position. I will do the first quadrant ($x ge 0, y ge 0$), and then it's easy to apply the same concept to the other quadrants.

The first quadrant is the home of the coordinates $(0,0), (0,1), (1,0)$ and $(1,1)$, and they have the corresponding motor velocities $(0,0), (1,1), (1,-1)$ and $(1,0)$ respectively. Denote the joystick position $(x,y)$ and the motor velocities $(alpha,eta)$. See the below picture of the first quadrant, where the desired $(alpha,eta)$ velocities are written in the $(x,y)$ coordinate system.

Now, if the $(x,y)$ was actually a circular area instead of a square, $alpha$ would be the radius of $(x,y)$ and $eta$ would be related to the angle of the $(x,y)$ vector relative to the x-axis. Let's assume a circle for now and correct for it later. As noted, $alpha$ corresponds to the radius:

We want that the angle $varphi = 0$ should give $eta = -1$ and $varphi = frac2$ should result in $eta = 1$. Hence, $eta = sinleft(2varphi - frac2 ight)$

But $varphi = arctanfrac$, so the expression simplifies to

Now we have a way to transform $(x,y)$ to $(alpha,eta)$, but we need to scale $alpha$ to account for the fact that it is a square area that we are transforming, and not a circular one. For example, with the current formulas, $(1,1) ightarrow (sqrt2,0)$, where $alpha$ needs to be scaled by $frac1$.

Generally, the point $A$ in the below picture needs to be moved to $B$.

The scaling factor for $alpha$ can then be expressed as follows

$egin s = cosvarphi & 0 le varphi < frac4 s = cosleft(frac2-varphi ight) & frac4 le varphi le frac2 end$

Now, the final simplified transformation becomes:

$egin alpha = x, & 0 le arctanfrac < frac4 alpha = y, & frac4 le arctanfrac le frac2 end eta = frac$

I realize now that this was an awful lot of writing to get to very simple expressions for $alpha$, but having written all of this, I'll let i stand.

Now, the same reasoning can be made in the other three quadrants, where it's just a matter of identifying which of the $alpha$ or $eta$ that should take the "radius" and "angle" part, and to decide on the sign.


Assista o vídeo: Cómo dividir un polígono (Outubro 2021).