Software livre X Investimentos

Alguns pensamentos/ideias anotadas em um caderno…

Não pense a criação de nova solução apenas pela ponto de vista técnico. Pense geograficamente. Busque articulações, some esforços ($ e RH);

Anúncios
Citação | Publicado em por | Marcado com , ,

Soluções prontas, desafíos específicos

Alguns pensamentos/ideias anotadas em um caderno…

Soluções prontas não são capazes de solucionar tudo, uma vez que são desenvolvidas para resolução de problemas gerais. A cada desafio específico abre-se precedente para desenvolvimento e implementação de soluções específicas. E, neste sentido, ter  corpo técnico qualificado para tal torna-se fundamental.

Publicado em Pensamentos Aleatórios | Marcado com , ,

100DaysOfCode primeira atualização

Após 25 dias de programação dos 100 propostos pelo #100DaysOfCode, noticiados no artigo anterior, resolvi aprensentar o projeto que mais me dediquei neste período e que, na minha opinião, ficou bem interessante.

Sinto lhes decepcionar, mas nada tem a ver com SIG, Geoprocessamento ou Sensoriamento Remoto. E acho que Justamente por isso tem sido muito bom para aprender Python e exercitar um pouco a criatividade… traduzindo, me trouxeram novas ideas de prjetos, alguns dos quais, sim, tem relação com o que mais gosto de fazer: análises espaciais. Vamos ao projeto: Trata-se de um chatbot para economia domestica.

OK, por partes: ChatBot são robos pelos quais interagimos por chat. Há algumas definições que defendem a ideia de que para ser um chatbot, além da interação por chat, o robot deve ter Inteligencia Artificial. Não é o caso do que desenvolvi. Por isso, ficarei com a definição básica de que, para ser um chatbot, basta que a interação com o robo seja feita por chat.

Com relação à economia doméstica: é como eu chamo a atividade de registrar os gastos cotidianos, bem como as receitas. A ideia não é apenas o registro, apenas, mas ter, a partir disso, conhecimento de onde estão os maiores gastos, e a relação gastos/receita. Enfim, tem controle sobre seus recursos financeiros.

Já tem tempo que faço esse controle em planilhas, mas tem sido cada vez mais dificil pois deixo sempre para depois. E aí, já viu, né?! É pouco provável que eu me lembre do que foi gasto… Então, porque não criar um chatbot para facilitar? (e de quebra aprender python, aprofundar mais conhecimentos em SQL, e etc.)

Juntando tudo, a ideia é facilitar esse processo. Como? Bastando enviar uma msg de texto ao chatbot dizendo o quanto gastou e em que gastou. Assim os datos são armazenados em um banco de dados;

expenses

Figura exemplificando uso do chatbot de economia domestica

Mas como a idea não é apenas o registro dos ganhos e gastos, há a possibilidade de solicitar um resumo em formato de texto ou de gráfico, indicando quanto e onde tem sido gasto. Claro, há outras funcionalidades interessantes como, por exemplo, realizar o backup do banco de dados, adicionar categorias de gastos e etc. Para mais informações de uma olhada no repositório que criei no github.

plotcategory

Figura exemplificando resumo gráfico dos gastos segundo cetagoria.

O dito chatbot foi desenvolvido usando a API do Telegram. E da forma como foi desenvolvido cada um que desejar utilizá-lo deverá implementa-lo. Para isso, é necessário criar um chatbot no telegram e implementar o código em um servidor (o código que está no github). Atualmente tenho usando um raspberry como servidor e tem andando bem. Mas fiz alguns testes usando o python any where e me pareceu uma boa alternativa.

Caso tenha tempo, tentarei fazer um tutorial mostrando como cada um poderia implementá-lo mostrando cada passo do início ao fim. Mas por agora é “só” isso.

Abs

Publicado em Script | Marcado com , , , , , , ,

#100DaysOfCode

Ano passado peguei carona com uma iniciativa que achei interessante e descobri pelo Twitter, chamado #100daysOfCode (“100 dias de programação” – tradução livre! :). O que eu não percebi na época é que a proposta é bem estruturada e visa incentivar as pessoas que estão querendo aprender e/ou se desenvolver na área da programação. A proposta tem, inclusive, algumas regras e incentiva-se que seja feito um compromisso público de sua iniciativa nesse projeto de forma a dar ainda mais importância à sua própria iniciativa. Afinal, fica feio de desistir de seus objetivos após declara-los publicamente, não? Para que os participantes não se sintam sozinhos, propõe-se que sejam publicados as evoluções com a hashtag #100DaysOfCode.

