{"id":351,"date":"2013-08-27T21:33:46","date_gmt":"2013-08-27T21:33:46","guid":{"rendered":"https:\/\/geojournalism.oeco.org.br\/?p=351"},"modified":"2014-10-31T18:40:17","modified_gmt":"2014-10-31T18:40:17","slug":"portugues-as-cidades-mais-populosas-do-mundo","status":"publish","type":"post","link":"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/","title":{"rendered":"Visualizando dados com Processing"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<html><body><p><\/p>\n<p><\/p><p>Nesse tutorial, vamos ver como carregar dados de um arquivo externo e criar um gr&aacute;fico de popula&ccedil;&atilde;o x &aacute;rea para as 10 cidades mais populosas do mundo.<!--more--><\/p>\n<h2 id=\"introducao\" class=\"summary-item\"><a href=\"#introducao\">Introdu&ccedil;&atilde;o<\/a><\/h2>\n<p>Originalmente criada como uma ferramenta pra ensinar programa&ccedil;&atilde;o a artistas visuais, a linguagem&nbsp;<a href=\"https:\/\/processing.org\/\" target=\"_blank\">Processing<\/a>&nbsp;hoje tem aplica&ccedil;&atilde;o em &aacute;reas bem diversas, entre elas a visualiza&ccedil;&atilde;o de dados. Sua sintaxe simplificada &eacute; uma boa alternativa para iniciantes no mundo do c&oacute;digo, e sua plataforma de desenvolvimento pode ser&nbsp;<a href=\"https:\/\/processing.org\/download\/\" target=\"_blank\">baixada gratuitamente<\/a>&nbsp;no site.<\/p>\n<p>Nesse tutorial, vamos ver como carregar dados de um arquivo externo e criar um gr&aacute;fico de popula&ccedil;&atilde;o x &aacute;rea para as 10 cidades mais populosas do mundo.<\/p>\n<h2 id=\"o-ambiente-processing\" class=\"summary-item\"><a href=\"#o-ambiente-processing\">O ambiente Processing<\/a><\/h2>\n<p>Ao abrir o programa, voc&ecirc; vai encontrar algo como um editor de texto. &Eacute; l&aacute; que vamos digitar os comandos para fazer a visualiza&ccedil;&atilde;o &mdash; n&atilde;o, n&atilde;o existe uma &ldquo;barra de ferramentas&rdquo; aqui, j&aacute; que o objetivo original do Processing &eacute; ensinar fundamentos de programa&ccedil;&atilde;o.<\/p>\n<p>Pra executar o script que vamos escrever, &eacute; s&oacute; apertar o bot&atilde;o de&nbsp;play&nbsp;no topo esquerdo da janela. Uma nova janela vai se abrir, por enquanto vazia, j&aacute; que n&atilde;o criamos nenhum comando ainda. Feche ela (ou pressione o bot&atilde;o&nbsp;stop) e salve seu arquivo &mdash; por default o nome dele &eacute; a data de cria&ccedil;&atilde;o, mas voc&ecirc; pode escolher qualquer outro nome&mdash; antes de come&ccedil;armos a programar.<\/p>\n<div><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-352\" alt=\"Processing\" src=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing01-1024x787.jpeg\" width=\"717\" height=\"551\" srcset=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing01-1024x787.jpeg 1024w, https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing01-300x230.jpeg 300w, https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing01.jpeg 1326w\" sizes=\"auto, (max-width: 717px) 100vw, 717px\" \/><\/div>\n<h2 id=\"comandos-basicos\" class=\"summary-item\"><a href=\"#comandos-basicos\">Comandos b&aacute;sicos<\/a><\/h2>\n<p>Para come&ccedil;ar a entender como funciona a sintaxe do Processing, digite o c&oacute;digo abaixo e execute o programa:<\/p>\n<p><code>size(1200, 200);<br> ellipse(600, 100, 100, 100);<\/code><\/p>\n<p>Voc&ecirc; vai ver uma janela como essa:<\/p>\n<div><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-353\" alt=\"Processing\" src=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing02-1024x376.png\" width=\"614\" height=\"226\" srcset=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing02-1024x376.png 1024w, https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing02-300x110.png 300w, https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing02.png 1828w\" sizes=\"auto, (max-width: 614px) 100vw, 614px\" \/><\/div>\n<p><b>O que isso significa?<\/b><\/p>\n<p>Esses comandos s&atilde;o chamados de&nbsp;<i>fun&ccedil;&otilde;es<\/i>. Usamos duas delas:&nbsp;<i>size<\/i>&nbsp;e&nbsp;<i>ellipse.<\/i>&nbsp;A primeira define o tamanho (em pixels) do documento em que vamos trabalhar. A segunda desenha uma elipse. Ao lado de cada uma delas, dentro dos par&ecirc;nteses, temos os&nbsp;<i>par&acirc;metros<\/i>: informa&ccedil;&otilde;es de que o programa precisa pra saber como vai executar cada uma das fun&ccedil;&otilde;es. No nosso caso:<\/p>\n<p><code>size(largura do documento,&nbsp;altura do documento);<br> ellipse(coordenada horizontal da elipse,&nbsp;coordenada vertical da elipse,&nbsp;largura da elipse,&nbsp;altura da elipse);<\/code><\/p>\n<p>Ou seja, d&aacute; pra traduzir a segunda linha como &ldquo;desenhe uma elipse a 400 pixels da margem esquerda e 100 pixels do topo, com 100 pixels de altura e 100 pixels de largura&rdquo;. Experimente mudar esses n&uacute;meros para entender melhor como eles funcionam.<\/p>\n<p>Por fim, alguns detalhes aos quais temos que ficar atentos:<\/p>\n<ul>\n<li>os par&acirc;metros t&ecirc;m que ser sempre separados por v&iacute;rgula (os espa&ccedil;os em branco n&atilde;o fazem diferen&ccedil;a);<\/li>\n<li>sempre precisamos de um&nbsp;<b>;<\/b>&nbsp;ao fim de cada comando.<\/li>\n<li>n&atilde;o importa se voc&ecirc; der espa&ccedil;o ou par&aacute;grafo entre esses s&iacute;mbolos, mas eles t&ecirc;m que estar l&aacute;!<\/li>\n<\/ul>\n<p>Se voc&ecirc; estiver curioso para experimentar outras formas antes de seguir adiante, d&ecirc; uma olhada nos comandos abaixo:<\/p>\n<p><code>line()<br> point()<br> rect()<br> triangle()<\/code><\/p>\n<p>Voc&ecirc; vai encontrar instru&ccedil;&otilde;es para cada um deles na&nbsp;<a href=\"https:\/\/processing.org\/reference\/\" target=\"_blank\">p&aacute;gina de refer&ecirc;ncia<\/a>&nbsp;do Processing.<\/p>\n<h2 id=\"visualizando-precisao-vs-sintese\" class=\"summary-item\"><a href=\"#visualizando-precisao-vs-sintese\">Visualizando: precis&atilde;o vs s&iacute;ntese<\/a><\/h2>\n<p>Para enxergar a densidade demogr&aacute;fica de cada cidade aqui, vamos usar uma t&eacute;cnica bem direta: representar o n&uacute;mero total de habitantes como pontos dentro da &aacute;rea da cidade. Esse recurso acaba tendo uma leitura menos precisa que um gr&aacute;fico de barras, por exemplo &mdash; voc&ecirc; n&atilde;o consegue dizer a &aacute;rea ou a popula&ccedil;&atilde;o das cidades apenas olhando as figuras abaixo:<\/p>\n<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-354\" alt=\"Processing\" src=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing03.png\" width=\"318\" height=\"216\" srcset=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing03.png 398w, https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing03-300x203.png 300w\" sizes=\"auto, (max-width: 318px) 100vw, 318px\" \/><\/p>\n<p>Nossa inten&ccedil;&atilde;o, por&eacute;m, &eacute; simplesmente apresentar uma compara&ccedil;&atilde;o visual direta e intuitiva do tema: mais pontos, mais gente; quadrado maior, maior &aacute;rea. Ao escolher uma forma ou outra de visualiza&ccedil;&atilde;o, pense sempre no balan&ccedil;o entre essas duas vari&aacute;veis e analise como elas podem funcionar melhor de acordo com o objetivo do seu gr&aacute;fico.<\/p>\n<h2 id=\"formatando-os-dados\" class=\"summary-item\"><a href=\"#formatando-os-dados\">Formatando os dados<\/a><\/h2>\n<p>Vamos utilizar os dados de 2013 do&nbsp;<a href=\"https:\/\/www.demographia.com\/db-worldua.pdf\" target=\"_blank\">Demographia World Urban Areas<\/a>&nbsp;para desenhar um gr&aacute;fico com o ranking das 10 cidades mais populosas do mundo (tabela 1).<\/p>\n<p>Um formato de dados bem simples e pr&aacute;tico que pode ser lido no Processing &eacute; o&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Tab-separated_values\" target=\"_blank\">tsv<\/a>&nbsp;(tab-separated values). Basicamente, &eacute; um formato de texto que funciona como uma tabela, com os valores separados por&nbsp;<i>tabs<\/i>&nbsp;ao inv&eacute;s de c&eacute;lulas.<\/p>\n<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-355\" alt=\"Processing\" src=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing04-1024x277.png\" width=\"717\" height=\"194\" srcset=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing04-1024x277.png 1024w, https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing04-300x81.png 300w\" sizes=\"auto, (max-width: 717px) 100vw, 717px\" \/><\/p>\n<p>Transportar dados de um pdf para uma tabela nem sempre &eacute; uma tarefa f&aacute;cil, uma vez que as quebras dificilmente seguem o formato de c&eacute;lulas de que precisamos.<\/p>\n<p>Na imagem acima, s&oacute; vamos precisar das colunas&nbsp;<i>Urban Area<\/i>,&nbsp;<i>Population Estimate<\/i>&nbsp;e&nbsp;<i>Land Area km2<\/i>. Voc&ecirc; pode baixar o arquivo j&aacute; formatado <a href=\"https:\/\/#\">aqui<\/a> ou tentar criar o seu:<\/p>\n<ul>\n<li>no Windows: use o&nbsp;<i>Bloco de Notas<\/i>&nbsp;e salve o arquivo como &ldquo;cidades.tsv&rdquo;<\/li>\n<li>no Mac: use o&nbsp;<i>Text Edit<\/i>. Pressione&nbsp;<i>command + shift + T<\/i>&nbsp;para transformar o arquivo em texto n&atilde;o formatado. E, quando salvar, selecione&nbsp;<i>Unicode (UTF-8)<\/i>&nbsp;na op&ccedil;&atilde;o&nbsp;<i>encoding<\/i>.<\/li>\n<\/ul>\n<h2 id=\"carregando-os-dados\" class=\"summary-item\"><a href=\"#carregando-os-dados\">Carregando os dados<\/a><\/h2>\n<p>Arraste o arquivo para a janela do Processing e voc&ecirc; ver&aacute; a mensagem&nbsp;<i>One file added to the sketch<\/i>. Isso apenas criou uma c&oacute;pia de cidades.tsv na pasta que o Processing criou para seu arquivo. Para voc&ecirc; ler ele dentro do script, adicione o c&oacute;digo abaixo e execute:<\/p>\n<p><code>size(1200, 200);<br> Table tabela = loadTable(\"cidades.tsv\", \"header\");<br> for(int i = 0;<br> i &lt; tabela.getRowCount();<br> i = i + 1){<br> TableRow linha = tabela.getRow(i);<br> rect(120*i, 50,<br> linha.getInt(\"&aacute;rea\"), linha.getInt(\"&aacute;rea\"));<br> }<\/code><\/p>\n<h2 id=\"visualizando-a-area\" class=\"summary-item\"><a href=\"#visualizando-a-area\">Visualizando a &aacute;rea<\/a><\/h2>\n<p>Ok, o que esse c&oacute;digo est&aacute; fazendo? Vamos entender linha a linha:<\/p>\n<p><code>\/\/ Definindo o tamanho do documento<br> size(1200, 200);<br> \/\/ Carregando o arquivo dentro de uma tabela. \"header\" significa que a primeira linha do arquivo deve ser entendida como um cabe&ccedil;alho.<br> Table tabela = loadTable(\"cidades.tsv\", \"header\");<br> \/\/ Criando uma a&ccedil;&atilde;o que vai ser repetida v&aacute;rias vezes,...<\/code><\/p>\n<p>for(int i = 0; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ &hellip;a partir de um contador que come&ccedil;a em zero,&hellip;<\/p>\n<p>i &lt; tabela.getRowCount(); &nbsp; &nbsp;&nbsp;\/\/&nbsp;&hellip;termina no tamanho da tabela&hellip;<br> i = i + 1){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\/\/&nbsp;&hellip;e cresce de um em um.<br> \/\/ Em resumo, &eacute; como se o programa come&ccedil;asse a contar &ldquo;0, 1, 2, 3&hellip;&rdquo; at&eacute; &ldquo;10&rdquo;, que &eacute; o n&uacute;mero de linhas da nossa tabela. Para cada vez que ele conta, executa a a&ccedil;&atilde;o abaixo:<\/p>\n<p>\/\/ Seleciona a linha correspondente &agrave; contagem (i)<br> TableRow linha = tabela.getRow(i);<br> \/\/ Desenha um ret&acirc;ngulo na posi&ccedil;&atilde;o y 50 e x segundo a f&oacute;rmula &ldquo;120 vezes contagem&rdquo;.<\/p>\n<p>\/\/ Quer dizer que, na sequ&ecirc;ncia, a coordenada x vai ser: 0 , 120, 240, 360&hellip;&nbsp;at&eacute; 1080.<br> \/\/ Como nossa contagem de 10 elementos come&ccedil;a em 0, ela vai at&eacute; 9!<br> rect(120*i, 50,<br> Define como largura e altura de cada ret&acirc;ngulo<\/p>\n<p>o valor que for lido na coluna &ldquo;&aacute;rea&rdquo;<br> linha.getInt(&ldquo;&aacute;rea&rdquo;), linha.getInt(&ldquo;&aacute;rea&rdquo;));<br> }<\/p>\n<p>Na imagem resultante, n&atilde;o vemos os ret&acirc;ngulos inteiros, porque os valores de &aacute;rea que temos para cada cidade s&atilde;o muito grandes:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-356\" alt=\"Processing\" src=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing05-1024x261.png\" width=\"614\" height=\"157\" srcset=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing05-1024x261.png 1024w, https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing05-300x76.png 300w, https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing05-1160x296.png 1160w\" sizes=\"auto, (max-width: 614px) 100vw, 614px\" \/><\/p>\n<p>Uma boa solu&ccedil;&atilde;o pra resolver isso &eacute; trocar o comando do ret&acirc;ngulo para:<\/p>\n<p><code>rect(120*i, 50,<br> sqrt(linha.getInt(\"&aacute;rea\")), sqrt(linha.getInt(\"&aacute;rea\")));<\/code><\/p>\n<p>A fun&ccedil;&atilde;o&nbsp;<i>sqrt<\/i>&nbsp;calcula a raiz quadrada de um valor. Pra n&oacute;s, &eacute; um jeito r&aacute;pido e &uacute;til de diminuir os tamanhos:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-357\" alt=\"Processing\" src=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing06-1024x261.png\" width=\"614\" height=\"157\" srcset=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing06-1024x261.png 1024w, https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing06-300x76.png 300w, https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing06-1160x296.png 1160w\" sizes=\"auto, (max-width: 614px) 100vw, 614px\" \/><\/p>\n<p>Al&eacute;m disso, essa corre&ccedil;&atilde;o faz com que as&nbsp;<i>&aacute;reas&nbsp;<\/i>dos ret&acirc;ngulos, n&atilde;o sua&nbsp;<i>altura<\/i>&nbsp;e&nbsp;<i>largura<\/i>, sejam proporcionais aos valores que estamos representando. Isso &eacute; indispens&aacute;vel para evitarmos distor&ccedil;&otilde;es sempre que usarmos uma figura como um c&iacute;rculo ou um ret&acirc;ngulo. Se s&oacute; tiv&eacute;ssemos divido o valor da &aacute;rea por 100, por exemplo, ter&iacute;amos uma imagem desproporcional:<\/p>\n<p><code>rect(120*i, 50,<br> linha.getInt(\"&aacute;rea\")\/100, linha.getInt(\"&aacute;rea\")\/100);<\/code><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-358\" alt=\"Processing\" src=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing07-1024x261.png\" width=\"614\" height=\"157\" srcset=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing07-1024x261.png 1024w, https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing07-300x76.png 300w, https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing07-1160x296.png 1160w\" sizes=\"auto, (max-width: 614px) 100vw, 614px\" \/><\/p>\n<p>A imagem acima faz as cidades parecerem muito mais diferentes em &aacute;rea do que realmente s&atilde;o, uma distor&ccedil;&atilde;o causada pela confus&atilde;o entre&nbsp;<i>dimens&atilde;o linear<\/i>&nbsp;(altura e largura) e&nbsp;<i>dimens&atilde;o quadrada<\/i>&nbsp;(&aacute;rea).<\/p>\n<h2 id=\"simplicando-o-codigo\" class=\"summary-item\"><a href=\"#simplicando-o-codigo\">Simplicando o c&oacute;digo<\/a><\/h2>\n<p>Antes de partir para o segundo dado da nossa visualiza&ccedil;&atilde;o, a popula&ccedil;&atilde;o de cada cidade, vamos tentar simplificar algumas coisas para deixar nosso algoritmo mais intelig&iacute;vel:<\/p>\n<p><code>size(1200, 200);<br> Table tabela = loadTable(\"cidades.tsv\", \"header\");<br> for(int i = 0;<br> i &lt; tabela.getRowCount();<br> i = i + 1){<br> TableRow linha = tabela.getRow(i);<br> int posX =&nbsp;120*i;<br> int posY = 50;<br> float lado =&nbsp;sqrt(linha.getInt(\"&aacute;rea\"));<br> rect(posX, posY, lado, lado);<br> }<\/code><\/p>\n<p>Se voc&ecirc; executar o c&oacute;digo acima, vai ver que o resultado visual n&atilde;o se altera em nada. O que fizemos foi apenas escrever de uma forma diferente os mesmos comandos: ao inv&eacute;s de calcular tudo dentro da fun&ccedil;&atilde;o&nbsp;<i>rect()<\/i>, definimos 3&nbsp;<i>vari&aacute;veis<\/i>&nbsp;com os valores e depois usamos elas no desenho do ret&acirc;ngulo:<\/p>\n<p><code>int &nbsp; &nbsp; &nbsp;\/\/ Especifica a cria&ccedil;&atilde;o de uma vari&aacute;vel de valor inteiro<br> posX &nbsp; &nbsp;&nbsp;\/\/ Nome da vari&aacute;vel, inventado, a fim de que eu lembre ao que ela se refere<br> =&nbsp;120*i;&nbsp;\/\/ atribui o valor \"120 vezes i\" &agrave; minha vari&aacute;vel<\/code><\/p>\n<p>No caso do lado do ret&acirc;ngulo,&nbsp;<i>float<\/i>&nbsp;quer dizer que essa vari&aacute;vel pode armazenar um n&uacute;mero fracion&aacute;rio, j&aacute; que n&atilde;o sabemos se o resultado da f&oacute;rmula &ldquo;raiz da &aacute;rea&rdquo; vai ser um n&uacute;mero inteiro.<\/p>\n<h2 id=\"visualizando-a-populacao\" class=\"summary-item\"><a href=\"#visualizando-a-populacao\">Visualizando a popula&ccedil;&atilde;o<\/a><\/h2>\n<p>Como falamos anteriormente, a ideia aqui vai ser representar o n&uacute;mero total de habitantes de cada cidade como pontos dentro das &aacute;reas que j&aacute; desenhamos. Abaixo da linha com o comando&nbsp;<i>rect()<\/i>, adicione o seguinte c&oacute;digo:<\/p>\n<p><code>for(int j = 0;<br> j &lt; linha.getInt(\"popula&ccedil;&atilde;o\");<br> j = j + 1){<br> point(posX,posY);<br> }<\/code><\/p>\n<p>Fique atento pra escrever esse comando antes da &uacute;ltima chave&nbsp;<i>}<\/i>&nbsp;que voc&ecirc; j&aacute; tinha no documento. Estando dentro dessa chave, o Processing vai entender que esse comando deve ser repetido a cada vez que ele estiver lendo uma linha da tabela &mdash; &eacute; o que queremos, j&aacute; que vamos desenhar a popula&ccedil;&atilde;o para cada cidade. A estrutura aqui &eacute; parecida com a anterior:<\/p>\n<p><code>\/\/ A partir de um contador \"j\"...<br> for(int j = 0; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\/\/...que come&ccedil;a em zero...<br> j &lt; linha.getInt(\"popula&ccedil;&atilde;o\"); &nbsp;\/\/..vai at&eacute; o n&uacute;mero lido<br> \/\/ &nbsp; na coluna \"popula&ccedil;&atilde;o\", de cada linha...<br> j = j + 1){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/...e cresce de um em um...<\/code><\/p>\n<p>\/\/&hellip;desenhe um ponto.<br> point(posX,posY);<br> }<\/p>\n<p>Se voc&ecirc; tentar executar esse c&oacute;digo, &eacute; prov&aacute;vel que seu computador demore bastante &mdash; se n&atilde;o travar. Isso porque o n&uacute;mero de repeti&ccedil;&otilde;es que estamos usando &eacute; muito grande:&nbsp;37.239.000 pontos s&oacute; para a cidade de T&oacute;quio! Para resolver isso, troque a segunda linha desse trecho para:<\/p>\n<p><code>j &lt; linha.getInt(\"popula&ccedil;&atilde;o\")\/5000;<\/code><\/p>\n<p>Com isso, vamos desenhar 1 ponto para cada 5000 habitantes (n&atilde;o mais 1 para 1).<\/p>\n<p>Ainda falta corrigir um detalhe: se voc&ecirc; estudar com aten&ccedil;&atilde;o o comando&nbsp;<i>point()<\/i>, vai perceber que todos os pontos de cada cidade est&atilde;o desenhados no mesmo local, uns sobre os outros: na coordenada x e y que corresponde ao canto superior esquerdo dos quadrados. Troque essa linha para:<\/p>\n<p><code>point( random(posX, posX + lado),<br> random(posY, posY + lado));<\/code><\/p>\n<p>O comando&nbsp;<i>random()<\/i>&nbsp;resulta em um n&uacute;mero aleat&oacute;rio, sorteado entre um valor m&iacute;nimo e outro m&aacute;ximo. No nosso caso, o resultado &eacute;:<\/p>\n<p><code>point(&nbsp;n&uacute;mero aleat&oacute;rio entre&nbsp;(a coordenada x do ret&acirc;ngulo&nbsp;e&nbsp;a mesma coordenada + o lado,<br> n&uacute;mero aleat&oacute;rio entre&nbsp;(a coordenada y do ret&acirc;ngulo&nbsp;e&nbsp;a mesma coordenada + o lado);<\/code><\/p>\n<p>Execute o programa e teremos nosso resultado final:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-359\" alt=\"Processing\" src=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing08-1024x261.png\" width=\"614\" height=\"157\" srcset=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing08-1024x261.png 1024w, https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing08-300x76.png 300w, https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing08-1160x296.png 1160w\" sizes=\"auto, (max-width: 614px) 100vw, 614px\" \/><\/p>\n<p>No fim, as compara&ccedil;&otilde;es ficam evidentes: T&oacute;quio e Nova York s&atilde;o as cidades com maior &aacute;rea, mas densidade demogr&aacute;fica &eacute; bem menor que a de cidades como Manila e Karachi.<\/p>\n<p>Se voc&ecirc; quiser salvar o arquivo gerado como uma imagem para usar em outro programa, simplesmente acrescente uma &uacute;ltima linha:<\/p>\n<p><code>save(\"cidades.jpg\");<\/code><\/p>\n<p>Para salvar em outro formato, como&nbsp;<i>tif<\/i>&nbsp;ou&nbsp;<i>png<\/i>, simplesmente altere a extens&atilde;o do arquivo no c&oacute;digo acima.<\/p>\n<h2 id=\"conclusao\" class=\"summary-item\"><a href=\"#conclusao\">Conclus&atilde;o<\/a><\/h2>\n<p>Programar pela primeira vez pode parecer uma tarefa pouco amig&aacute;vel. Por&eacute;m, &agrave; medida que voc&ecirc; vai entendendo a l&oacute;gica por tr&aacute;s dos comandos, entender v&aacute;rias linguagens &eacute; apenas uma quest&atilde;o de aprender diferentes sintaxes, umas mais parecidas, outras menos. Algo como falar v&aacute;rios idiomas.<\/p>\n<p>Mesmo que o trabalho seja &aacute;rduo no come&ccedil;o, voc&ecirc; vai ver que as vantagens compensam: no caso do arquivo que usamos, por exemplo, basta alterar os dados do&nbsp;<i>.tsv<\/i>&nbsp;para gerar uma vers&atilde;o diferente da visualiza&ccedil;&atilde;o, sem ter que fazer ajustes manuais na imagem. Al&eacute;m disso, programar deve ser entendido mais como uma linguagem que uma ferramenta: ao inv&eacute;s de recursos pr&eacute;-definidos, voc&ecirc; pode contruir o gr&aacute;fico que quiser e julgar mais adequado pros seus dados. As possibilidades s&atilde;o infinitas.<\/p>\n<p>D&ecirc; uma olhada no arquivo desse exemplo e tente alterar aos poucos os par&acirc;metros para personaliz&aacute;-lo: cor de fundo, tamanho, espa&ccedil;o entre as &aacute;reas etc. A partir disso, explore a p&aacute;gina de refer&ecirc;ncia do Processing e tente refazer esse exemplo usando outro tipo de visualiza&ccedil;&atilde;o, como barras ou linhas.<\/p>\n\r\n\t\t<div class='author-shortcodes'>\r\n\t\t\t<div class='author-inner'>\r\n\t\t\t\t<div class='author-image'>\r\n\t\t\t<img src='https:\/\/si0.twimg.com\/profile_images\/1298845056\/gabriel_2011.jpg' alt='' \/>\r\n\t\t\t<div class='author-overlay'><\/div>\r\n\t\t<\/div> <!-- .author-image --> \r\n\t\t<div class='author-info'>\r\n\t\t\tSou um designer gr&aacute;fico apaixonado por n&uacute;meros. Atualmente, sou aluno do programa de Mestrado em Belas Artes &ndash; Design &amp; Technology no Parsons The New School for Design. Meu trabalho mais recente foi como designer s&ecirc;nior no time de Inova&ccedil;&atilde;o em Tecnologia e Experi&ecirc;ncia do Usu&aacute;rio do Ita&uacute;, o maior banco privado do Brasil. Durante os &uacute;ltimos seis anos, tenho trabalhado com informa&ccedil;&atilde;o e design gr&aacute;fico, principalmente para revistas, e conquistei alguns pr&ecirc;mios. Participei como palestrantes de alguns eventos, como o Campus Party, o World Information Architecture Day e o Pixel Show, a maior confer&ecirc;ncia no Brasil sobre arte e criatividade. Tamb&eacute;m organizei workshops sobre visualiza&ccedil;&atilde;o de dados utilizando a linguagem de programa&ccedil;&atilde;o Processing.\r\n\t\t<\/div> <!-- .author-info -->\r\n\t\t\t<\/div> <!-- .author-inner -->\r\n\t\t<\/div> <!-- .author-shortcodes -->\n\n<p><\/p>\n<meta http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\"><\/body><\/html>","protected":false},"excerpt":{"rendered":"<p>Nesse tutorial, vamos ver como carregar dados de um arquivo externo e criar um gr&aacute;fico de popula&ccedil;&atilde;o x &aacute;rea para as 10 cidades mais populosas do mundo.<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_wpcom_ai_launchpad_first_post":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[14,11],"tags":[39,41,40],"class_list":["post-351","post","type-post","status-publish","format-standard","hentry","category-design","category-visualization","tag-charts","tag-cities","tag-graphs","skill-chart-making","skill-coding"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Visualizando dados com Processing<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Visualizando dados com Processing\" \/>\n<meta property=\"og:description\" content=\"Nesse tutorial, vamos ver como carregar dados de um arquivo externo e criar um gr&aacute;fico de popula&ccedil;&atilde;o x &aacute;rea para as 10 cidades mais populosas do mundo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/\" \/>\n<meta property=\"og:site_name\" content=\"geojournalism.org\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/geojournalism\/\" \/>\n<meta property=\"article:published_time\" content=\"2013-08-27T21:33:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-10-31T18:40:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing01-1024x787.jpeg\" \/>\n<meta name=\"author\" content=\"Gabriel Gianordoli\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@geojournalism\" \/>\n<meta name=\"twitter:site\" content=\"@geojournalism\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gabriel Gianordoli\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"22 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/geojournalism.org\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/geojournalism.org\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/\"},\"author\":{\"name\":\"Gabriel Gianordoli\",\"@id\":\"https:\/\/geojournalism.org\/#\/schema\/person\/65e27321256811aa9e23692d45fcfef8\"},\"headline\":\"Visualizando dados com Processing\",\"datePublished\":\"2013-08-27T21:33:46+00:00\",\"dateModified\":\"2014-10-31T18:40:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/geojournalism.org\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/\"},\"wordCount\":4096,\"commentCount\":5,\"image\":{\"@id\":\"https:\/\/geojournalism.org\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing01-1024x787.jpeg\",\"keywords\":[\"charts\",\"cities\",\"graphs\"],\"articleSection\":[\"Design\",\"Visualization\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/\",\"url\":\"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/\",\"name\":\"Visualizing data with ProcessingVisualizando dados com Processing\",\"isPartOf\":{\"@id\":\"https:\/\/geojournalism.org\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/geojournalism.org\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing01-1024x787.jpeg\",\"datePublished\":\"2013-08-27T21:33:46+00:00\",\"dateModified\":\"2014-10-31T18:40:17+00:00\",\"author\":{\"@id\":\"https:\/\/geojournalism.org\/#\/schema\/person\/65e27321256811aa9e23692d45fcfef8\"},\"breadcrumb\":{\"@id\":\"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[[\"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/\"]]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/#primaryimage\",\"url\":\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing01-1024x787.jpeg\",\"contentUrl\":\"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing01-1024x787.jpeg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/geojournalism.org\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Design\",\"item\":\"https:\/\/geojournalism.org\/pt\/category\/design\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Visualizing data with Processing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/geojournalism.org\/pt\/#website\",\"url\":\"https:\/\/geojournalism.org\/pt\/\",\"name\":\"geojournalism.org\",\"description\":\"As melhores ferramentas para reportagem multim\u00eddia\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/geojournalism.org\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/geojournalism.org\/#\/schema\/person\/65e27321256811aa9e23692d45fcfef8\",\"name\":\"Gabriel Gianordoli\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/4859d33ff09d9a3b82f6a2da8f5c4638dbfe12d2a0373fc1a4e3928378951976?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4859d33ff09d9a3b82f6a2da8f5c4638dbfe12d2a0373fc1a4e3928378951976?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4859d33ff09d9a3b82f6a2da8f5c4638dbfe12d2a0373fc1a4e3928378951976?s=96&d=mm&r=g\",\"caption\":\"Gabriel Gianordoli\"},\"sameAs\":[\"https:\/\/gianordoli.com\"],\"url\":\"https:\/\/geojournalism.org\/pt\/author\/gabriel-gianordoli\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Visualizando dados com Processing","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/","og_locale":"pt_BR","og_type":"article","og_title":"Visualizando dados com Processing","og_description":"Nesse tutorial, vamos ver como carregar dados de um arquivo externo e criar um gr&aacute;fico de popula&ccedil;&atilde;o x &aacute;rea para as 10 cidades mais populosas do mundo.","og_url":"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/","og_site_name":"geojournalism.org","article_publisher":"https:\/\/www.facebook.com\/geojournalism\/","article_published_time":"2013-08-27T21:33:46+00:00","article_modified_time":"2014-10-31T18:40:17+00:00","og_image":[{"url":"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing01-1024x787.jpeg","type":"","width":"","height":""}],"author":"Gabriel Gianordoli","twitter_card":"summary_large_image","twitter_creator":"@geojournalism","twitter_site":"@geojournalism","twitter_misc":{"Escrito por":"Gabriel Gianordoli","Est. tempo de leitura":"22 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/geojournalism.org\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/#article","isPartOf":{"@id":"https:\/\/geojournalism.org\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/"},"author":{"name":"Gabriel Gianordoli","@id":"https:\/\/geojournalism.org\/#\/schema\/person\/65e27321256811aa9e23692d45fcfef8"},"headline":"Visualizando dados com Processing","datePublished":"2013-08-27T21:33:46+00:00","dateModified":"2014-10-31T18:40:17+00:00","mainEntityOfPage":{"@id":"https:\/\/geojournalism.org\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/"},"wordCount":4096,"commentCount":5,"image":{"@id":"https:\/\/geojournalism.org\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/#primaryimage"},"thumbnailUrl":"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing01-1024x787.jpeg","keywords":["charts","cities","graphs"],"articleSection":["Design","Visualization"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/","url":"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/","name":"Visualizing data with ProcessingVisualizando dados com Processing","isPartOf":{"@id":"https:\/\/geojournalism.org\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/#primaryimage"},"image":{"@id":"https:\/\/geojournalism.org\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/#primaryimage"},"thumbnailUrl":"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing01-1024x787.jpeg","datePublished":"2013-08-27T21:33:46+00:00","dateModified":"2014-10-31T18:40:17+00:00","author":{"@id":"https:\/\/geojournalism.org\/#\/schema\/person\/65e27321256811aa9e23692d45fcfef8"},"breadcrumb":{"@id":"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":[["https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/"]]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/#primaryimage","url":"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing01-1024x787.jpeg","contentUrl":"https:\/\/geojournalism.org\/wp-content\/uploads\/2013\/08\/processing01-1024x787.jpeg"},{"@type":"BreadcrumbList","@id":"https:\/\/geojournalism.org\/pt\/2013\/08\/portugues-as-cidades-mais-populosas-do-mundo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/geojournalism.org\/pt\/"},{"@type":"ListItem","position":2,"name":"Design","item":"https:\/\/geojournalism.org\/pt\/category\/design\/"},{"@type":"ListItem","position":3,"name":"Visualizing data with Processing"}]},{"@type":"WebSite","@id":"https:\/\/geojournalism.org\/pt\/#website","url":"https:\/\/geojournalism.org\/pt\/","name":"geojournalism.org","description":"As melhores ferramentas para reportagem multim\u00eddia","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/geojournalism.org\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/geojournalism.org\/#\/schema\/person\/65e27321256811aa9e23692d45fcfef8","name":"Gabriel Gianordoli","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/4859d33ff09d9a3b82f6a2da8f5c4638dbfe12d2a0373fc1a4e3928378951976?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4859d33ff09d9a3b82f6a2da8f5c4638dbfe12d2a0373fc1a4e3928378951976?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4859d33ff09d9a3b82f6a2da8f5c4638dbfe12d2a0373fc1a4e3928378951976?s=96&d=mm&r=g","caption":"Gabriel Gianordoli"},"sameAs":["https:\/\/gianordoli.com"],"url":"https:\/\/geojournalism.org\/pt\/author\/gabriel-gianordoli\/"}]}},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/geojournalism.org\/pt\/wp-json\/wp\/v2\/posts\/351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/geojournalism.org\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geojournalism.org\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geojournalism.org\/pt\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/geojournalism.org\/pt\/wp-json\/wp\/v2\/comments?post=351"}],"version-history":[{"count":36,"href":"https:\/\/geojournalism.org\/pt\/wp-json\/wp\/v2\/posts\/351\/revisions"}],"predecessor-version":[{"id":1413,"href":"https:\/\/geojournalism.org\/pt\/wp-json\/wp\/v2\/posts\/351\/revisions\/1413"}],"wp:attachment":[{"href":"https:\/\/geojournalism.org\/pt\/wp-json\/wp\/v2\/media?parent=351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geojournalism.org\/pt\/wp-json\/wp\/v2\/categories?post=351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geojournalism.org\/pt\/wp-json\/wp\/v2\/tags?post=351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}