• Bouwjaar panden Utrecht
  • Moon sets behind Dom tower
  • Sun set on winter solstice
  • South celestial pole
  • Domtoren in Nagasaki, Japan
  • Rushing through world’s largest bike parking garage
  • Kandidaten Tweede Kamerverkiezing 2017
  • Rugtas kwijt: NS vond, zocht en bracht terug
  • Solargraph summer – winter solstice
  • Het befaamde naveltruitje van Wiske
  • Accumulated timelapse of fireworks exploding
  • Lunar eclipse
  • Le futur est de retour
  • Disneyland found on pluto
  • Getting ready for the Tour de France
  • Rooftop panorama
  • Massacre
  • Visualizing tripolar role patterns with a Fano matroid
  • Pepper’s ghost illusion
  • Reisverzekering net zo waardeloos als ING
\\ funny
  • Bouwjaar panden Utrecht
  • Moon sets behind Dom tower
  • Sun set on winter solstice
  • South celestial pole
  • Domtoren in Nagasaki, Japan
  • Rushing through world’s largest bike parking garage
  • Kandidaten Tweede Kamerverkiezing 2017
  • Rugtas kwijt: NS vond, zocht en bracht terug
  • Solargraph summer – winter solstice
  • Het befaamde naveltruitje van Wiske
  • Accumulated timelapse of fireworks exploding
  • Lunar eclipse
  • Le futur est de retour
  • Disneyland found on pluto
  • Getting ready for the Tour de France
  • Rooftop panorama
  • Massacre
  • Visualizing tripolar role patterns with a Fano matroid
  • Pepper’s ghost illusion
  • Reisverzekering net zo waardeloos als ING
\\ funny

Kersbergen

.slider-info-19343.bafg-slider-info .bafg-slider-title {
font-size:
22px ;

}

.slider-info-19343.bafg-slider-info .bafg-slider-description {

}

.slider-info-19343.bafg-slider-info .bafg_slider_readmore_button {

text-align: center;

}

.slider-info-19343.bafg-slider-info .bafg_slider_readmore_button:hover {

}


Bekijk

Virtuele vogelvlucht over onbewolkt Nederland


Nederland in volle glorie: een zonovergoten Nederland vastgelegd in een satellietmozaïek van 1 mei 2026. Vogelvlucht over de wijdse Wadden, slingerende Schelde, verdronken velden, spiegelende meren, bloeiende bloemen.

Bouwjaar Utrecht kleurt oranje (… en rood, blauw…)

165.208 panden in de Utrechtse binnenstad gekleurd op basis van het geregistreerde bouwjaar. Data: Gemeente Utrecht (bomenbestand), Kadaster (basisregistratie grootschalige topografie) en TU Delft (BAG3D).

KNMI Geoquest

<div id="_wrapper" style="position:relative; width:100%; height:80vh; font-family:Arial, sans-serif;">
<div id="_map" style="width:100%; height:100%;">

Breedtegraad
<div id="_latDigits" style="display:flex; gap:2px; margin-bottom:6px;">

Lengtegraad
<div id="_lonDigits" style="display:flex; gap:2px;">

