#100DayMapChallenge

2026-02-24

Day 16/100: Higher bars mean more people 📊

Early #ThreeJS experiment visualizing world cities as vertical bars where height represents population. Tokyo towers, Mumbai rises high, smaller cities barely register.
Technique: Extrusion - taking 2D map points and adding third dimension driven by population data. Density becomes physical landscape.

Challenge: Occlusion hides smaller cities behind larger ones. Added rotation controls for multi-angle exploration.

#100DayMapChallenge #WebGL

2026-02-23

Day 15/100: Mapping education access in Sierra Leone 🎓

Client project (2021) for Fab Inc: How far are children from schools?

Approach: #MapboxGL + Isochrone API to calculate realistic walking times (not straight-line distance). Generated 15/30/60-minute zones from each school location across actual terrain.

When mapping serves education equity, every pixel represents a child's opportunity to learn. ✨

Project details: maptheclouds.com/work/sl-isoch

#100DayMapChallenge #GIS #EducationAccess

2026-02-23

Week 2: From GIS foundations to modern tools 🛠️

Days 8-14 traced 7 years evolution: satellite settlement mapping → real-time #WebGL terrain. Through #Copernicus data, #H3 indexing, electoral cartograms, 8 map projections (same data, different truths), Aiudului 3D.

Core questions stayed consistent: How represent density? Make terrain understandable? Show political complexity readably?
Tools evolve. Cartographic problems endure 📐

Week 3: COVID-19 meets D3 simulations.

#100DayMapChallenge

Week 2 reflection showing 7 projects spanning GIS foundations to modern browser-native visualization: Copernicus settlement data, gravity hill optical illusions, H3 hexagonal population density, electoral cartograms with 5 algorithms, Projected Time Zones across 8 map projections, MapTheClouds brand launch year, and decade-long tool evolution at same location. Demonstrates gradual shift from desktop GIS workflows to live browser rendering with WebGL.
2026-02-22

Day 14/100: Ten years later, same place, different tools 🔄

Aiudului Gorges (Trascău Mountains): my reference mapping location since 2011.
2011: #OpenLayers + MapTiler. 2D tiles over OSM.
2021: #ProceduralGL. Smooth 3D terrain with #WebGL + real elevation. Routes draped over high-res topography.

Core question unchanged: how help people understand terrain before arrival?Problems consistent. Solutions transform.

#100DayMapChallenge

2026-02-21

Day 13/100: The year I became MapTheClouds 🌍

2021 = transformative. #30DayMapChallenge + #30DayChartChallenge

Same year: launched maptheclouds.com, created brand/logo, refined COVID-19 network viz for Romania.

Lesson: discipline beats waiting for perfect conditions. Some days → proud work. Others → functional experiments. Both mattered. Showing up builds creative muscle memory.

End 2021: not just projects, but practice + platform + direction.

#100DayMapChallenge

2026-02-20

Day 12 of #100DayMapChallenge: Projected Time Zones 🌐

Same dataset - countries grouped by 6-hour time zones - rendered through 8 projections: Van der Grinten, Eckert III, Eckert V, Sinusoidal, Mollweide, Cassini, Equidistant Conic, Polyconic.

Each preserves something, distorts something else. Area, shape, distance, direction. You can never keep all four.

A projection is always a decision. Most maps hide it. This one makes it visible.

maptheclouds.com/playground/30

#QGIS #Cartography #NaturalEarth

2026-02-19

Day 11/100: When geography lies about votes 🗳️

Romania 2019 Presidential Elections dashboard. Obsessed with cartograms - maps where size = data, not geography.

Data: #QGIS + Spatialite joining ANCPI geometries + electoral data. 3,186 voting stations → municipality. Fixed București Siruta codes. #Svelte + #D3js dashboard.

Why: București tiny on map, massive in votes. Distortion becomes information.

blog.maptheclouds.com/events/f

#100DayMapChallenge #Cartogram

2026-02-18

Day 10/100: Why hexagons for population density 🔶

Romania at 400m resolution via Uber #H3 hierarchical hexagonal index. Admin boundaries rarely reflect how people occupy space.

