-
Notifications
You must be signed in to change notification settings - Fork 0
Spatial variabelen
Alles in main/SourceData/NVM.dms. Dit is de GeoDMS-stap tussen R-stap 3b en
R-stap 4: transacties met coördinaten komen binnen, transacties met
omgevingskenmerken gaan eruit.
De slim-CSV uit R/03b_export_spatial_input.R staat in de OneDrive-map
EnhancedData:
NVM_1985_2023_cleaned_geocoded_<nvm_filedate>_slim.csv
TableChopper leest hem als één string en hakt hem zelf in kolommen:
-
filedata_src— hele bestand alsstr-storage; -
filedata— daarvan worden komma's en quotes verwijderd (dus: geen komma's in tekstvelden verwachten; de scheidingsteken is;); -
count_rows= aantal\nmin 1,headerline= eerste regel; -
field/name— kolomnamen uit de header, viaAsItemNametot geldige GeoDMS-itemnamen gemaakt; -
data— per kolomReadElemsop de bodylines.
NVM_Data is de resulterende container met alle kolommen als string. Omdat de
kolomindeling uit de header komt, breekt een gewijzigde kolomvolgorde in de
R-export hier niet; een gewijzigde kolomnaam wel.
Result zet de strings om naar getypeerde attributen en hangt er de ruimtelijke
koppelingen aan:
geometry := point_xy(x, y, rdc_meter)
rdc_10m_rel := geometry[rdc_10m]
rdc_25m_rel := geometry[rdc_25m]
rdc_100m_rel := geometry[rdc_100m]
Overgenomen kenmerken: obsid, de vier type-dummies, price [eur],
size/lotsize [m²], trans_year/trans_month, buildingyear, nrooms,
d_maintgood, bag_pand_hoogte, plus een hier afgeleide
d_highrise := bag_pand_hoogte >= Hoogbouwgrens.
Twee dingen om te weten:
-
lotsizewordtnullbij>= 99999 m²(sentinelwaarde uit de brondata). -
d_highriseblijft null alsbag_pand_hoogteleeg is: null propageert door de vergelijking. Dit GeoDMS-d_highrisegaat níét mee in de spatial-export — het wordt alleen gebruikt in de regiokarakteristieken, waar nulls buiten het gemiddelde vallen en het raster dus "aandeel hoogbouw onder bekende pandhoogtes" wordt. De R-pipeline definieert dezelfde variabele anders (0bij onbekend, plus eend_hoogte_onbekend-dummy); zie de toelichting daar.
Elke variabele is een raster dat op de transactiecoördinaat wordt uitgelezen.
| exportkolom | GeoDMS-item | bron | grid |
|---|---|---|---|
uai_2021 |
Diversen/UAi_2021_int |
UAI_2021.tif |
100m |
uai_2012_network |
Diversen/UAI_2012_netwerk_x100 |
UAI_netwerk_geschaald_2012.tif |
100m |
tt_500k_inw_2020_min |
Diversen/tt_500kinhab_min_2020 |
Reistijd500kInw_2020_500m_NL.tif |
100m |
tt_500k_inw_2024_min |
Diversen/tt_500kinhab_min_2024 |
TraveltimeTo500k_Population_2024_From_100m_Points.tif |
100m |
tt_trainstation_2006_min |
Diversen/tt_Trainstation_2006_min |
reistijd_minuten_station_2006.tif |
100m |
tt_OVknooppunten_2026_min |
Diversen/Reistijd_OVknooppunten_min |
TraveltimeToNearest_OV_Knooppunten_20260316_100m.tif |
100m |
d_groennabij |
BBG/Dominant/BBG_groen_buff |
BBG 2020 (CBS-bodemgebruik) | 10m |
fr_natuur_500m |
LGN/natuur_500m |
LGN<jaar>_m25.tif |
25m |
fr_natuur_2500m |
LGN/natuur_2500m (donut 500–2500m) |
idem | 100m |
fr_natuur_tot2500m |
LGN/natuur_tot2500m (schijf 0–2500m) |
idem | 100m |
fr_landbouw_500m |
LGN/landbouw_500m |
idem | 25m |
fr_stadsgroen_500m |
LGN/stadsgroen_500m |
idem | 25m |
fr_overiggroen_500m |
LGN/overiggroen_500m |
idem | 25m |
fr_water_500m |
LGN/water_500m |
idem | 25m |
fr_groen_500m |
BGT/fr_groen_500m |
GroenOpp_<datum>_Per_AdminDomain_Nederland.tif |
25m |
fr_groen_100m |
BGT/fr_groen_100m |
idem | 25m |
Beide 500k-reistijden zijn gemaximeerd op 120 minuten en missende cellen
worden op het maximum gezet (MakeDefined(..., max(...))). Station-reistijd 0
wordt null (die nullen zijn artefacten, geen echte nulreistijden).
UAI_2021 en de twee oudste reistijden worden als uint32 geëxporteerd —
bewust getrunceerd, want dat is het gedrag waarmee het bevroren
20251024-ijkpunt is geschat. De actieve variabelen (uai_2012_network,
tt_500k_inw_2024, tt_OVknooppunten) gaan als float32 de deur uit; de
truncatie voegde alleen kwantisatieruis toe (besluit 2026-07-15).
main/SourceData/LGN.dms berekent per groencategorie het aandeel van die
categorie in een omgevingsring. Twee dingen zijn hier bewust gedaan:
-
Randcorrectie. De noemer is het LGN-gedekte oppervlak binnen de ring, niet
het hele ringoppervlak. Zonder dat krijgen grens- en kustwoningen een
kunstmatig lage groenfractie, want zee en buitenland zijn klasse
onbekend. - Buitenring op 100m. De 0–2500m-fracties worden op het 100m-grid berekend (eerst categorie-fractie per 100m-cel, dan potentials). Dat houdt de kernel klein en het matcht het AdminDomain waarop de RuimteScanner de fractie in zichtjaren naspeelt.
De bron is LGN<jaar>_m25.tif, de door RSopen modus-geaggregeerde 25m-versie —
bewust dezelfde bron als de RS-kant, zodat de RS-indicator in het basisjaar
exact dezelfde fracties reproduceert. Celwaarden zijn LGNKlasse-indices, geen
LGN-codes; de koppeling staat in main/Classifications/LGNKlasse.dms en wordt
door LGN/Checks gecontroleerd.
Deze definitie moet identiek blijven aan de RSopen-kant
(IsNatuur_hedonisch / IsWater_hedonisch); wat er misgaat als dat niet zo is,
staat in Koppeling met RuimteScanner. Hoe de
fracties in de RuimteScanner tot een euro-bedrag leiden, staat op
Woningwaarde agv groenveranderingen.
fr_groen_500m / fr_groen_100m zijn het aandeel BGT-groen, exclusief cellen
die volgens LGN natuur of landbouw zijn. Die uitsluiting voorkomt dubbeltelling
met fr_natuur_tot2500m en haalt agrarisch grasland en bos uit de groenterm.
Privaat groen (tuin, erf) telt gedempt mee via de empirische groenfractie per
BGT-klasse (erf ≈ 0,35); het eigen perceel wordt in de regressie al door
lnlotsize gecontroleerd.
Deze twee zijn sensitiviteiten, geen kernvariabelen — zie de specbeschrijving in R-pipeline.
GeoDmsRun.exe main.dms /SourceData/NVM/export_spatial/bestand
Schrijft naar dezelfde EnhancedData-map:
NVM_1985_2023_cleaned_geocoded_<nvm_filedate>_slim_spatial.csv
;-gescheiden, kopregel hardgecodeerd in export_spatial/impl/Kopregel, nulls
als lege string (MakeDefined(..., '')). Sleutel is obsid — dat is trans_id
uit de R-pipeline, waarop R/04_import_spatial.R terugkoppelt.
Voeg je een variabele toe, dan moet je hem op drie plekken aanpassen:
Result(attribuut),impl/Kopregel(naam) enimpl/Body(waarde) — en daarna inR/04_import_spatial.Ropnemen in denodig-vector. Die vector gooit een harde fout als een kolom ontbreekt, dus een vergeten Body-regel komt vanzelf boven water.
GeoDMS
R
Afnemers
Legacy