Como eu peguei carona nessa iniciativa, publiquei apenas as evoluções que tive em alguns projetos e de forma totalmente aleatória. Claro, cada um aborda esse processo como bem entende. Mas, como tenho algumas ideias de projetos em mente que não consegui concretizar em 2017, além de querer seguir aprendendo novas linguagens de programação (como Java Script) e me desenvolver em outras (R e Python), resolvi aderir à iniciativa novamente e do zero, seguindo as proposta do projeto.

Dessa forma torno publico meu compromisso em:

  1. Dedicar ao menos uma hora de programação para desenvolver algum projeto pessoal (desconsiderando as horas de programação desenvolvidas no trabalho, já que a ideia é desenvolver meus próprios projetos);
  2. Vou publicar meu progresso (ou, tentativa de) nas redes sociais com a hashtag (Twitter, Facebook) #100DaysOfCode;
  3. Vou publicar um log do que foi desenvolvido no meu repositório do GitHub ;
  4. Como muitas vezes programo em meu trabalho, não contarei as horas de trabalho para este projeto;
  5. Apenas considerarei os dias de programação usados para desenvolver meus projetos. Não serão contabilizados os dias e horas investidos em aprendizados e/ou tutoriais;

Mais informações – join the #100DaysOfCode, Boot Up 2017 with the #100DaysOfCode Challenge)

Publicado em Divulgação, Script | Marcado com , , , , | 1 Comentário

Base de dados do IBGE em PostGIS

Aproveitei essa semana para atualizar meu PC e vi que o IBGE disponibilizou as bases de dados atualizadas em escala 1:250.000 e ao milionésino para serem restauradas ao PostGIS.

A base de dados 1:250.000 já foi divulgada no GeoIndependencia em 2015, mas sua versão (ao menos a usada para o artigo naquela época) era de 2013. Atualmente a versão da base de dados data de 11 de maio de 2015. Segundo informações no documento LEIAME.doc (acho que sou o único que leio essas coisas :) não houve atualização dos dados cartográficos em relação à versão anterior, mas não deixa claro qual era a versão anterior… A atualização se deve a uma correção na estrutura da tabela “trecho_rodoviário”.

Com relação à base de dados ao milionésimo, mais conhecida por BCIM, não encontrei nenhum documento de orientação ou LEIAME informando sobre o que foi – ou não – atualizado.

IBGE250.png

Acesso aos backups da base de dados 1:250.000 e BCIM no site do IBGE: Download -> Geociências -> cartas_e_mapas; bc250, para acessar a base 1:250.000 ou BCIM a base ao milionésimo.

Para restaurar tais dados em seu banco de dados PostGre, basta criar uma base de dados com extensão a extensão GIS e executar o comando `pg_restore`:

# BC250
pg_restore --host localhost --port 5432 --username UUUUUU --dbname BBBBBB --no-owner --password --verbose "CAMINHO_PARA/BC250_pgis20_dump_v2015_2016-05-11/bc250_v2015-2016-05-11.tar"

# BCIM
pg_restore --host localhost --port 5432 --username UUUUUUU --dbname BBBBBB --no-owner --password --verbose "CAMINHO_PARA/BCIM_postgis_versao2016.tar"

Claro, troque UUUUUU pelo nome de usuário (postgres, por exemplo) e BBBBBB pelo nome da base de dados onde deverão ser restaurados os dados espaciais e dê adeus àquele conjunto de shapefile que você nunca lembra qual é a versão mais atual.

Publicado em Banco de Dados Geográficos | Marcado com , , , , , , , , | Deixe um comentário

Layout de mapas no QGIS

Outro dia vi em una rede social um comentário colocando a produção de (layout) mapas  como sendo o “calcanhar de aquiles” do QGIS. Como não é a primeira vez que “escuto” tal tipo de afirmação, resolvi publicar uma coletânea de tutoriais sobre a produção de (layout) de mapas no QGIS.

Livro: QGIS Map Design

Começo sugerindo o livro “QGIS Map Design”, produzido pela Gretchen Peterson e Anita Graser. O livro aborda os três principais componentes, quando nos referimos à geração de layout de mapas: Simbologia, rotulação das camadas e a produção em si (layout) do mapa (tradução livre de: “styling layers, labeling, and designing print maps”). O interessante neste livro é chamar a atenção à importância da criação de simbologias adequadas e na configuração de rótulos, antes de tratas das possíveis configurações de layout. O livro não foi traduzido, mas trata-se de um passo a passo com dados disponíveis para download. Acho que não tem como errar.

qgis-map-design

Capa do livro QGIS Map Design.

Mais informação sobre o livro.

Tutorial: Map Desgin on QGIS Composer

Outro tutorial que me chamou atenção, e que segundo o autor teve algumas ajudas do livro citado acima, é “Map Desgin on QGIS Composer“, produzido por Mickael Hoarau (@Oneil974).

QGISDesign

O mais interessante é observar que o autor usa linguagem HTML para organizar alguns estilos do mapa. Bem como apresenta o uso de expressões para inserir a data de produção do mesmo.

QGISComposer3

Exemplo do uso da linguagem HTML no layout do mapa.

QGISComposer2

Exemplo do uso de expressões no layout do mapa.

O tutorial está disponível neste link e os materiais usados podem ser baixados aqui. Assim como o livro, o passo a passo está bem documentado com imagens e por isso, imagino que usuários não fluentes no QGIS (e/ou inglês) também conseguirão obter o resultado apresentado pelo autor.

Tutorial: QGIS Atlas Desgin

O mesmo autor criou posteriormente um tutorial semelhante mas explorando a ideia de criação de atlas, elevando um pouco a dificuldade do tutorial, mais ainda assim, o apresentando de forma prática.

QGISComposer4

Exemplo de criação de atlas no QGIS.

Neste tutorial, Mickael apresenta mais detalhadamente o processo de simbologia usado por ele, usando expressões, além de HTML, CSS para criar os estilos do mapa.

QGISComposer5

Exemplo do uso de CSS na composição do mapa

O tutorial pode ser acessado aqui e os dados usados no exemplo, podem ser baixados deste link.

Tutorial: Visualização de séries temporais

Apresar de não se tratar de um tutorial para geração de layout de mapa estático, o tutorial a Anita Graser apresenta de forma rápida como visualizar dados de séries temporais no QGIS, usando o complemento Time Manager, inclusive com a possibilidade  de exportar a resultado em formato de video. No exemplo, são usados dados de aves migratórias.

Tutoriais: Mapas de “movimento”

Um ponto não tão fácil de se explorar são os mapas (“estáticos”) que representam algum tipo de movimentação. Não à toa, Anita Graser produziu uma série de artigos/tutoriais explorando essa temática. Antes de explorar a parte visual e geração de layout, Anita dedicou um artigo com algumas reflexões a respeito da natureza dos dados e o conceito espaço-tempo.

No segundo artigo sobre o tema, são apresentados algumas possibilidades iniciais de visualização de dados de movimento explorando visualização da  velocidade. Esse tema é usado para apresentar uma funcionalidade “nova” do QGIS (Desde sua versão 2.14): gerador de geometria. Trata-se da possibilidade de modificar a geometria sem a necessidade de processá-la e salvá-la como uma nova camada. O artigo, portanto não explora a geração de layout de mapas, mas sim, uma parte fundamental da mesma que é a criação de simbologias para as camadas de forma eficiente. O artigo pode ser acessado neste link.

Em outro artigo, A autora usa essa funcionalidade de geração de geometrias para a produção de um mapa de fluxos:

preview

Fonte: Anita Graser.

Partindo da geração de três geometrias diferentes e apresentando os comandos usados, fica evidente a gama de possibilidades em se trabalhar com tal ferramenta. Como desdobramento, ela deixa um conjunto de dados e o estilo de mapa neste artigo.

Em seu terceiro artigo, ela reitera o verdadeiro desafio no mapeamento de movimento e trajetória: trabalhar com grande quantidade de dados. Ela busca, então, pesquisas relacionadas à visualização de dados para sanar tal desafio, criando um complemento do QGIS que permite analisar a intensidade (tradução livre de “strength”) e direção dos fluxos.

trajectory_generalization_2

Fonte: Anita Graser.

Como era de se esperar, no quarto artigo a “brincadeira” fica ainda mais complexa e interessante: ela passa a considerar a variação no tempo dos movimentos mapeados. Para isso, cada segmento de rua recebeu um gráfico de ‘pizza’, onde cada quarto da circunferência indica um período do dia (madrugada = azul claro (0 às 6h), manhã = laranja (6 às 12h), tarde = vermelho (12 às 18h), noite = azul escuro (18 às 0h)) e o tamanho do gráfico indica a quantidade de carro naquele determinado período.

2_flows_and_time_pies

Fonte: Anita Graser.

Aos que se interessaram e trabalham com dados de movimento e trajetória, o quinto artigo apresenta alguns tópicos abordados em uma conferência sobre o tema.

Tutoriais: Mapas de fluxos

Aos que precisam explorar mapas de fluxos, foi dedicado uma série de artigos sobre o tema. Como de praxe, Anita Graser dedica o primeiro artigo da série, não apenas à reflexão conceitual e desafios relacionados à tais tipos de mapeamentos, mas também passando algumas possibilidades bem interessantes para tais mapeamentos.

