LandbouwDataPortaal (preview)
Door Stefan van Gestel met Claude AI
Perceel
Perceelinformatie
Gewasfrequentie KPI
β€”
Bodemdata
β€”
NDVI
β€”
Bouwplan 2026–2035
JaarGewas
Totaal N-balans
β€”
Perceel
β€”
Klik op een perceel om details te zien.
Samenwerkingsverband
Niet toegewezen
Gewasrotatie 2023–2025
Laden…
Gewasplan 2026–2035
Geschatte NO₃ per jaar
Voer gewassen in om nitraat te berekenen.
Grondwatertrap
Nog niet geladen
Perceel
NDVI ophalen β€” Sentinel-2
2024
Perceelinformatie
β€”
NDVI Groeicurve
Celstatistieken
Gewasverandering β€” tijdreeks
Vastgezet: β€”
Gebiedsanalyse β€” uitgeklapt
Bodemdata β€” Legenda & Filter
Perceel
β€”
Code: β€” Opp: β€” Jaar: β€”
Perceel
β€”
Code: β€” Opp: β€” Jaar: β€”
BGT Waterdeel
β€”
Eigenschappen
Beheerderβ€”
Statusβ€”
Hoogteliggingβ€”
Registratieβ€”
BGT IDβ€”
Laad BBWP-percelen en selecteer er een om de koppeling te zien.
Perceel
β€”
Code: β€” Opp: β€” Jaar: β€”
GebiedsRotatieResidu β€” Nitraat
Overlap / Nabijheid
Overlap = directe overlapping. Nabijheid = rand-afstand. CentroΓ―de = dichtstbijzijnde zwaartepunt per jaar.
Klik op een geladen perceel om overlap en nabijheid per jaar te bekijken.
Geselecteerd perceel
–
Code
–
Jaar
–
Oppervlakte
–
CentroΓ―de
–
Jaren doorzoeken…

Risicogewassen prioriteren

2015
2025
Ctrl/Cmd-klik voor meerdere
Configureer en klik op "Bereken".
// ============================================================= // MOBIELE BOTTOM-SHEET INITIALISATIE // ============================================================= (function initMobileBottomSheet() { 'use strict'; var isMobile = function() { return window.innerWidth <= 768; }; var sheetState = 'peek'; function setSheetState(state) { sheetState = state; document.body.classList.remove('sheet-half', 'sheet-full'); if (state === 'half') document.body.classList.add('sheet-half'); if (state === 'full') document.body.classList.add('sheet-full'); var fab = document.getElementById('mobile-panel-fab'); if (fab) { fab.innerHTML = state === 'peek' ? '' : ''; fab.title = state === 'peek' ? 'Toon paneel' : 'Verberg paneel'; } setTimeout(function() { if (typeof map !== 'undefined' && map && map.invalidateSize) map.invalidateSize(); }, 340); } function initFab() { var fab = document.getElementById('mobile-panel-fab'); if (!fab) return; fab.addEventListener('click', function() { if (!isMobile()) return; if (sheetState === 'peek') setSheetState('half'); else setSheetState('peek'); }); } function initHandle() { var handle = document.getElementById('mobile-sheet-handle'); var closeBtn = document.getElementById('mobile-sheet-close-btn'); var sidebar = document.getElementById('sidebar'); if (!handle || !sidebar) return; if (closeBtn) { closeBtn.addEventListener('click', function(e) { e.stopPropagation(); setSheetState('peek'); }); } var tapHandled = false, touchStartY = 0, touchStartTime = 0, isDragging = false; var SWIPE_PX = 40, SWIPE_VEL = 0.3; handle.addEventListener('click', function() { if (!isMobile() || tapHandled) return; if (sheetState === 'peek') setSheetState('half'); else if (sheetState === 'half') setSheetState('full'); else setSheetState('peek'); }); handle.addEventListener('touchstart', function(e) { if (!isMobile()) return; touchStartY = e.touches[0].clientY; touchStartTime = Date.now(); isDragging = false; tapHandled = false; sidebar.style.transition = 'none'; }, { passive: true }); handle.addEventListener('touchmove', function(e) { if (!isMobile()) return; var dy = e.touches[0].clientY - touchStartY; if (Math.abs(dy) > 8) { isDragging = true; tapHandled = true; } if (!isDragging) return; var sidebarH = sidebar.offsetHeight, viewH = window.innerHeight; var base = sheetState === 'peek' ? sidebarH - 56 : sheetState === 'half' ? viewH * 0.45 : 0; sidebar.style.transform = 'translateY(' + Math.max(0, Math.min(sidebarH - 40, base + dy)) + 'px)'; }, { passive: true }); handle.addEventListener('touchend', function(e) { if (!isMobile()) return; sidebar.style.transition = ''; sidebar.style.transform = ''; if (!isDragging) return; var dy = e.changedTouches[0].clientY - touchStartY; var vel = Math.abs(dy) / (Date.now() - touchStartTime || 1); var up = dy < -SWIPE_PX || (dy < 0 && vel > SWIPE_VEL); var dn = dy > SWIPE_PX || (dy > 0 && vel > SWIPE_VEL); if (up) setSheetState(sheetState === 'peek' ? 'half' : 'full'); else if (dn) setSheetState(sheetState === 'full' ? 'half' : 'peek'); isDragging = false; }, { passive: true }); } function initMobileTabStrip() { var strip = document.getElementById('mobile-tab-strip'); if (!strip) return; var desktopTabs = document.querySelectorAll('#top-bar-tabs .tab-btn'); if (!desktopTabs.length) return; strip.innerHTML = ''; desktopTabs.forEach(function(btn) { var mb = document.createElement('button'); mb.className = 'mobile-tab-btn'; mb.dataset.tab = btn.dataset.tab; mb.textContent = (btn.title || '').split(' -- ')[0] || btn.textContent.trim(); if (btn.classList.contains('active')) mb.classList.add('active'); mb.addEventListener('click', function() { btn.click(); strip.querySelectorAll('.mobile-tab-btn').forEach(function(b) { b.classList.remove('active'); }); mb.classList.add('active'); updateMobileTabName(btn); if (sheetState === 'peek') setSheetState('half'); mb.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' }); }); strip.appendChild(mb); }); desktopTabs.forEach(function(btn) { btn.addEventListener('click', function() { strip.querySelectorAll('.mobile-tab-btn').forEach(function(b) { b.classList.toggle('active', b.dataset.tab === btn.dataset.tab); }); updateMobileTabName(btn); }); }); } function updateMobileTabName(btn) { var el = document.getElementById('mobile-active-tab-name'); if (el && btn) el.textContent = (btn.title || '').split(' -- ')[0] || btn.textContent.trim(); } document.addEventListener('DOMContentLoaded', function() { initFab(); initHandle(); initMobileTabStrip(); setSheetState('peek'); }); })();