{"id":7760,"date":"2018-11-29T08:33:51","date_gmt":"2018-11-29T11:33:51","guid":{"rendered":"http:\/\/www.fernandoquadro.com.br\/html\/?p=7760"},"modified":"2018-12-03T07:43:55","modified_gmt":"2018-12-03T10:43:55","slug":"desenvolvimento-de-plugins-do-qgis-primeiros-passos-parte-1","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2018\/11\/29\/desenvolvimento-de-plugins-do-qgis-primeiros-passos-parte-1\/","title":{"rendered":"Desenvolvimento de plugins do QGIS: Primeiros passos"},"content":{"rendered":"<p>O QGIS \u00e9 uma ferramenta brilhante para automa\u00e7\u00e3o baseada em Python em forma de scripts personalizados ou at\u00e9 mesmo plugins. Os primeiros passos para escrever o c\u00f3digo personalizado podem ser um pouco dif\u00edceis, j\u00e1 que voc\u00ea precisa entender a API do Python que \u00e9 um pouco complexa. A s\u00e9rie de Desenvolvimento de Plugins do QGIS que inicia hoje tem como objetivo o desenvolvimento de um plug-in personalizado totalmente funcional capaz de gravar valores de atributos de uma camada de origem para uma camada de destino com base em sua proximidade espacial.<\/p>\n<p>Nesta parte, mencionarei o b\u00e1sico, o que \u00e9 bom saber antes de come\u00e7ar.<\/p>\n<p><strong>1. Documenta\u00e7\u00e3o<\/strong><\/p>\n<p>Diferentes vers\u00f5es do QGIS v\u00eam com diferentes APIs do Python. A documenta\u00e7\u00e3o deve ser encontrada em <a href=\"https:\/\/qgis.org\" rel=\"noopener\" target=\"_blank\">https:\/\/qgis.org<\/a>, sendo a mais recente a <a href=\"https:\/\/qgis.org\/api\/3.2\" rel=\"noopener\" target=\"_blank\">vers\u00e3o 3.2<\/a>. Observe que, se voc\u00ea acessar diretamente o site <a href=\"http:\/\/qgis.org\/api\/\" rel=\"noopener\" target=\"_blank\">http:\/\/qgis.org\/api\/<\/a>, ver\u00e1 os documentos atuais.<\/p>\n<p>Alternativamente, voc\u00ea pode o <em>&#8220;apt install qgis-api-doc&#8221;<\/em> em seu sistema Ubuntu e rodar <em>&#8220;python -m SimpleHTTPServer[port]&#8221;<\/em> dentro de <em>&#8220;\/usr\/share\/qgis\/doc\/api&#8221;<\/em>. Voc\u00ea encontrar\u00e1 a documenta\u00e7\u00e3o em <em>&#8220;http:\/\/localhost:8000&#8221;<\/em> (se voc\u00ea n\u00e3o fornecer o n\u00famero da porta) e estar\u00e1 dispon\u00edvel mesmo quando estiver off-line.<\/p>\n<p><strong>2. Estrutura B\u00e1sica da API<\/strong><\/p>\n<p>Abaixo uma vis\u00e3o resumida do que est\u00e1 dispon\u00edvel dentro da API:<\/p>\n<ul>\n<li> Pacote <strong>qgis.core<\/strong> traz todos os objetos b\u00e1sicos como QgsMapLayer, QgsDataSourceURI, QgsFeature, etc<\/li>\n<li> O pacote <strong>qgis.gui<\/strong> traz elementos GUI que podem ser usados \u200b\u200bdentro do QGIS como QgsMessageBar ou QgsInterface<\/li>\n<li> <strong>qgis.analysis<\/strong>, <strong>qgis.networkanalysis<\/strong>, <strong>qgis.server<\/strong> e <strong>qgis.testing<\/strong> pacotes que n\u00e3o ser\u00e3o abordados na s\u00e9rie<\/li>\n<li> M\u00f3dulo <strong>qgis.utils<\/strong> que vem com <strong>iface<\/strong> (muito \u00fatil no console do QGIS Python)<\/li>\n<\/ul>\n<p><strong>3. Console Python do QGIS<\/strong><\/p>\n<p>Usar o console Python \u00e9 a maneira mais f\u00e1cil de automatizar o fluxo de trabalho do QGIS. Pode ser acessado pressionando <strong>Ctrl + Alt + P<\/strong> ou navegando pelo menu em <strong>Plugins -> Python Console<\/strong>. Como mencionado acima o m\u00f3dulo iface do qgis.utils \u00e9 exposto por padr\u00e3o dentro do console, permitindo-lhe interagir com o QGIS GUI. Experimente os exemplos a seguir, para fazer um teste inicial:<\/p>\n<pre>\r\niface.mapCanvas().scale() # retorna a escala atual do mapa\r\niface.mapCanvas().zoomScale(100) # zoom para escala 1:100 \r\niface.activeLayer().name() # obt\u00e9m o nome da camada ativa \r\niface.activeLayer().startEditing() # realizar edi\u00e7\u00e3o\r\n<\/pre>\n<p>Essa foi uma breve introdu\u00e7\u00e3o \u00e0 API do QGIS, no <a href=\"http:\/\/www.fernandoquadro.com.br\/html\/2018\/12\/03\/desenvolvimento-de-plugins-do-qgis-usando-o-console-parte-2\/\" rel=\"noopener\" target=\"_blank\">pr\u00f3ximo post<\/a> falaremos mais profundamente sobre o console do QGIS.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O QGIS \u00e9 uma ferramenta brilhante para automa\u00e7\u00e3o baseada em Python em forma de scripts personalizados ou at\u00e9 mesmo plugins. Os primeiros passos para escrever o c\u00f3digo personalizado podem ser um pouco dif\u00edceis, j\u00e1 que voc\u00ea precisa entender a API&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2018\/11\/29\/desenvolvimento-de-plugins-do-qgis-primeiros-passos-parte-1\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":7765,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[79,260],"class_list":["post-7760","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gis","tag-python","tag-qgis"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/7760","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/users\/275"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/comments?post=7760"}],"version-history":[{"count":8,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/7760\/revisions"}],"predecessor-version":[{"id":7819,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/7760\/revisions\/7819"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/7765"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=7760"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=7760"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=7760"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}