Segundo a autora, o primeiro artigo foi feito com dados simplificados, por isso ela dedicou um segundo artigo para reproduzir o mesmo mapa, mas com dados “reais”. Os dados e os estilos criados também estão disponíveis pelo repositório dela (Veja no link como acessá-lo). O resultado é ainda mais interessante:

migration_twocolor

Fonte: Anita Graser.

Ainda sobre mapas de fluxos, a autora mostra como usar degradê na simbologia das setas, neste artigo.

Está assustado com a quantidade de material a ser explorado? Saiba que ainda tem mais:

Neste artigo, Anita mostra uma alternativa ao uso das setas nos mapas de fluxo, usando rampa de cores para indicar o “volume” de fluxo entre as regiões. Contudo, o mais interessante deste tutorial está em como usar a função de camadas virtuais (“virtual layers”). A ideia das camadas virtuais está em fornecer capacidades de banco de dados às camadas sem a necessidade de configurá-las (basando usar SQL diretamente na camada).

Além do uso das camadas virtuais, é abordado e ensinado como ter melhor proveito do layout de mapas, já que, no caso apresentado pela autora, é analisada uma área composta por 9 polígonos.

migration

Fonte: Anita Graser.

Por último, mas não menos importante, foi publicado recentemente (acho que não preciso dizer por quem) uma forma de simbologia para rios, conhecido (em inglês) como “tapered lines” (ou, em tradução livre: linhas afuniladas). A ideia básica é aumentar a largura da simbologia de acordo com a sua “hierarquia”.

Veja no tutorial que, na verdade ela analisa o segmento em questão em função do total de segmentos. E sabendo que o dados foi digitalizado a montante, ela tem uma aproximação da hierarquia do rio, gerando o seguinte efeito:

tirol_rivers1

Fonte: Anita Graser.

Considerações finais

Como podem perceber, não precisei buscar muito para achar tais tutoriais… Basicamente em um único blog temos todos esses tutoriais disponíveis. Ou seja, não se tratou de um busca extensiva e que esgotasse do tema. Como a simbologia usada nos dados espaciais possuem efeito direto aos mapas produzidos, optei por incluir os tutoriais que explorassem essa vertente.

Chego, portanto, à conclusão que (ao menos em meu caso) o “calcanhar de aquiles” do QGIS é na a (minha) falta de tempo para estudar e explorar a liberdade de expressão e de criação que o QGIS nos possibilita. Mas vale anotar essas dicas e guardá-las para quando for oportuno estudá-las.

Espero que tenham gostado e bom estudo!

Publicado em QGIS | Marcado com , , , , , , , , | Deixe um comentário

Instalação de softwares espaciais no Ubuntu

Como aproveitei para atualizar meu Ubuntu para a versão mais atual (16.04 LTS), tive que reinstalar todos os softwares de SIG, Sensoriamento Remoto e análise espaciais. E por não são expert em Ubuntu, sempre faço besteira ao adicionar repositórios que acabam instalando software em versões anteriores, ou quebro dependencias de outros softwares… Enfim, sempre tenho problemas.

Por isso, montei um script de guia e ele foi meu salvardor durante um/dois anos. Como o script foi montado para a versão anterior do Ubuntu, eu teria que reestrutura-lo para a versão 16.04. Mas em Outubro de 2016 participei de um curso na Latinoware sobre o complemento do QGIS DSGTools, ministrado pelo Luiz Andrade, do Exército Brasileiro. No curso, nos foi compartilhado um script “similar” ao que eu tinha feito, mas em formato executável no bash (terminal do linux) e com muito mais funcionalidades. Não tive dúvidas, entrei em contato com o Luiz para ter acesso ao script e recebi a boa notícia: o script tinha novas funcionalidades e funciona para diferentes versões do Ubuntu.

O que será instalado:

Outras funcionalidades:

  • Configuração do PostGreSQL;
  • Configuração do Apache
  • Instalação de bibliotecas para utilização do GRASS, OTB, SAGA e Semi-Automatic Classification Plugin;

Pelo ótimo trabalho do pessoal da DSG e imaginando que esse script seja de interesse de outras pessoas, resolvi compartilhar com vocês: link

O script faz parte do repositório DSG Management Tools e surgiu, segundo o Luiz, da rotina de instalação de tais softwares nos computadores das corporações ou durante os treinamentos.

Deixo aqui meu agradecimento ao Luiz Andrade e Philipe Borba pelo trabalho desenvolvido e compartilhamento do script.

Façam bom uso!

Publicado em Banco de Dados Geográficos