Quero mostrar uma rede celular em um mapa. Os dados de entrada são um arquivo .csv em que cada sequência é um setor celular. Os atributos são: ID do setor, suas coordenadas, seu azimute e um ângulo de largura do feixe da antena.
Os valores da largura do feixe da antena variam de 30 a 360 graus. A largura do feixe de 360 antenas significa que ele deve ser mostrado no mapa como um círculo. Antenas com outras larguras de feixe devem ser mostradas como setores com ângulos de abertura apropriados.
É possível mostrar as antenas usando apenas símbolos? Eu sei como criar meu próprio símbolo SVG e espero descobrir como girá-lo de acordo com o azimute. Mas existe alguma maneira de aplicar a largura variável do feixe da antena de acordo com seu valor de atributo de 30 a 360 graus?
Eu acho que os símbolos são a melhor maneira de desenhar as antenas por causa da visualização dinâmica no mapa de acordo com a escala de visão, se isso for possível no QGIS.
Obviamente, a tarefa pode ser resolvida desenhando polígonos apropriados como um recurso de camada, mas isso seria uma solução alternativa.
fonte
Respostas:
Alguns dias atrás, um novo plugin foi adicionado ao QGIS chamado Wedge Buffer Processing Algorithm . Parece que pode ser do seu interesse.
Como o nome sugere, é um algoritmo de processamento, então você precisará executá-lo na caixa de ferramentas de processamento. Ainda não tive a chance de experimentá-lo.
Ele cria setores de círculos - como um buffer circular normal, mas o ângulo e o raio da cunha podem ser definidos usando valores de campo.
Documentação e capturas de tela podem ser vistas na página do github
fonte
Se você deseja usar apenas a simbologia, proponho uma solução inspirada na minha resposta de uma pergunta semelhante: Criando luzes do setor no QGIS? .
Seguindo uma abordagem semelhante, e supondo que você esteja trabalhando em um CRS projetado (em vez disso, se estiver usando um sistema de coordenadas geográficas, veja a nota no final da resposta), quero sublinhar que vou focar a atenção na explicação das coisas mínimas a serem executadas para reproduzir o resultado desejado: isso significa que alguns outros parâmetros menores (como tamanhos, larguras etc.) devem ser facilmente ajustados por você para melhor atender às suas necessidades.
Além disso, eu assumo que
"AZIMUTH"
é o campo que armazena os valores de azimute e"BEAMWIDTH"
é o campo que armazena as larguras de feixe da antena.Solução
Renderizaremos os pontos com
Single symbol
ae recorrendo a umaSimple Marker
e duasGeometry generator
camadas de símbolos:Na explicação adicional, seguirei a mesma ordem dos símbolos na imagem acima.
1) Marcador Simples
Eu escolhi um símbolo padrão de um círculo vermelho (essa é a parte mais fácil deste tutorial), com um tamanho de 3 mm e uma largura de 0,4 mm.
2) Gerador de geometria n ° 1
Adicione uma nova camada de símbolo e selecione
Geometry generator
osLineString / MultiLineString
tipos e:Insira esta expressão no
Expression
campo:Acabamos de definir a seta que aponta para o conjunto de azimute (para criar a seta, lembre-se de selecionar o
Arrow
tipo de camada de símbolo sob aLine
opção no menu principal do símbolo). Observe que isso300
representa uma distância em metros e é um valor arbitrário; portanto, fique à vontade para alterá-lo de acordo com suas necessidades.3) Gerador de Geometria No. 2
Adicione uma nova camada de símbolo e selecione o
Geometry generator
tipo e osPolygon / MultiPolygon
tipos:Insira esta expressão no
Expression
campo:Acabamos de definir o setor. Observe que
200
e2000
representa distâncias em metros e são valores arbitrários, porque estou tentando criar um polígono para cruzar com o círculo com um raio de 200 m, portanto, fique à vontade para alterá-los de acordo com suas necessidades.Resultado final
Se você executar corretamente as tarefas anteriores, poderá obter resultados como estes (os rótulos são adicionados além desta solução e devem explicar melhor apenas o contexto):
Nota
Se você estiver usando um Sistema de coordenadas geográficas , ou seja, se estiver lidando com graus e não com distâncias, deve ser suficiente usar os valores adequados quando usei uma distância nas fórmulas anteriores. As distâncias que usei são:
assim você pode substituí-lo com outros valores arbitrários expressas em graus (por exemplo,
0.0002
,0.002
e assim por diante).Bônus
Anexei o estilo aqui : você pode abrir esse código com qualquer editor de texto e salvá-lo como um arquivo de estilo de camada QGIS (ou seja, com uma
.qml
extensão).O estilo acima foi criado usando o QGIS 2.18.4 (ele deve ter o mesmo nome do shapefile que você está usando).
fonte
Muitos elogios para mgri.
Em nossa camada de teste, tudo funcionou sem problemas. Em uma camada de produção, depois de duas / três horas, consegui rastrear um problema com $ geometry . Tinha exportado uma camada de pontos de uma plataforma, não percebeu, mas era o MultiPoint . Isso parecia causar problemas: a flecha não estava desenhada; e estranhamente apenas os pontos calculados formavam o polígono dos círculos.
Outra coisa é que estou usando um raio variável . (não tenho certeza se é a palavra certa nesse caso, você também pode chamá-lo de 'comprimento do feixe' ou o que for).
Aqui está o que estou usando agora, com uma camada de tipo de geometria MultiPoints (embora, de fato, todos os recursos sejam um único ponto), e funcione para mim no QGis 2.18.3
Expressão da seta Nenhuma seta se 360 °.
Expressão de polígono
fonte
Eu fui presenteado com uma solução parcial na web sem nenhum plug-in adicional, apenas qgis fora da caixa. Ele não mostra a largura do feixe da antena, basta girar o marcador simples na direção certa: use o marcador simples e gire-o com azimute da antena + 180 graus (Propriedades da camada> Simbol único-> Marcador-> Marcador simples-> triângulo-> rotação-> editar -> digite <180 + "azimute da antena"> no campo de expressão e defina Top no campo do ponto de ancoragem do marcador). O uso de <180 + "antena azimute"> é necessário devido à direção inadequada do marcador de triângulo simples incorporado. Caso contrário, mostrará uma direção incorreta da antena.
fonte