{"id":612,"date":"2014-06-26T18:00:00","date_gmt":"2014-06-26T18:00:00","guid":{"rendered":"https:\/\/geoadmin.com.br\/?p=612"},"modified":"2021-06-09T10:25:56","modified_gmt":"2021-06-09T13:25:56","slug":"cartobash","status":"publish","type":"post","link":"https:\/\/geoadmin.com.br\/?p=612","title":{"rendered":"Cartobash"},"content":{"rendered":"<p>Em nosso dia a dia, produzimos muitos dados cartogr\u00e1ficos. A SIGMA, apesar de uma pequena empresa, tem contratos de grande volume para produ\u00e7\u00e3o de dados vetoriais cartogr\u00e1ficos, seja atrav\u00e9s de interpreta\u00e7\u00e3o de imagens, seja atrav\u00e9s de t\u00e9cnicas de geoprocessamento.<\/p>\n<p>Como trabalhamos basicamente com tecnologias livres, conseguimos automatizar um pouco o processo, facilitando a cria\u00e7\u00e3o dos bancos de dados onde estes dados ser\u00e3o armazenados, como a gera\u00e7\u00e3o de &#8220;projetos padr\u00f5es&#8221; que s\u00e3o distribu\u00eddos para os colaboradores do projeto.<\/p>\n<p>Para este fim, utilizamos muito <em>SQL<\/em> e <em>scripts bash<\/em>. S\u00f3 para constar, nosso ambiente de produ\u00e7\u00e3o cartogr\u00e1fica conta com:<\/p>\n<ul>\n<li>QGis 2.2 Valmiera;<\/li>\n<li>PostgreSQL 9.1 e PostGIS 2.0.1;<\/li>\n<li>Django 1.6;<\/li>\n<li>Tornado;<\/li>\n<\/ul>\n<p>Os softwares dispensam muita apresenta\u00e7\u00e3o, mas o QGis \u00e9 nossa ferramenta <em>default<\/em> de geoprocessamento, sendo utilizada pelos gerentes e analistas para produ\u00e7\u00e3o cartogr\u00e1fica, conectados diretamente no banco de dados PostgreSQL.<\/p>\n<p>Com o Django, criamos uma aplica\u00e7\u00e3o Python que consulta diversos <em>logs<\/em> que geramos durante a digitaliza\u00e7\u00e3o dos dados e os publica com notifica\u00e7\u00f5es do tipo <em>push<\/em> para um painel em tempo real, que fica em uma televis\u00e3o na \u00e1rea de produ\u00e7\u00e3o &#8211; onde todos os analistas e gerentes podem acompanhar o progresso do projeto, minuto a minuto.<\/p>\n<p>Automatizamos diversas tarefas, dentro do escopo de cada projeto, mas basicamente as seguintes est\u00e3o presentes para todos os projetos de produ\u00e7\u00e3o:<\/p>\n<ul>\n<li>Valida\u00e7\u00e3o topol\u00f3gica de dados poligonais (sobreposi\u00e7\u00e3o e vazios);<\/li>\n<li>Valida\u00e7\u00e3o de validade geom\u00e9trica (somente para dados poligonais, afinal, apenas pol\u00edgonos podem ser inv\u00e1lidos);<\/li>\n<li>Valida\u00e7\u00e3o topol\u00f3gica de dados lineares, respeitando topologias do tipo <strong>arco-n\u00f3<\/strong>;<\/li>\n<li>Auditoria de transa\u00e7\u00f5es;<\/li>\n<li>Instala\u00e7\u00e3o de novos bancos de dados;<\/li>\n<li>Realiza\u00e7\u00e3o de <em>backups<\/em> em nuvem;<\/li>\n<li>Acompanhamento de progresso;<\/li>\n<li>Relat\u00f3rios de problemas cartogr\u00e1ficos (<em>tickets<\/em> criados pelos gerentes e analistas, bem como quantos s\u00e3o resolvidos e criados diariamente);<\/li>\n<li>Exporta\u00e7\u00e3o de dados do banco para <em>shapefiles<\/em> e <em>File Geodatabases<\/em>;<\/li>\n<\/ul>\n<p>Para gerenciar tudo isto foi criado o <a href=\"https:\/\/gitlab.sigmageosistemas.com.br\/cartohelper\/cartobash\">Cartobash<\/a>. \u00c9 um reposit\u00f3rio (ainda privado &#8211; sorry pessoal) no github que cont\u00e9m diversas <em>stored procedures<\/em>, <em>scripts bash<\/em>, projetos padr\u00e3o e funcionalidades diversas para ajudar o gerente de cada projeto a administr\u00e1-lo.<\/p>\n<p>Um exemplo legal, \u00e9 a forma que utilizamos para constru\u00e7\u00e3o de um novo banco de dados. O <a href=\"https:\/\/gitlab.sigmageosistemas.com.br\/cartohelper\/cartobash\">Cartobash<\/a>, nos d\u00e1 toda a infraestrutura b\u00e1sica, como usu\u00e1rios, permiss\u00f5es, esquemas personalizados, auditoria e tudo mais que \u00e9 comum entre projetos. O que n\u00e3o \u00e9 comum entre projetos, \u00e9 fornecido atrav\u00e9s de um diret\u00f3rio, informado pelo usu\u00e1rio e o helper faz o restante.<\/p>\n<pre><code class=\"bash\">.\/instalar_banco.sh localhost 5432 teste2 &lt;usuario&gt; &lt;senha&gt; &lt;caminho_scripts_modelo&gt; &gt; ~\/Desktop\/log.txt\n<\/code><\/pre>\n<p>Esta linha de comando dispara a fun\u00e7\u00e3o de instala\u00e7\u00e3o do banco, gerando um log correspondete. O procedimento de instala\u00e7\u00e3o deixa a crit\u00e9rio do usu\u00e1rio os modelos principais e auxiliares, bem como uma lista de camadas e suas valida\u00e7\u00f5es a serem executadas. Todas as camadas poligonais j\u00e1 s\u00e3o marcadas por padr\u00e3o para valida\u00e7\u00f5es topol\u00f3gicas e as lineares s\u00e3o deixadas a cargo do usu\u00e1rio.<\/p>\n<p>Al\u00e9m disso, a pr\u00f3pria instala\u00e7\u00e3o agenda no <em>crontab<\/em> do usu\u00e1rio do banco de dados as tarefas peri\u00f3dicas de valida\u00e7\u00e3o e backup, n\u00e3o sendo necess\u00e1rio refazer isto na m\u00e3o.<\/p>\n<p>Voc\u00eas devem estar se perguntando como exportamos para <em>File Geodatabases<\/em> no Linux. Bem, acontece que a <em>ESRI<\/em> lan\u00e7ou uma <em>API<\/em> para Linux que permite a cria\u00e7\u00e3o, edi\u00e7\u00e3o e leitura dos mesmos. A GDAL\/OGR usa esta <em>API<\/em> e permite estas opera\u00e7\u00f5es em softwares como QGis e demais.<\/p>\n<p>Nossos script de exporta\u00e7\u00e3o, atrav\u00e9s da OGR, consegue criar um modelo de geodatabase e o popula atrav\u00e9s da mesma linha de comando &#8211; facilitando ainda mais as entregas para os clientes.<\/p>\n<p>Ficamos por aqui! Caso tenham d\u00favidas ou queiram saber mais, entrem em contato!<\/p>\n<p>O reposit\u00f3rio est\u00e1 dispon\u00edvel aqui: https:\/\/gitlab.sigmageosistemas.com.br\/cartohelper\/cartobash<\/p>\n<p>Um abra\u00e7o!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Em nosso dia a dia, produzimos muitos dados cartogr\u00e1ficos. A SIGMA, apesar de uma pequena empresa, tem contratos de grande volume para produ\u00e7\u00e3o de dados vetoriais cartogr\u00e1ficos, seja atrav\u00e9s de interpreta\u00e7\u00e3o de imagens, seja atrav\u00e9s de t\u00e9cnicas de geoprocessamento. Como trabalhamos basicamente com tecnologias livres, conseguimos automatizar um pouco o processo, facilitando a cria\u00e7\u00e3o dos &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/geoadmin.com.br\/?p=612\" class=\"more-link\">Leia mais<span class=\"screen-reader-text\"> &#8220;Cartobash&#8221;<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[28,26,30,29,31],"class_list":["post-612","post","type-post","status-publish","format-standard","hentry","category-sem-categoria","tag-bash","tag-cartografia","tag-desenvolvimento-de-sistemas","tag-dev","tag-opensource"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=\/wp\/v2\/posts\/612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=612"}],"version-history":[{"count":1,"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=\/wp\/v2\/posts\/612\/revisions"}],"predecessor-version":[{"id":1341,"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=\/wp\/v2\/posts\/612\/revisions\/1341"}],"wp:attachment":[{"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}