Exibindo linhas geradas fora da extensão do mapa usando o QGIS?


12

Eu desenhei um mapa de fluxo OD usando o gerador de geometria QGIS, usando a seguinte expressão:

make_line( centroid( $geometry ),
centroid( geometry( get_feature( 'Layer2', 'Attribute1', attribute(
           $currentfeature, 'Attribute2') ) ) ) )

Fiz tudo bem, definindo a largura das minhas linhas de acordo com os atributos.

Mas quando amplio o zoom para o "hub", as linhas vinculadas a lugares fora da tela do mapa não são exibidas. Eu acho que é porque os recursos não devem aparecer no mapa.

Tentei desmarcar a opção "Recortar recursos até a extensão da tela" no menu avançado, tanto no nível "Gerador de geometria" quanto nos níveis de "Linha", mas ainda não aparece.

Quando ampliado no hub

Quando não zumbido

Eu gostaria que todas as minhas linhas aparecessem, mesmo quando ampliadas no hub.


Isso não será útil ... mas eu recebo o mesmo problema com a abordagem de mapeamento de fluxo do Underdark. Deve ser algo sobre a forma como a geometria densa é renderizada ... apenas a sugestão é brincar com a largura do atributo para o mapa do nível local ... diminuir as larguras?
Andrew Tice

Pode ser que você faça o upload de seus dados (shp ...) para poder replicar suas etapas e tentar obter uma resposta.
César Arquero 21/11

1
Shapefile vem aqui: IGN e a tabela associada do INSEE
mamouthautapis

Talvez a segmentação da linha possa ser um hack para que ela apareça no mapa, se as linhas forem mostradas apenas se ambas as extremidades estiverem próximas da extensão do mapa. A ferramenta Grass 'v.split.length' talvez faça o trabalho.
Julian

1
Esse é o mesmo problema que eu tive (se é que fornece uma maneira simples de entender esse problema - se não, me ignore): eu queria mostrar um conjunto de dados de pontos com todo o conjunto de pontos gerados deslocados 300 km leste e 600 km norte em comparação com os pontos reais. Funciona - mas apenas quando diminui o zoom para que os pontos originais fiquem dentro da tela do mapa. Assim que você aumenta o zoom para o conjunto de pontos gerados (movendo os locais reais dos pontos para fora da tela), os pontos gerados desaparecem. (QGIS 2.14)
Rostranimin

Respostas:


2

O problema aqui é que não há dados reais dizendo "há uma linha aqui". Sua expressão faz parte do estilo de camada e só é encontrada no processo de renderização quando dois pontos aplicáveis ​​também estão sendo renderizados.

Tente usar a ferramenta Distância até o hub mais próximo , encontrada na caixa de ferramentas de processamento em Ferramentas de análise vetorial. Observo que você está selecionando polígonos específicos para seus raios e estilizando as linhas de acordo com outros atributos. Isso é possível, mas você precisará fazer algumas coisas para se preparar. Felizmente, a ferramenta usa automaticamente os centróides quando as entradas de polígonos são escolhidas.

  1. Ferramentas de seleção de vetores > Extrair por atributo
    • Camada de entrada: 'LAYER_1'
    • Atributo de seleção: 'ATTRIBUTE_1'
    • Operador: =
    • Valor: 'valor referente ao polígono do hub'
    • Extraído (atributo): 'HUB'

  2. Ferramentas de seleção de vetores > Extrair por atributo
    • Camada de entrada: 'LAYER_1'
    • Atributo de seleção: 'ATTRIBUTE_2'
    • Operador: escolhido conforme necessário
    • Valor: 'valor (es) referente a polígonos de raios'
    • Extraído (atributo): 'SPOKES'

  3. Ferramentas de análise vetorial > Distância para o hub mais próximo
    • Camada de pontos de origem: 'SPOKES'
    • Camada de hubs de destino: 'HUB'
    • Atributo de nome da camada de hub: cria um campo "Nome do hub" na saída com base no atributo escolhido, caso vários hubs sejam especificados na camada de entrada
    • Tipo de forma de saída: Linha para hub
    • Unidade de medida: Medidores
    • Distância do hub: 'OUTPUT_LAYER_NAME'

A saída resultante mantém todos os atributos da entrada da camada 'SPOKES'; portanto, os atributos necessários para o estilo da linha ainda estarão presentes. Como sua própria camada vetorial, as linhas permanecerão visíveis em todos os níveis de zoom, independentemente da visibilidade de qualquer ponto de extremidade.

Se você estiver familiarizado com o Graphical Modeler, pode até criar essas etapas em um único processo para não sobrecarregar sua área de trabalho com camadas desnecessárias.


3

Foi encontrada a seguinte solução alternativa: Use uma camada virtual adicional em vez de um gerador de geometria para exibir as linhas.

Definição da camada virtual:

select m.FID, make_line(.....) as geometry from my_layer m

(a geometria original pode ser referenciada usando m.geometry)

Para garantir que a camada virtual seja atualizada quando my_layer for editado, vá para propriedades da camada | dependências e verifique se my_layer está marcado (que está acinzentado por padrão).

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.