(function() {
const imageUrl = 'https://www.vizualism.nl/wp-content/uploads/color_maps_view.png';

// From color_maps_view.pgw
const A = 0.25;
const D = 0.0;
const B = 0.0;
const E = -0.25;
const C = 140365.49601;
const F = 457192.46368;

const mapId = '_map';
const latDigitsId = '_latDigits';
const lonDigitsId = '_lonDigits';

// 4 editable decimals + 1 fixed wildcard digit
const COORD_TEMPLATE = '00.0000-';

proj4.defs('EPSG:28992',
'+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 ' +
'+k=0.9999079 +x_0=155000 +y_0=463000 ' +
'+ellps=bessel ' +
'+towgs84=565.2369,50.0087,465.658,' +
'-0.406857330322397,0.350732676542563,-1.8703473836068,4.0812 ' +
'+units=m +no_defs'
);

ol.proj.proj4.register(proj4);
const rd = ol.proj.get('EPSG:28992');

let bounds = null;
let imageLayer = null;

const maskSource = new ol.source.Vector();

const maskLayer = new ol.layer.Vector({
source: maskSource,
style: function(feature) {
const type = feature.get('type');

if (type === 'mask') {
return new ol.style.Style({
fill: new ol.style.Fill({ color: 'rgba(0,0,0,0.5)' })
});
}

if (type === 'outline') {
return new ol.style.Style({
stroke: new ol.style.Stroke({ color: '#ffffff', width: 2 })
});
}

return null;
}
});

const map = new ol.Map({
target: mapId,
layers: [maskLayer],
view: new ol.View({
projection: rd,
center: [0, 0],
zoom: 2
})
});

function clamp(val, min, max) {
return Math.max(min, Math.min(max, val));
}

function buildBounds(imgWidth, imgHeight) {
const minX = C - (A / 2);
const maxY = F - (E / 2);
const maxX = minX + imgWidth * A;
const minY = maxY + imgHeight * E;
return [minX, minY, maxX, maxY];
}

function readDigits(containerId, template) {
const inputs = document.getElementById(containerId).querySelectorAll('input');
let strMin = '';
let strMax = '';
let idx = 0;

for (const char of template) {
if (char === '.') {
strMin += '.';
strMax += '.';
} else if (char === '-') {
strMin += '0';
strMax += '9';
} else {
const val = inputs[idx].value;
if (val === '') {
strMin += '0';
strMax += '9';
} else {
strMin += val;
strMax += val;
}
idx++;
}
}

return [parseFloat(strMin), parseFloat(strMax)];
}

function refreshMapSoon() {
setTimeout(() => {
map.updateSize();
map.render();
}, 50);
}

function applyRange() {
if (!bounds) return;

const [latMin, latMax] = readDigits(latDigitsId, COORD_TEMPLATE);
const [lonMin, lonMax] = readDigits(lonDigitsId, COORD_TEMPLATE);

const bl = proj4('EPSG:4326', 'EPSG:28992', [lonMin, latMin]);
const tr = proj4('EPSG:4326', 'EPSG:28992', [lonMax, latMax]);

let x1 = Math.min(bl[0], tr[0]);
let x2 = Math.max(bl[0], tr[0]);
let y1 = Math.min(bl[1], tr[1]);
let y2 = Math.max(bl[1], tr[1]);

x1 = clamp(x1, bounds[0], bounds[2]);
x2 = clamp(x2, bounds[0], bounds[2]);
y1 = clamp(y1, bounds[1], bounds[3]);
y2 = clamp(y2, bounds[1], bounds[3]);

const minSize = 0.25;

if ((x2 - x1) < minSize) {
const cx = (x1 + x2) / 2;
x1 = cx - minSize / 2;
x2 = cx + minSize / 2;
}

if ((y2 - y1) {
if (char === '.') {
const span = document.createElement('span');
span.textContent = '.';
span.style.display = 'inline-block';
span.style.width = '8px';
span.style.textAlign = 'center';
span.style.lineHeight = '32px';
container.appendChild(span);
} else if (char === '-') {
const span = document.createElement('span');
span.textContent = '-';
span.style.display = 'inline-block';
span.style.width = '12px';
span.style.textAlign = 'center';
span.style.lineHeight = '32px';
span.style.fontWeight = 'bold';
container.appendChild(span);
} else {
const inp = document.createElement('input');
inp.type = 'text';
inp.maxLength = 1;
inp.placeholder = '_';
inp.inputMode = 'numeric';
inp.autocomplete = 'off';
inp.autocorrect = 'off';
inp.autocapitalize = 'off';
inp.spellcheck = false;
inp.pattern = '[0-9]*';

inp.style.width = '22px';
inp.style.height = '32px';
inp.style.textAlign = 'center';
inp.style.padding = '4px';
inp.style.boxSizing = 'border-box';
inp.style.fontSize = '16px';

const triggerUpdate = () => {
inp.value = inp.value.replace(/[^0-9]/g, '');
window.requestAnimationFrame(() => {
applyRange();
map.updateSize();
map.render();
});
};

inp.addEventListener('input', triggerUpdate);
inp.addEventListener('keyup', triggerUpdate);
inp.addEventListener('change', triggerUpdate);
inp.addEventListener('blur', triggerUpdate);

container.appendChild(inp);
}
});
}

createDigits(latDigitsId, COORD_TEMPLATE);
createDigits(lonDigitsId, COORD_TEMPLATE);

const img = new Image();
img.onload = function() {
bounds = buildBounds(img.naturalWidth, img.naturalHeight);

imageLayer = new ol.layer.Image({
source: new ol.source.ImageStatic({
url: imageUrl,
projection: rd,
imageExtent: bounds
})
});

map.getLayers().insertAt(0, imageLayer);

map.getView().fit(bounds, {
padding: [20, 20, 20, 20]
});

applyRange();
refreshMapSoon();
};
img.src = imageUrl;

window.addEventListener('resize', () => {
refreshMapSoon();
});

window.addEventListener('orientationchange', () => {
refreshMapSoon();
});
})();

<?php
return ob_get_clean();
}
add_shortcode('geoquest', 'vizualism_digit_range_mask_shortcode');

Bekijk

Nieuwjaarsdag 2026: vuurwerk boven Utrecht


Foto van het vuurwerk boven de stad Utrecht, gezien vanaf de iconische radartoren van het KNMI in De Bilt. Geanimeerde #timelapse hier.

Bekijk

Schiphol 360

Bekijk

Maansverduistering 2025

Een verduisterde maan stijgt boven het voormalig Ooglijdersgasthuis in Utrecht. De lichtpuntjes links: het spoor van Saturnus 🪐.

Bekijk

Lichtpunt aan nachtelijke hemel blijft een raadsel


Timelapse van de sterrenhemel boven de Luberon in Zuid-Frankrijk. Het meest intrigerend is dat ene (flikkerende) lichtpuntje dat vanaf exact dezelfde plek bleef schijnen.

Bekijk

Jouw klimaatstreepjes

De afbeelding met jouw klimaatstreepjes is samengesteld uit verschillende gegevens van het KNMI, waaronder de jaarlijkse gemiddelde temperatuur die in De Bilt sinds 1901 is waargenomen en de mogelijke toekomstige temperaturen volgens de KNMI-klimaatscenario’s. Meer informatie hierover vind je op www.knmi.nl/jouw-klimaatstreepjes.

Timelapse Utrecht vanaf radartoren KNMI

Timelapse vanaf de radartoren van het KNMI in De Bilt vanaf 6 t/m 7 maart 2025.

Bekijk