Hexagons > squares/triangles: 6 equal neighbors, minimal directional bias, reduced edge effects, circular distance approximation, perfect tessellation.

#QGIS for H3 processing + #Qgis2threejs for 3D export = browser scene with semitransparent hexagonal columns. Height + color encode density.

#100DayMapChallenge

2026-02-17

Day 9/100: A ball that rolls uphill… or does it? 🎱👀

Gravity Hill, Pittsburgh—terrain optical illusion. Downhill slope appears uphill. Built web map with #MapLibreGL + #MapTiler showing location + video demo of phenomenon.

Experimented with animation: marker rolls onto screen on page load. Small detail, reinforces playful nature.

Reminder: spatial perception isn't just data/measurement—it's context, expectation, sometimes wonder.

Your eyes vs. physics. 👁

#100DayMapChallenge

2026-02-16

Day 8/100: Mapping where people live from space 🛰️

Cluj-Napoca settlement analysis via World Settlement Footprint 2019. #Copernicus Sentinel-1/2 data at 10m resolution, processed by ESA, DLR, GEE.

The power: petabytes processed + openly available. Anyone can study settlement patterns anywhere on Earth through Copernicus program.

Open satellite analysis transforms what's possible for independent researchers.

Interactive demo: maptheclouds.com/playground/30

#100DayMapChallenge #OpenData #Leaflet

2026-02-16

Week 1: The long game 🗺️

7 projects, 2011-2022. OpenLayers → #LiDAR → Landsat → #ThreeJS Antarctica.

Tools evolved dramatically. #WebGL existed (Mapbox) but wasn't customizable. #PDAL hadn't opened LiDAR beyond enterprise. Shaders weren't on radar. But question stayed: how make terrain feel real online?

Answers accumulated slowly, project by project.

Week 2: GIS foundations → interactive data viz. Acceleration begins ⚡

#100DayMapChallenge Days 1-7

Week 1 reflection showing 7 mapping projects spanning 2011 to 2022: from early OpenLayers climbing maps to LiDAR analysis with PDAL and QGIS, Landsat change detection, and Three.js terrain experiments. Demonstrates evolution of spatial data visualization tools and techniques over a decade.
2026-02-15

Day 7/100: Mapping a restless volcano 🌋

Taal Volcano, Philippines - one of the world's most active volcanic systems. Caldera inside a lake formed by earlier eruptions. #PDAL #Entwine #Potree workflow on 172M points from PHIL-LiDAR Program.

Volcanic LiDAR as temporal document: spatial data is never static. Terrain evolves.
Context isn't recreation - it's about understanding landscape that may change without warning.

Week 1 complete! GIS foundations → D3.js phase next.

#100DayMapChallenge

Taal Volcano point cloud visualization in Potree, showing the volcanic crater on an island within a lake. 172 million LiDAR points at 1-meter resolution processed with PDAL and Entwine, colorized by elevation to reveal crater depth and volcanic morphology. Data collected by PHIL-LiDAR Program before the 2020 eruption.Taal Volcano point cloud visualization in Potree, showing the volcanic crater on an island within a lake. 172 million LiDAR points at 1-meter resolution processed with PDAL and Entwine, colorized by ground to reveal crater depth and volcanic morphology. Data collected by PHIL-LiDAR Program before the 2020 eruption.Taal Volcano point cloud visualization in Potree, showing the volcanic crater on an island within a lake. 172 million LiDAR points at 1-meter resolution processed with PDAL and Entwine, colorized by vegetation to reveal crater depth and volcanic morphology. Data collected by PHIL-LiDAR Program before the 2020 eruption.
2026-02-14

Day 6/100: Antarctica doesn't look like this (but what if it did?) ❄️☁️

200m resolution elevation data from RAMP rendered in #ThreeJS with a twist: fluffy clouds instead of ice and rock.

Pure visual experimentation.
Workflow: #QGIS → export as image → Three.js fly navigation + transparent texture

Sometimes maps don't need realism. Sometimes looking at data in an unfamiliar way reveals patterns you wouldn't notice otherwise.

#100DayMapChallenge #WebGL #3DMapping #Antarctica

2026-02-14

Day 5: Point clouds cross borders 🌍

