{"id":8011,"date":"2019-02-28T09:25:27","date_gmt":"2019-02-28T12:25:27","guid":{"rendered":"http:\/\/www.fernandoquadro.com.br\/html\/?p=8011"},"modified":"2020-08-04T18:50:29","modified_gmt":"2020-08-04T21:50:29","slug":"introducao-ao-leaflet-trilhas-parte-3","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2019\/02\/28\/introducao-ao-leaflet-trilhas-parte-3\/","title":{"rendered":"Introdu\u00e7\u00e3o ao Leaflet \u2013 Trilhas com GeoJSON"},"content":{"rendered":"<p>Para adicionar uma trilha ao nosso mapa, vamos convert\u00ea-lo de um shapefile para GeoJSON. H\u00e1 mais de uma maneira de fazer isso &#8211; voc\u00ea poderia usar ogr2ogr, mas optamos por usar o QGIS, pois ele n\u00e3o apenas o converteria, mas tamb\u00e9m transformaria o sistema de coordenadas ao mesmo tempo.<\/p>\n<p><strong>1. Convertendo para GeoJSON<\/strong><\/p>\n<p>Com o shapefile carregado no QGIS, podemos clicar com o bot\u00e3o direito na camada e escolher a op\u00e7\u00e3o &#8220;<em>Export -> Save Features As\u2026<\/em>&#8221;<\/p>\n<p><center><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/leaflet_d3_i1.png\" alt=\"\" width=\"476\" height=\"554\" class=\"aligncenter size-full wp-image-8013\" srcset=\"https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/leaflet_d3_i1.png 476w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/leaflet_d3_i1-258x300.png 258w\" sizes=\"auto, (max-width: 476px) 100vw, 476px\" \/><\/center><\/p>\n<p>Escolhemos o sistema de coordenadas apropriado ( EPSG:4326 &#8211; WGS 84) para uso com o Leaflet e o QGIS faz a convers\u00e3o enquanto salva no GeoJSON. Isso torna nossa trilha pronta para uso no Leaflet.<\/p>\n<p><strong>2. Adicionando o arquivo<\/strong><\/p>\n<p>O <a href=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/rails.zip\" rel=\"noopener noreferrer\" target=\"_blank\">arquivo GeoJSON<\/a> precisa ser adicionado ao nosso arquivo HTML como um script, mas primeiro precisamos modific\u00e1-lo adicionando um nome de vari\u00e1vel:<\/p>\n<pre>\r\nvar trail = {\r\n\"type\": \"FeatureCollection\",\r\n\"name\": \"rails\",\r\n\"crs\": { \"type\": \"name\", \"properties\": { \"name\": \"urn:ogc:def:crs:EPSG::3857\" } },\r\n\"features\": [\r\n...\r\n<\/pre>\n<p>Adicionando o <em>var trail<\/em> ao in\u00edcio do arquivo nos permitir\u00e1 fazer refer\u00eancia a ele no Leaflet.<\/p>\n<p>Em seguida, adicionamos o script e agora podemos adicion\u00e1-lo ao mapa:<\/p>\n<pre>\r\n  var trail = L.geoJSON(trail);\r\n  trail.addTo(map);\r\n<\/pre>\n<p><strong>3. Estilizando a trilha<\/strong><\/p>\n<p>Podemos mudar a apar\u00eancia da trilha adicionando op\u00e7\u00f5es \u00e0 declara\u00e7\u00e3o <em>L.geoJSON<\/em>:<\/p>\n<pre>\r\n&nbsp;&nbsp;var&nbsp;thetrail&nbsp;=&nbsp;L.geoJSON(trail,&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color:&nbsp;'#800000',\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weight:&nbsp;3,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dashArray:&nbsp;'12&nbsp;8&nbsp;12',\r\n&nbsp;&nbsp;});\r\n<\/pre>\n<p>Isso transforma a trilha em vermelho escuro, aumentando sua largura para 3 pixels e criando uma linha tracejada.<\/p>\n<p><strong>4. Adicionando r\u00f3tulo<\/strong><\/p>\n<p>Ao adicionar este r\u00f3tulo quando se passa o mouse sobre a trilha o mesmo \u00e9 apresentado na tela:<\/p>\n<pre>\r\nthetrail.bindTooltip('Trilha de Brumadinho')\r\n<\/pre>\n<p><strong>5. Resultado<\/strong><\/p>\n<p>Ap\u00f3s nossas mudan\u00e7as o resultado do nosso mapa agora \u00e9 esse:<\/p>\n<p><center><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/rails_brumadinho.png\" alt=\"\" width=\"711\" height=\"708\" class=\"aligncenter size-full wp-image-8019\" srcset=\"https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/rails_brumadinho.png 711w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/rails_brumadinho-150x150.png 150w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/rails_brumadinho-300x300.png 300w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/rails_brumadinho-144x144.png 144w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/rails_brumadinho-600x597.png 600w\" sizes=\"auto, (max-width: 711px) 100vw, 711px\" \/><br \/>\n<\/center><\/p>\n<p><strong>6. C\u00f3digo<\/strong><\/p>\n<p>Ap\u00f3s as altera\u00e7\u00f5es realizadas acima, o nosso c\u00f3digo ficou da seguinte forma:<\/p>\n<pre>\r\n&lt;!DOCTYPE&nbsp;html&gt;\r\n&lt;head&gt;\r\n&nbsp;&nbsp;&lt;link&nbsp;rel=\"stylesheet\"&nbsp;href=\"https:\/\/unpkg.com\/leaflet@1.4.0\/dist\/leaflet.css\"\r\n&nbsp;&nbsp;integrity=\"sha512-puBpdR0798OZvTTbP4A8Ix\/l+A4dHDD0DGqYW6RQ+9jxkRFclaxxQb\/SJAWZfWAkuyeQUytO7+7N4QKrDh+drA==\"\r\n&nbsp;&nbsp;crossorigin=\"\"\/&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;script&nbsp;src=\"https:\/\/unpkg.com\/leaflet@1.4.0\/dist\/leaflet.js\"\r\n&nbsp;&nbsp;integrity=\"sha512-QVftwZFqvtRNi0ZyCtsznlKSWOStnDORoefr1enyq5mVL4tmKB3S\/EnC3rRJcxCPavG10IcrVGSmPh6Qw5lwrg==\"\r\n&nbsp;&nbsp;crossorigin=\"\"&gt;&lt;\/script&gt;\r\n&nbsp;&nbsp;&lt;script&nbsp;src=\"rails.geojson\"&gt;&lt;\/script&gt;\r\n&lt;style&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;#mapDIV{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;700px;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;700px;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border:&nbsp;solid&nbsp;1px&nbsp;black;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&lt;\/style&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id='mapDIV'&gt;&lt;\/div&gt;\r\n&lt;script&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;map&nbsp;=&nbsp;L.map(document.getElementById('mapDIV'),&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;center:&nbsp;[-20.1438,&nbsp;-44.1301],\r\n&nbsp;&nbsp;&nbsp;&nbsp;zoom:&nbsp;15\r\n&nbsp;&nbsp;&nbsp;&nbsp;});\r\n&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;basemap&nbsp;=&nbsp;L.tileLayer('http:\/\/{s}.tile.osm.org\/{z}\/{x}\/{y}.png',&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;basemap.addTo(map);\r\n\t\r\n&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;earthquakeMarker&nbsp;=&nbsp;L.marker([-20.1438,&nbsp;-44.1301],\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{title:&nbsp;'Janeiro&nbsp;25,&nbsp;2019&nbsp;Desastre&nbsp;de&nbsp;Brumadinho'});\r\n\t\t&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;earthquakeMarker.bindPopup(\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"Janeiro&nbsp;25,&nbsp;2019&lt;br&gt;&nbsp;Desastre&nbsp;de&nbsp;Brumadinho\");\r\n\t\t&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;earthquakeMarker.addTo(map);\r\n&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;thetrail&nbsp;=&nbsp;L.geoJSON(trail,&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color:&nbsp;'#800000',\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weight:&nbsp;3,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dashArray:&nbsp;'12&nbsp;8&nbsp;12',\r\n&nbsp;&nbsp;&nbsp;&nbsp;});\r\n\t\r\n&nbsp;&nbsp;&nbsp;&nbsp;thetrail.bindTooltip('Trilha&nbsp;de&nbsp;Brumadinho');\r\n&nbsp;&nbsp;&nbsp;&nbsp;thetrail.addTo(map);\r\n&lt;\/script&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/pre>\n<p>Se voc\u00ea quiser, pode ver o processo detalhado acima no YouTube:<\/p>\n<p><center><br \/>\n<iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/k2kYCetVq7c\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><br \/>\n<\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para adicionar uma trilha ao nosso mapa, vamos convert\u00ea-lo de um shapefile para GeoJSON. H\u00e1 mais de uma maneira de fazer isso &#8211; voc\u00ea poderia usar ogr2ogr, mas optamos por usar o QGIS, pois ele n\u00e3o apenas o converteria, mas&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2019\/02\/28\/introducao-ao-leaflet-trilhas-parte-3\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":8012,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[140,293],"class_list":["post-8011","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gis","tag-javascript","tag-leaflet"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8011","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=8011"}],"version-history":[{"count":10,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8011\/revisions"}],"predecessor-version":[{"id":8916,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8011\/revisions\/8916"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/8012"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=8011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=8011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=8011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}