Existe uma maneira de renderizar linhas com curvas suaves (bege) no QGIS?


33

Estou deixando de criar mapas com o Illustrator para torná-los com QGIS e dados reais. Uma das coisas que não consegui recriar no QGIS são as linhas curvas suaves que posso obter no Illustrator. Não estou falando de estilos de junção e de limite, mas como uma linha inteira é renderizada.

Estou procurando uma resposta que não inclua a exportação como SVG para o Illustrator e o acabamento do mapa.

Além disso, eu sei que eles podem ser considerados uma representação imprecisa, mas, na maioria dos casos, esses mapas são para dar aos motociclistas uma idéia de onde eles estão e não necessariamente precisam ser uma representação exata.

Aqui está um exemplo do que quero dizer: insira a descrição da imagem aqui


2
Como seus dados são armazenados? A maioria dos formatos de dados (por exemplo, shapefile) não permite arcos. Eu acredito que alguns bancos de dados agora o fazem.
Darren Cope

Respostas:


24

Confira o plug-in Generalizer, ele deve fazer o que você deseja. O plugin possui opções de suavização que funcionam muito bem.

Ele não altera a forma como suas linhas são renderizadas, mas cria um novo arquivo de forma com suavização (ou simplificação / generalização) aplicada.

insira a descrição da imagem aqui

insira a descrição da imagem aqui


Não consigo encontrar este plug-in para o QGIS 1.7.3, mesmo tendo os repositórios de terceiros ativados. Você pode mostrar como ativar / encontrar? Parece interessante e direto.
precisa saber é o seguinte

3
Estranho. Ele deve estar no instalador do plug-in, pois é proveniente do repositório principal de plug-ins do QGIS.
18719 Nathan W

3
Você está certo, mas no Instalador de plugins do Python, tive que ir para a guia Opções e alterar "Plugins permitidos" para: "Mostrar todos os plugins, mesmo os marcados como experimentais".
precisa saber é o seguinte

Acabei jogando com este plugin um pouco esta noite e ele realmente funcionou melhor para mim, já que não precisava usar uma camada GRASS e poderia apenas converter meu shapefile atual.
Brian Kelly

Eu tive que fazer isso em duas etapas para minha digitalização muito detalhada, mas irregular: primeiro simplifique (por exemplo, algoritmo Lang) e depois suavize. Trabalhou um prazer.
um ben diferente

16

Usando o plugin QGIS + GRASS:

Adicione a barra de ferramentas Grass na janela "Gerenciar plug-ins". adicione o plugin de ferramentas de grama ao qgis

Suas linhas precisarão ser um vetor de grama, então converta-as em um conjunto de mapas GRASS novo ou existente.

Na barra de ferramentas do GRASS, selecione Ferramentas GRASS ... insira a descrição da imagem aqui

Procure o módulo: v.generalize ( tutorial WIKI aqui )

Você pode escolher vários algoritmos de generalização diferentes: Ferramenta GRASS v. Generalizar seleção de algoritmos

Observe os algoritmos: Chaiken, Hermite ou até Sliding Average. Existem vários outros também!

As diferenças podem ser vistas nas imagens da wiki: v.generalize simplificar diferenças exemplo

do Wiki: "Observe que a diferença entre" Chaiken "e" Hermite "é que as linhas produzidas por" Chaiken "" inscrevem "as linhas originais, enquanto as linhas" Hermite "circunscrevem" as linhas originais, como pode ser visto no figura [acima] (a linha preta é a linha original, a linha verde é "Chaiken" e o azul é "Hermite")


Usando uDig + jgrasstools ou grama:

Se você tiver dificuldade em obter resultados desejáveis ​​com o v.generalize do GRASS, tente a versão mais recente do uDig com o jgrasstools . Você também pode pegar o pote de grama no mesmo local que o jgrasstools.

Depois que o uDig estiver instalado e funcionando, ative a Caixa de ferramentas espaciais : Janela> Mostrar exibição> Outros ... ativar caixa de ferramentas espaciais no uDig

