De NDFF hanteert een start datumtijd en een einddatumtijd voor waarnemingen. Voorheen mochten deze twee velden dezelfde waarde bevatten. Vanaf de release 1.0.1 van de NDFF Connector moeten de start- en einddatumtijd van elkaar verschillen. Hieronder instructies hoe je dit makkelijk kunt oplossen met hulp van QGIS.
Eind datumtijd aanmaken aan de hand van een datum
Als jouw dataset momenteel voor start en eind dezelfde waarde gebruikt, moet je een apart eindveld aanmaken dat een klein beetje later is dan de startdatumtijd. Dit kan eenvoudig in QGIS met de Veldcalculator.
- Open de attribuuttabel van je laag.
- Zet de laag in bewerkingsmodus (potlood-icoon "Bewerken aan/uit").
- Klik op het icoon van de Veldcalculator (rekenmachine-icoon).
- Kies "Nieuw veld aanmaken" en geef het een duidelijke naam, bijvoorbeeld "eind_datumtijd".
- Vul bij "Expressie" één van onderstaande regels in, afhankelijk van het type van je startkolom. Vervang "start" steeds door de werkelijke naam van jouw startkolom.
Is je startkolom een tekstveld (Text/String)?
to_datetime("start") + make_interval(days:=1)Is je startkolom al een datum- of datumtijdveld (Date/DateTime)?
"start" + make_interval(days:=1)
Let op: gebruik je bij een tekstveld to_datetime() niet, dan werkt de expressie niet goed. Gebruik je het bij een veld dat al een datum/datumtijd is, dan kan de expressie een foutmelding geven of een lege waarde opleveren. Weet je niet zeker welk type jouw kolom heeft? Kijk in de attribuuttabel bovenin de kolom, of ga naar Laageigenschappen > Velden: daar staat achter je kolomnaam of het type "Text", "Date" of "Date/Time" is.
- Klik op OK. Sla de bewerkingen op en zet de bewerkingsmodus weer uit.
- Koppel in de instellingen van de NDFF Connector het nieuwe veld als einddatumtijd, in plaats van je oorspronkelijke startveld.
Ondersteuning datum & tijd formaten
De NDFF kan omgaan met diverse Datum & Tijd formaten ten behoeve van de start- en einddatum/tijd van een waarneming. De datum & Tijd (timestamp) is gebaseerd op een internationale standaard. Een paar voorbeelden van formaten: YYYY-MM-DDThh:mm:ss, YYYY-MM-DD hh:mm:ss, YYYY-MM-DDThh:mm, YYYY-MM-DD hh:mm, YYYY-MM-DDThh, YYYY-MM-DD hh, YYYY-MM-DD, YYYY-MM, YYYY. Dit is anders dan de Nederlandse notatie, over het algemeen gebruiken we in Nederland DD-MM-YYYY, deze notatie voldoet niet aan de internationale standaard. Met behulp van expressies kunnen notaties geconverteerd worden naar een formaat dat geaccepteerd wordt door de NDFF. Enkele voorbeelden worden hieronder gegeven.
In de dataset is een aparte veld voor datum (“date”) en een apart veld voor tijd (“time”) opgenomen (beide velden hebben het juiste formaat. Middels onderstaande expressie kan een geldige timestamp gerealiseerd worden in een virtueel veld.
"date" || 'T' || "time" || ':00'
Wanneer alleen een datum conform Nederlandse notatie (voorbeeld 23/02/2022) opgenomen is in de dataset.
# format_date maakt van een Date object een tekst in het opgegeven formaat
# to_date maakt van (de NL) datumtekst op basis van het format een Date object
format_date(
to_date('23/02/2022', 'd/M/yyyy'),
'yyyy-MM-dd'
)Wanneer datum en tijd opgenomen is in twee verschillende velden waarbij soms geen tijd aangegeven is in de data (leeg of NULL). In dit voorbeeld staat de datum conform Nederlandse notatie: ‘28-3-2020’ en de tijd zonder seconden: ’13:35’.
De hieronder opgenomen expressie controleert eerst of er een waarde beschikbaar is in het veld “Tijd”, wanneer er geen tijd beschikbaar is wordt enkel dat datum geformatteerd. Als de Tijd wel opgenomen is, wordt zowel de datum geformatteerd en de tijd hierachter opgenomen (inclusief een toevoeging van de seconden. Indien seconden wel opgenomen is in de tijd kan `|| :00` verwijderd worden uit de expressie.
IF ("Tijd" IS NULL OR "Tijd" in ('', ' ', 'NULL'))
format_date(
to_date( "Datum", 'd-M-yyyy'),
'yyyy-MM-dd'
),
format_date(
to_date( "Datum", 'd-M-yyyy'),
'yyyy-MM-dd'
)
|| ' ' || "Tijd" || ':00'
)
Om te testen of een waarde leeg of NULL is kan de functie ‘coalesce’ gebruikt worden, het IF-statement in bovenstaande expressie kan ook geschreven worden als onderstaande expressie.
# onderstaande betekent: geef de eerste NON null waarde terug: als Tijd dus NULL of leeg is, dan retourneer je ''
coalesce( "Tijd", '') in ('', ' ', 'NULL', '-')Een ander uitgebreider voorbeeld om een timestamp te maken van individuele getallen.
format_date( make_datetime( year(to_datetime( "datetime_start" )), month(to_datetime( "datetime_start" )), day(to_datetime( "datetime_start" )), hour(to_datetime( "datetime_start" )), 1+minute(to_datetime( "datetime_start" )), second(to_datetime( "datetime_start" )) ), 'yyyy-MM-ddTHH:mm:ss' )
In de QGIS expressie-builder staan verschillende voorbeelden bij de te gebruiken expressies.