Perl obk csv2json.pl

Uit wiki.openbomenkaart.org
Versie door Eazy (overleg | bijdragen) op 26 feb 2023 om 17:34 (Nieuwe pagina aangemaakt met '==Download data archief van STRATO== Download met FileZilla alle folders binnen /data/.. ==Download perl bestanden (6) van STRATO== *Haal alle perl files die met...')
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Naar navigatie springen Naar zoeken springen

Download data archief van STRATO

Download met FileZilla alle folders binnen /data/..

Download perl bestanden (6) van STRATO

  • Haal alle perl files die met obk_.. beginnen op van STRATO server en sla die lokaal op (allemaal in dezelfde folder ../perl..)
Het gaat om deze modules:
obk_csv2json.pl  hoofdscript , dit run je in de IDE
obk_setup.pl     genereer alle bestandsnamen, de meeste worden afgeleid uit de naam van het invoerbestand (csv bestand)
obk_parse_csv.pl breek een regel uit het csv bestand op in bruikbare kolommen 
obk_counts.pl    genereer tellingen 
obk_normalize.pl standaardiseer zaken als hoogte en stamdikte, die worden in elke gemeente weer iets anders gecodeerd 
obk_report.pl    rapporteer over de uitkomst

Test obk_csv2json.pl met een bestaand bestand

Open al deze bestanden in de IDE.

Kies voor welke gemeente je aan de slag wilt. In obk_setup.pl staat vanaf regel 55 een serie bestanden in commentaar (begint met #)

Activeer bijvoorbeeld Arnhem door de hash symbol weg te halen. Save obk_setup.pl.

Invoerbestanden voor obk csv2json.png


Klik daarna in de IDE de hoofdmodule aan (obk_csv2json.pl), en toets F7 ("Run without debugging"), klik "OK"

In window 'Run output' verschijnt de voortgangslog.

Bijna onderaan in die log staat 'Ready'. Dan heeft het script normaal gelopen.

Er kunnen daar nog andere regels achteraan volgen, die komen dan uit ./scripts/perl/STDERR.txt Als het script niet goed ten einde komt, is er geen 'Ready' en worden foutboodschappen uit STDERR.txt ook niet op het scherm getoond, Altijd goed om dan even zelf te kijken wat er in ./scripts/perl/STDERR.txt staat.

Run perl.png


output (bestanden met datum 02/18/2023)


Voeg nieuwe gemeente 'Demo' toe

Prepareer bestand voor een nieuwe gemeente (converteer zonodig eerst coordinaten naar lengte- en breedtegraden via QGIS) en sla op in ./bomen/data/demo/gemeente/yyyy_mm_dd/obk_demo_in.csv

Voeg een regel toe aan obk_setup.pl voor dit nieuwe invoerbestand 'obk_demo_in.csv'

Voeg onderstaande sectie toe in obk_parse_csv.pl in, waar de beschikbare velden en hun kolom titels nog ingevuld moeten.(sortering is alfabetisch)

# Demo
  if ($csv_columns eq 'demo')  
  {
    $valid_city = 1 ;
    ($id, $species_nl, $species, $stamdiameterklasse, 
     $hoogte, $plantjaar, $beheerder, $locatie,
     $long, $lat) = ($csv -> fields ()) [$..,$..,$..,$.., (bijv. [$A,$F,$G,$H etc)
                                         $..,$..,$..,$..,       
                                         $..,$..] ;
  • Test telkens na kleine (nee, heel kleine aanpassingen). Zodat als een fout optreedt je nog weet wat je laatste aanpassing was. En je bijvoobeeld met undo (Ctrl-Z) je de laatste wijzingen ongedaan kunt maken.
  • En copieer regelmatig naar een backup folder, voor als je er niet meer uitkomt, en je verder terug dan met undo kan naar een recente eerdere revisie).
  • Begin bijvoorbeeld met alleen $long en $lat in obk_parse_csv.pl op te nemen, dat levert alleen lon en lat in de json file, de rest zijn defaults. Als deze test run goed loopt voeg dan telkens 1 of 2 velden toe, en test opnieuw.

N.B. sommige scripts gebruiken long en lat (o.a. gemeentes), andere lon en lat (OSM). Ook in deze deze scripts kom die inconsequentie voor.

slecht twee velden (lat,long) in invoer, de rest zijn default waarden


Review output

Als het goed is heb je nu 6 nieuwe bestanden. Twee daarvan zijn identiek, namelijk obk_[gemeente].json en trees_[gemeente].json. De javascript files verwachten trees_... Dit perl script hanteert obk_ prefix voor input en output. File handmatig renamen had ook gekund. Maar is mogelijk net zo verwarrend.



oud:csv2json.pl

(oud, vervangen door obk_*.pl bestanden) zie boven

Perl script csv2json.pl voert een aantal bewerkingen uit op een bomenbestand.

Het is een beetje Q&D (Quick and Dirty). Zo moet je eerst wat regels in het script aanpassen, wanneer je van invoerbestand wilt wisselen.

Zelfs de naam had beter gekund, want intussen produceert het niet alleen een json bestand, maar ook een csv en txt bestanden.

Aug 2022: nu ook tellingen per park: aantal bomen, aantal soorten (park = 'park' in straatnaam, plus voor Leiden bekende namen van parken die dat niet hebben, bijv 'Leidse Hout')