Desmarque a barra de ferramentas para facilitar a legibilidade (clique com o botão direito do mouse na guia Spatial Toolbox> Desanexar ...): destacando a caixa de ferramentas espaciais no uDig

Carregue os módulos jgrasstools e grass (opcional) necessários: carregando jgrasstools / grass no udig

Não se esqueça de definir seus parâmetros de grama (aponte para executável ou arquivo bat no windows, ou comando grass no linux, por exemplo, / usr / bin / grass) se você carregar o arquivo jar jar: definir parâmetros de grama no uDig

Finalmente! Usando as ferramentas do jgrasstools (não grama), você pode generalizar a linha facilmente com Vector Processing> LineSmootherJaiTools Processamento vetorial para LineSmootherJaiTools no uDig

Certifique-se de definir a entrada e a saída corretamente (funciona apenas em Shapefiles, portanto, não é necessário converter seus dados em conjuntos de mapas / locais para grama) : configurações de entrada e saída para Spatial Toolbox no uDig

Depois de definir a tolerância de suavização (0,0 - 1,0) e a entrada / saída, pressione o botão Play na janela Spatial Toolbox (canto superior direito): play no Spatial Toolbox para uDig

Resultados:
O uDig simplifica os resultados do jgrasstools ...


Isso altera os dados originais ou os filtra de alguma maneira antes que o QGIS os processe?
Brian Kelly

Ah, isso é respondido aqui: "A suavização (linha) é um processo" reverso "que recebe como entrada uma linha e produz uma aproximação mais suave do original. Em alguns casos, isso é conseguido inserindo novos vértices na linha original e pode totalizar até 4000% do número de vértices no original. Nesse caso, é sempre uma boa idéia simplificar a linha após a suavização ". A partir de grass.osgeo.org/grass64/manuals/html64_user/v.generalize.html
Brian Kelly

Parece que isso é algo que você provavelmente aplicaria assim que confirmar que suas linhas estão corretas e não precisam de mais edições (a menos que você queira ajustar todos os vetores adicionais e depois suavizá-lo novamente)
Brian Kelly

@spline Sim, porque você precisa trabalhar com um "conjunto de dados de grama" que é essencialmente - NÃO um arquivo de forma, você deve garantir que o arquivo de forma original esteja completo. A simplificação da linha para eliminar vértices extras também é uma opção, dependendo do comprimento da linha e da quantidade de vértices presentes na curva de bezier .
precisa saber é o seguinte

Oh, minha palavra, grama não faz sentido para mim ... nomes de mapas, nomes de locais, dbase, PERMANENT ... Tentei 'descobrir' como usar essa resposta (com nenhum conhecimento prévio de grama) e falhei miseravelmente. Os arquivos parecem ir onde você menos espera (embora eu ache que não sejam arquivos?), Não pude escolher minha camada convertida na caixa de diálogo generalizar depois de finalmente descobrir como selecionar um mapa (não que eu saiba o que se entende por um mapa) ... pesadelo. Looks os bens se eu poderia resolver tudo embora :)
um diferente ben

1

Existe outra maneira, possivelmente dessa maneira apenas desde a versão QGIS 2.0:

Em Processamento> Caixa de ferramentas, você pode acessar as ferramentas GRASS e SAGA. Para suavização, você encontra v.generalize, mas também simplificação de linha do SAGA. Essas ferramentas funcionam em arquivos de forma regulares, portanto, nenhum vetor de grama é necessário:

insira a descrição da imagem aqui

O modo de lote ainda não está bem resolvido (clique com o botão direito do mouse no menu à direita e escolha "Executar como lote", pois é necessário escolher cada arquivo manualmente. O plug-in generalizador mencionado acima permite que você escolha muitos arquivos de maneira mais simples , mas isso só funciona no momento se não for especificado um arquivo para salvar, caso contrário, o plug-in trava.


1

Existe um algoritmo de geometria suave abaixo Processing Toolbox -> QGis geoalghoritms -> Vector.

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.