In 2015, NYU captured one of the densest public #LiDAR datasets: Dublin at sub-meter resolution. Years later, I processed 500M+ points using #PDAL and #Potree, applying the same pipeline from Yosemite.

NYC captures. Romania processes. Anyone explores.
Geography is local. Tools are global.

blog.maptheclouds.com/learning

#100DayMapChallenge

Dublin city center LiDAR point cloud visualization showing 528 million points color-coded by RGB aerial imagery. Processed using PDAL and Entwine, viewable in web browser via Potree. Data collected by NYU Center for Urban Science 2015, processed 2020.
2026-02-14

Day 3/100: 25M points in one file. Where to start?

FOSS4G 2019: Connor Manning & Adam Steer demo'd PDAL/Entwine. Hooked instantly.

Sequence matters: classify, filter, mesh, interpolate.
Filter too early → lose detail. Too late → noise corrupts.

570M points. 19h processing. Open-source JSON pipelines. All documented. Visualization: seconds. Processing: 19 hours.

blog.maptheclouds.com/learning

#PDAL #LiDAR #PointCloud #FOSS4G #GIS #100DayMapChallenge

Yosemite Valley LiDAR point cloud visualization in Potree viewer, showing 25 million points color-coded by elevation. Processed using PDAL open-source pipeline over 19 minutes, part of 570 million point dataset.
2026-02-12

Day 4/100: Maps for decisions 🔥

Aug 2019: 1M acres burned across Bolivia-Paraguay-Brazil.

Landsat 8 dNBR: pre/mid/post-fire scenes, TOA correction, NBR differencing, classification.
988,069 acres total. Max continuous: 638,673 acres (~491K football fields).

ArcGIS ModelBuilder + Python automation. Four severity classes for recovery planning.

Not every map needs beauty. Some need accuracy + speed.

#GIS #Landsat8 #RemoteSensing #FireMapping #BurnSeverity #100DayMapChallenge

Burn severity map showing nearly 1 million acres burned across Bolivia-Paraguay-Brazil border in August 2019. Landsat 8 dNBR analysis with four severity classes.
2026-02-10

Day 2/100: Mapping walls you can't see from above 🧗‍♂️

Yosemite. LiDAR 0.5m DTM. Extracted walls >75°. Flow algorithms estimated heights.

Classified: yellow to red (45°/100m → 75°/900m).

Challenge: LiDAR can't see overhangs. What climbers care about most. 🏔️

Map shows possibility, not certainty.

Some questions need both data and dirt.

blog.maptheclouds.com/learning

#LiDAR #GIS #QGIS #ClimbingMaps #100DayMapChallenge

LiDAR-derived slope analysis of Yosemite climbing walls, color-coded from yellow to red by steepness and height. Digital Terrain Model at 0.5m resolution showing vertical terrain from 100m to over 900m.
2026-02-09

Day 1/100: The origin 🗺️

Aiudului Gorges, Romania. 2011. Karst terrain I still hike and climb.

Hand-digitized contours from topographic map. Same one from my thesis. Tiles with GDAL2Tiles + MapTiler, rendered in OpenLayers.

Before Three.js in cartography. Before WebGL was mainstream.

Same question: how do we make terrain feel real online? ⛰️

Still asking, 14 years later.

cheileaiudului.ro

#WebMapping #GIS #OpenLayers #GDAL #Cartography #100DayMapChallenge

Screenshot of 2011 Aiudului Gorges map - Detail view showing climbing routes, OpenStreetMap base layer, hand-digitized contour lines displaying karst topography, and interactive overlays panel
2026-02-07

End of an era. Start of a new one.
10+ years building maps: LiDAR → GIS → WebGL → network graphs → spatial storytelling.

Something’s shifting. Drawing me toward immersive work that blurs data, art, and experience.

Starting Feb 9: #100DayMapChallenge
100 days. 100 projects. Tracing my transition from traditional GIS to interactive 3D viz.

From static maps to immersive environments.
From QGIS to WebGL. 🗺️

#WebMapping #GIS #3DMaps #Cartography #MapTheClouds

3D WebGL Earth visualisation showing real-time earthquake data near Argentina with a glowing UI panel in space.

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst