Apresentação realizada na trilha JavaScript The Developer's Conference (TDC) Recife 2019. Código e demonstrações disponíveis no GitHub e CodePen (veja links no final).
1. T R I L H A
JAVASCRIPT
Sábado
12/10
UNICAP
Recife/PE
helderdarocha
helder@argonavis.com.br
como criar um
mapatemático
interativocom
dadosabertos
e D3.js
2. Tutorial prático
Usar dados abertos para construir um mapa temático iterativo usando
HTML, CSS, JavaScript, SVG, D3.js, CSV, GeoJSON.
Código
https://github.com/argonavisbr/tutorial-geojson
Playground
CodePen (links no Readme.md)
21. Passo 6: Gerando um <path> com D3 GitHub:tutorial/map-9.html
const geoPath = d3.geoPath();
const map = {};
d3.json('../geo/world.geojson')
.then(function(data) {
map.features = data.features;
draw();
});
function draw() {
const country = map.features.filter(k => k.id === "BRA")[0];
const pathData = geoPath(country);
d3.select("svg").append("path")
.attr("d", pathData);
}
<svg height="500" width="960">
<path d="conteúdo de pathData">
</svg>
Estrutura SVG gerada
Cria uma função geradora de
string de dados para <path>)
Usa a função para gerar um string de dados <path> a partir de um Feature GeoJSON)
22. Passo 7: Mapeando dados ao DOM SVG GitHub:tutorial/map-10.html
const geoPath = d3.geoPath();
svg.selectAll("path")
.data(map.features)
.enter()
.append("path")
.attr("d", geoPath)
Cada Feature mapeada
a um objeto <path>
Cria função
Chama função para cada Feature e põe resultado no atrributo "d"
Mapeia cada Feature a um elemento ou placeholder
Cria um novo <path> para cada elemento
Selecione objetos para mapear (podem não existir)
27. Conclusões
• D3.js é uma poderosa biblioteca para visualização de dados
baseada em padrõesabertos
• Usada em grandes portais (NY Times, The Guardian, etc.) para
visualizações e mapas interativos e base para outros
frameworks de visualização
• Neste tutorial, foi mostrado como D3 pode ser usada para criar
mapastemáticos usando dadosabertos: uma ferramenta
essencial em jornalismo de dados