|
|
Regel 1: |
Regel 1: |
| ==Installeer perl==
| | *[[Perl installeren]] |
| *Installeer Perl | | *[[Perl_obk_csv2json.pl|Perl script obk_csv_2json.pl]] |
| **bijv [https://www.activestate.com/products/perl/ ActiveState perl] | | *[[Perl_taxons.pl|Perl script taxons.pl]] |
|
| |
|
| ==Installeer een IDE (Integrated Development Environment)==
| | '''Wat volgt nog naar subpagina verplaatsen:''' |
| **bijv. [https://www.activestate.com/products/komodo-ide/ KOMODO IDE]
| |
| | |
| ==Test met een triviaal perl script==
| |
| **Klik <b>+</b>, rechtsboven in menu balk
| |
| **Klik 'New File'
| |
| **Copieer onderstaande twee regels naar het nieuwe bestand (zonder spaties voor de regels)
| |
| **Sla op als (Save as) '''hello_world.pl'''
| |
| **Voer script uit (Run) met F7
| |
| **Check de output
| |
| ***Staat er "Hello world!" in het output venster? Gefeliciteerd, je heb een werkende perl omgeving.
| |
| | |
| #!/usr/bin/perl
| |
| print "Hello World!"
| |
| | |
| ==Installeer zonodig extra perl modules==
| |
| | |
| *Het kan zijn dat nog extra perl modules geinstalleerd moeten worden.
| |
| **Doe dit met Perl Package Manager
| |
| *** Run c:\Perl64\bin\ppm.bat
| |
| ***Zoek naar 'text csv'
| |
| ***Selecteer TEXT-CSV and klik 'Mark for install [+]'
| |
| ***Klik 'Run marked actions' [Ctrl+Enter]
| |
| ***Test onderstaand script
| |
| ***Krijg je geen foutmeldingen dan heb je de benodigde extra module succesvol geinstalleerd!
| |
| | |
| #!/usr/bin/perl
| |
| print "Hello World!"
| |
| use Text::CSV; # install with ppm.bat
| |
| use Text::CSV::Encoded ;
| |
| use Math::Trig ;
| |
| use utf8;
| |
| | |
| [[Bestand:Perl package manager.jpg|thumb|400px|left]]<br clear=all>
| |
| | |
| ==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
| |
| | |
| ==est 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.
| |
| | |
| [[Bestand:Invoerbestanden voor obk csv2json.png|thumb|left|400px]]<br clear=all>
| |
| | |
| 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.
| |
| | |
| [[bestand:Run perl.png|thumb|left|400px]]<br clear=all>
| |
| | |
| [[bestand:Perl tutorial arnhem.png|thumb|left|400px|output (bestanden met datum 02/18/2023)]]<br clear=all>
| |
| | |
| ==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 lon'''g''' en lat (o.a. gemeentes), andere lon en lat (OSM). Ook in deze deze scripts kom die inconsequentie voor.
| |
| | |
| [[bestand:Alleen lat long.png|thumb|left|400px|slecht twee velden (lat,long) in invoer, de rest zijn default waarden]]<br clear=all>
| |
| | |
| ==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.
| |
| <hr><hr>
| |
| | |
| ==oud:csv2json.pl==
| |
| (oud, vervangen door obk_*.pl bestanden) zie boven
| |
| | |
| Perl script '''[https://openbomenkaart.org/scripts/perl/csv2json.pl 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')
| |
|
| |
|
| ==ook:verschillenlijsten== | | ==ook:verschillenlijsten== |