Perl scripts: verschil tussen versies
Regel 18: | Regel 18: | ||
print "Hello World!" | print "Hello World!" | ||
==Installeer extra modules== | ==Installeer zonodig extra perl modules== | ||
*Het kan zijn dat nog extra perl modules geinstalleerd moeten worden. | *Het kan zijn dat nog extra perl modules geinstalleerd moeten worden. | ||
**Doe dit met Perl Package Manager | **Doe dit met Perl Package Manager | ||
Regel 26: | Regel 27: | ||
***Klik 'Run marked actions' [Ctrl+Enter] | ***Klik 'Run marked actions' [Ctrl+Enter] | ||
***Test onderstaand script | ***Test onderstaand script | ||
***Krijg je geen foutmeldingen dan heb je de module succesvol geinstalleerd! | ***Krijg je geen foutmeldingen dan heb je de benodigde extra module succesvol geinstalleerd! | ||
#!/usr/bin/perl | #!/usr/bin/perl | ||
Regel 37: | Regel 38: | ||
[[Bestand:Perl package manager.jpg|thumb|400px|left]]<br clear=all> | [[Bestand:Perl package manager.jpg|thumb|400px|left]]<br clear=all> | ||
== | ==Download data archief van STRATO== | ||
Download met FileZilla alle folders binnen /data/.. | |||
==Download 5 perl bestanden== | |||
*Haal alle perl files die met obk_.. beginnen op van STRATO server en sla die lokaal op (allemaal in dezelfde folder ../perl..) | *Haal alle perl files die met obk_.. beginnen op van STRATO server en sla die lokaal op (allemaal in dezelfde folder ../perl..) | ||
Regel 47: | Regel 51: | ||
obk_report.pl rapporteer over de uitkomst | obk_report.pl rapporteer over de uitkomst | ||
In obk_setup.pl staat vanaf regel 55 een serie bestanden in commentaar (begint met #) | ==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 | 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> | [[Bestand:Invoerbestanden voor obk csv2json.png|thumb|left|400px]]<br clear=all> | ||
Regel 63: | Regel 70: | ||
Altijd goed om dan even zelf te kijken wat er in ./scripts/perl/STDERR.txt staat. | Altijd goed om dan even zelf te kijken wat er in ./scripts/perl/STDERR.txt staat. | ||
[[bestand: | [[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> | |||
==csv2json.pl== | ==oud:csv2json.pl== | ||
(oud, vervangen door obk_*.pl bestanden) zie boven | (oud, vervangen door obk_*.pl bestanden) zie boven | ||
Regel 79: | Regel 85: | ||
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') | 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') | ||
==csv_match_revisions.pl== | ==ook:verschillenlijsten== | ||
===csv_match_revisions.pl=== | |||
Perl script '''[https://openbomenkaart.org/scripts/perl/csv_match_revisions.pl csv_match_revisions.pl]''' kan twee CSV bestanden met gemeentelijke data vergelijken en daaruit een aantal verschillenlijsten produceren. Er zijn verschillende bestandsformaten voor gemeentelijke bomenbestanden. Het eenvoudigste voor ons doel is een | Perl script '''[https://openbomenkaart.org/scripts/perl/csv_match_revisions.pl csv_match_revisions.pl]''' kan twee CSV bestanden met gemeentelijke data vergelijken en daaruit een aantal verschillenlijsten produceren. Er zijn verschillende bestandsformaten voor gemeentelijke bomenbestanden. Het eenvoudigste voor ons doel is een | ||
'''csv bestand ''' (Comma Separated Values) | '''csv bestand ''' (Comma Separated Values) | ||
Regel 87: | Regel 94: | ||
(''Terzijde: de naam Comma Separated Values kan misleidend zijn. Excel hanteert verschillende scheidingstekens in verschillende landen. In de Nederlandse versie van Excel is het een punt-komma. Dit script verwacht echt komma's als scheidingstekens.'') | (''Terzijde: de naam Comma Separated Values kan misleidend zijn. Excel hanteert verschillende scheidingstekens in verschillende landen. In de Nederlandse versie van Excel is het een punt-komma. Dit script verwacht echt komma's als scheidingstekens.'') | ||
===taxonnamen=== | |||
=== | |||
Twee van de verschillenlijsten gaan over taxonnamen: | Twee van de verschillenlijsten gaan over taxonnamen: | ||
*een tekst bestand '''[https://openbomenkaart.org/data/diffs/Leiden%20Matched%20Revisions%20Diff%20Species.txt Leiden Matched Revisions Diff Species.txt]''', bedoeld als leesbaar overzicht | *een tekst bestand '''[https://openbomenkaart.org/data/diffs/Leiden%20Matched%20Revisions%20Diff%20Species.txt Leiden Matched Revisions Diff Species.txt]''', bedoeld als leesbaar overzicht | ||
*een csv bestand '''[https://openbomenkaart.org/data/diffs/Leiden%20Matched%20Revisions%20Diff%20Taxon.csv Leiden Matched Revisions Diff Taxon.csv]''', bedoeld om verder te verwerken met '''csv2json.pl'''. Dat script voegt in het json bestand extra tags toe waarmee je verschillen tussen gemeentelijke soortnamen in oude en nieuw bestand op een kaart kan markeren tijdens nalopen kan registreren wat de juiste naam is (de oude, of de nieuwe, of toch weer iets anders). Als je zo'n json bestand hebt met deze extra tags kun je die op de kaart zichtbaar maken door een extra parameter aan de url toe te voegen: '''checktaxon'''. Zie voor waarom dit er is en hoe het te gebruiken [[Veranderingen_in_taxonnamen_nalopen]] | *een csv bestand '''[https://openbomenkaart.org/data/diffs/Leiden%20Matched%20Revisions%20Diff%20Taxon.csv Leiden Matched Revisions Diff Taxon.csv]''', bedoeld om verder te verwerken met '''csv2json.pl'''. Dat script voegt in het json bestand extra tags toe waarmee je verschillen tussen gemeentelijke soortnamen in oude en nieuw bestand op een kaart kan markeren tijdens nalopen kan registreren wat de juiste naam is (de oude, of de nieuwe, of toch weer iets anders). Als je zo'n json bestand hebt met deze extra tags kun je die op de kaart zichtbaar maken door een extra parameter aan de url toe te voegen: '''checktaxon'''. Zie voor waarom dit er is en hoe het te gebruiken [[Veranderingen_in_taxonnamen_nalopen]] |
Versie van 18 feb 2023 17:14
Installeer perl
- Installeer Perl
- bijv ActiveState perl
Installeer een IDE (Integrated Development Environment)
- bijv. KOMODO IDE
Test met een triviaal perl script
- Klik +, 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!
- Doe dit met Perl Package Manager
#!/usr/bin/perl print "Hello World!" use Text::CSV; # install with ppm.bat use Text::CSV::Encoded ; use Math::Trig ; use utf8;
Download data archief van STRATO
Download met FileZilla alle folders binnen /data/..
Download 5 perl bestanden
- 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_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.
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.
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')
ook:verschillenlijsten
csv_match_revisions.pl
Perl script csv_match_revisions.pl kan twee CSV bestanden met gemeentelijke data vergelijken en daaruit een aantal verschillenlijsten produceren. Er zijn verschillende bestandsformaten voor gemeentelijke bomenbestanden. Het eenvoudigste voor ons doel is een csv bestand (Comma Separated Values)
Separated Values) of XLS(X) bestand (Excel spreadsheet). Een Excel bestand kan je heel eenvoudig exportereen naar een CSV bestand. Het script verwacht dat de invoerbestanden al (oplopend) zijn gesorteerd op het eerste veld Id (dit kan in Excel).
(Terzijde: de naam Comma Separated Values kan misleidend zijn. Excel hanteert verschillende scheidingstekens in verschillende landen. In de Nederlandse versie van Excel is het een punt-komma. Dit script verwacht echt komma's als scheidingstekens.)
taxonnamen
Twee van de verschillenlijsten gaan over taxonnamen:
- een tekst bestand Leiden Matched Revisions Diff Species.txt, bedoeld als leesbaar overzicht
- een csv bestand Leiden Matched Revisions Diff Taxon.csv, bedoeld om verder te verwerken met csv2json.pl. Dat script voegt in het json bestand extra tags toe waarmee je verschillen tussen gemeentelijke soortnamen in oude en nieuw bestand op een kaart kan markeren tijdens nalopen kan registreren wat de juiste naam is (de oude, of de nieuwe, of toch weer iets anders). Als je zo'n json bestand hebt met deze extra tags kun je die op de kaart zichtbaar maken door een extra parameter aan de url toe te voegen: checktaxon. Zie voor waarom dit er is en hoe het te gebruiken Veranderingen_in_taxonnamen_nalopen