Dit is de opdracht g.parsergrass die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
g.parser - Biedt volledige parserondersteuning voor GRASS-scripts.
TREFWOORDEN
algemeen, ondersteuning, scripts
KORTE INHOUD
g.parser --help
g.parser [-s] [-t] [-n] bestandsnaam [argument,...]
vlaggen:
-t
Tekenreeksen afdrukken voor vertaling
-s
Schrijf optiewaarden naar standaarduitvoer in plaats van het script opnieuw aan te roepen
-n
Schrijf optiewaarden naar standaarduitvoer, gescheiden door een null-teken
PRODUCTBESCHRIJVING
De g.parser module biedt volledige parserondersteuning voor GRASS-scripts, inclusief een
automatisch gegenereerde GUI-interface, helppaginasjabloon en controle van opdrachtregelopties. In
op deze manier kan van een eenvoudig script heel snel een volwaardige GRASS-module worden gemaakt.
OPTIES
Tenzij de -s or -n switch wordt gebruikt, worden de argumenten opgeslagen in omgevingsvariabelen voor
gebruiken in uw scripts. Deze variabelen heten "GIS_FLAG_ " voor vlaggen en
"GIS_OPT_ " voor opties. De namen van variabelen worden omgezet in hoofdletters. For
bijvoorbeeld als een optie met sleutel invoer is gedefinieerd in de scriptheader, zal de waarde zijn
variabel verkrijgbaar GIS_OPT_INPUT en de waarde van vlag met sleutel f zal beschikbaar zijn in
variabele GIS_FLAG_F.
Voor vlaggen is de waarde "1" als de vlag werd gegeven, en anders "0".
Indien de -s or -n schakelaar wordt gebruikt, worden de opties en vlaggen naar de standaarduitvoer geschreven
het formulier opt_ = en vlag_ =, voorafgegaan door de tekenreeks @ARGS_PARSED@.
Als deze tekenreeks niet op de eerste regel van de standaarduitvoer verschijnt, geeft dit aan dat de
script werd aangeroepen met een schakelaar zoals --html-beschrijving. In dit geval de gegevens
geschreven door g.parser naar standaarduitvoer moet worden gekopieerd naar de standaarduitvoer van het script
woordelijk. Als de -s switch wordt gebruikt, worden de opties en vlaggen gescheiden door nieuwe regels. Als
the -n switch wordt gebruikt, worden de opties en vlaggen gescheiden door nultekens.
Typische headerdefinities zijn als volgt:
#%module
#% beschrijving: g.parser-testscript
#%einde
#%vlag
#% sleutel: f
#% beschrijving: Een vlag
#%einde
#%keuze
#% sleutel: raster
#% type: tekenreeks
#% vooropgesteld: oud,cel,raster
#% beschrijving: Rasterinvoerkaart
#% vereist: ja
#%einde
Met {NULL} is het mogelijk een vooraf gedefinieerde beschrijving of label te onderdrukken.
De parsers maken het gebruik van vooraf gedefinieerde waarden mogelijk gestandaardiseerde opties en vlaggen, zie de lijst van
opties en vlaggen in de programmeurshandleiding. Bijv. de optie
#%keuze
#% sleutel: raster
#% type: tekenreeks
#% vooropgesteld: oud,cel,raster
#% beschrijving: Rasterinvoerkaart
#% vereist: ja
#%einde
kan gemakkelijk worden gedefinieerd als
#%optie G_OPT_R_MAP
#% sleutel: raster
#%einde
De parser maakt het definiëren van vooraf gedefinieerde waarden mogelijk reglement voor gebruikte opties. De syntaxis van de regels
sectie volgt:
#%reglement
#% exclusief: capfile_output, capfile
#%einde
De parser maakt het ook mogelijk om "OR"-voorwaarden te definiëren, bijvoorbeeld door een raster-OR-vector (voor
details, zie hieronder), bijvoorbeeld voor opties:
#%reglement
#% vereist: raster, vector
#%einde
en bijvoorbeeld voor vlaggen:
#%reglement
#% vereist: -i,-d,-c
#%einde
OPMERKINGEN
Een optie kan worden geïnstrueerd om meerdere invoer toe te staan door de volgende regel toe te voegen:
#% meervoudig: ja
Hoewel dit alleen direct de Gebruik sectie van het helpscherm, de opties
omgevingsreeks kan eenvoudig vanuit een script worden geparseerd. Bijvoorbeeld individueel
door komma's gescheiden identiteiten voor een optie met de naam "input" kunnen als volgt worden geparseerd
Bash-shellcode:
IFS=,
voor aanmelden $GIS_OPT_INPUT ; Doen
... "$opt"
gedaan
Aan elke optie en vlag kan een "guisectie"-veld worden toegevoegd om aan te geven dat de opties bestaan
zou op meerdere tabbladen in de automatisch gegenereerde GUI moeten verschijnen. Alle opties zonder een
guisection-veld ga naar het tabblad "Vereist" of "Opties". Bijvoorbeeld:
#% guisectie: tabbladnaam
zou die optie in een tabblad plaatsen met de naam tabnaam.
Aan elke optie kan een veld "key_desc" worden toegevoegd om de tekst te specificeren die in het bestand verschijnt
gebruikshulpsectie van de module. Bijvoorbeeld:
#% key_desc: bestandsnaam
toegevoegd aan een invoer optie zou het gebruiksoverzicht [input=bestandsnaam] creëren.
Als een script wordt uitgevoerd met --O, zal de parser GRASS_OVERWRITE=1 instellen, wat hetzelfde heeft
effect als voorbijgaand --O voor elke module die vanuit het script wordt uitgevoerd. Zo ook passeren --Q
or --v stelt GRASS_VERBOSE respectievelijk in op 0 of 3, wat hetzelfde effect heeft als slagen
--Q or --v voor elke module die vanuit het script wordt uitgevoerd. In plaats van te controleren of
--O, --Q or --v zijn gebruikt, moet u GRASS_OVERWRITE en/of GRASS_VERBOSE controleren
in plaats van. Als deze variabelen zijn ingesteld, zou het script zich hoe dan ook op dezelfde manier moeten gedragen
of ze zijn ingesteld door --O, --Q or --v wordt doorgegeven aan het script of op een andere manier wordt ingesteld.
Voorwaardelijk parameters
Het markeren van een optie als "vereist" zal ertoe leiden dat de parser een fatale fout genereert als de
optie wordt niet gegeven, met één uitzondering: als een vlag de optie suppress_required heeft, en
Als die vlag wordt gegeven, worden alle vereisten genegeerd. Deze functie is bedoeld voor vlaggen die
de "normale werking" van de module verlaten; bijv ringgdal's -f vlag (lijst ondersteund
formaten) gebruikt het.
Maar over het algemeen kan een optie niet als vereist worden gemarkeerd als deze optioneel is, met uitzondering van de
speciaal geval van een suppress_required vlag. De parser heeft de mogelijkheid om opties op te geven
relaties.
Voor C zijn de relevante functies die in lib/gis/parser_dependencies.c.
Voor scripts worden relaties gespecificeerd met behulp van een sectie "regels", bijv
#%reglement
#% vereist: hoogte, hoogte
#%einde
specificeert dat ten minste één van deze opties moet worden gegeven. Zowel opties als vlaggen kunnen dat zijn
gespecificeerd (een leidende "-" geeft een vlag aan). De beschikbare regeltypen zijn:
· exclusief: maximaal één van de opties mag worden gegeven
· verplicht: minimaal één van de opties moet worden opgegeven
· vereist: als de eerste optie wordt gegeven, minimaal één van de volgende opties
moet ook gegeven worden
· require_all: als de eerste optie wordt gegeven, moeten alle volgende opties dat ook doen
ook gegeven worden
· sluit uit: als de eerste optie wordt gegeven, mag geen van de volgende opties dat zijn
gegeven
· collectief: alles of niets; als er een optie wordt gegeven, moeten ze allemaal worden gegeven
AUTOMATISCHE SCRIPT OPRICHTING
De vlag --script toegevoegd aan een GRASS-opdracht, genereert shell-uitvoer. Om een uit te schrijven
g.parser boilerplate voor eenvoudige prototyping van shell-scripts, de vlag --script kan toegevoegd worden
voor elk GRASS-commando. Voorbeeld:
v.in.db --script
Help pagina sjabloon (Html)
De vlag --html-beschrijving toegevoegd aan een GRASS-opdracht genereert een gerelateerde helppagina
sjabloon in HTML. Voorbeeld:
v.in.db --html-beschrijving
GUI venster parser (XML)
De vlag --interface-beschrijving toegevoegd aan een GRASS-opdracht genereert een gerelateerde helppagina
sjabloon in XML. Voorbeeld:
v.in.db --interface-beschrijving
Web In behandeling Diensten (WPS)
De vlag --wps-procesbeschrijving toegevoegd aan een GRASS-opdracht genereert een webverwerking
Serviceprocesbeschrijving. Voorbeeld:
v.in.db --wps-procesbeschrijving
reStructuredText
De vlag --eerste-beschrijving toegevoegd aan een GRASS-opdracht genereert een module-interfacebeschrijving
in reStructuredText, een lichtgewicht opmaaktaal. Voorbeeld:
v.in.db --eerste beschrijving
reStructuredText wordt soms afgekort als reST, ReST of RST. Het veelgebruikte bestand
extensie is .rst. Laat u niet verwarren met Representational State Transfer (REST)
technologie.
VERTALING
g.parser biedt enige ondersteuning voor het vertalen van de opties van scripts. Indien gebeld met de
-t schakel vóór de scriptbestandsnaam als volgt
g.parser -t een scriptbestand
g.parser drukt de tekst van de vertaalbare opties af naar standaarduitvoer, één per regel,
en uitgang. Dit is voor intern gebruik binnen het bouwsysteem om GRASS-scripts voor te bereiden
vertaling.
Voorbeelden
Alle onderstaande voorbeelden genereren automatisch de grafische gebruikersinterface wanneer ze zonder worden aangeroepen
parameters van vlaggen:
Om correct te kunnen werken, moet het script worden gekopieerd naar een map die wordt vermeld in
$GRASS_ADDON_PATH omgevingsvariabele waarbij de uitvoerbare vlag is ingesteld.
Het script biedt een GUI (zoals hierboven) en de volgende helptekst voor gebruik:
test.py|sh|pl --help
Beschrijving:
g.parser-testscript (python)
Gebruik:
test.sh [-f] raster=string vector=string [optie1=string]
[--uitgebreid] [--stil]
vlaggen:
-f Een vlag
--v Uitgebreide module-uitvoer
--q Stille module-uitgang
parameters:
raster Rasterinvoerkaart
vector Vectorinvoerkaart
optie1 Een optie
Voorbeeld code voor Python
#!/usr/bin/env python
# g.parser demoscript voor Python-programmering
#%module
#% beschrijving: g.parser-testscript (python)
#% trefwoord: trefwoord1
#% trefwoord: trefwoord2
#%einde
#%vlag
#% sleutel: f
#% beschrijving: Een vlag
#%einde
#%optie G_OPT_R_MAP
#% sleutel: raster
#% vereist: ja
#%einde
#%optie G_OPT_V_MAP
#% sleutel: vector
#%einde
#%keuze
#% sleutel: optie1
#% type: tekenreeks
#% beschrijving: een optie
#% vereist: nee
#%einde
os importeren
import sys
importeer grass.script als grass
def main ():
vlag_f = vlaggen['f']
optie1 = opties['optie1']
raster = opties['raster']
vector = opties['vector']
#### voeg hier uw code toe ####
als vlag_f:
print "Vlag -f ingesteld"
anders:
print "Vlag -f niet ingesteld"
# test of parameter aanwezig is:
indien optie1:
print "Waarde van optie1 optie: '%s'" % optie1
print "Waarde van rasteroptie: '%s'" % raster
print "Waarde van vectoroptie: '%s'" % vector
#### einde van uw code ####
terugkeer 0
als __naam__ == "__main__":
opties, vlaggen = grass.parser()
sys.exit(hoofd())
Voorbeeld code voor SHELL
#!/ Bin / sh
# g.parser demoscript voor shell-programmering
#%module
#% beschrijving: g.parser-testscript (shell)
#%einde
#%vlag
#% sleutel: f
#% beschrijving: Een vlag
#%einde
#%optie G_OPT_R_MAP
#% sleutel: raster
#% vereist: ja
#%einde
#%optie G_OPT_V_MAP
#% sleutel: vector
#%einde
#%keuze
#% sleutel: optie1
#% type: tekenreeks
#% beschrijving: een optie
#% vereist: nee
#%einde
if [ -z "$GISBASE" ] ; Dan
echo "Je moet in GRASS GIS zijn om dit programma uit te voeren." 1>&2
verlaat 1
fi
if [ "$1" != "@ARGS_PARSED@" ] ; Dan
exec g.parser "$0" "$@"
fi
#### voeg hieronder uw code toe ####
gooide uit ""
als [$GIS_FLAG_F -eq 1] ; Dan
g.message message="Flag -f ingesteld"
anders
g.message message="Vlag -f niet ingesteld"
fi
# test of parameter aanwezig is:
if [ -n "$GIS_OPT_OPTION1" ] ; Dan
echo "Waarde van GIS_OPT_OPTION1: '$GIS_OPT_OPTION1'"
fi
g.message message="Waarde van GIS_OPT_option1: '$GIS_OPT_option1'"
g.message message="Waarde van GIS_OPT_raster: '$GIS_OPT_raster'"
g.message message="Waarde van GIS_OPT_vect: '$GIS_OPT_vector'"
#### einde van uw code ####
Voorbeeld code voor Perl
#!/usr/bin/perl -w
gebruik strikt;
# g.parser demoscript
#%module
#% beschrijving: g.parser-testscript (perl)
#% trefwoord: trefwoord1
#% trefwoord: trefwoord2
#%einde
#%vlag
#% sleutel: f
#% beschrijving: Een vlag
#%einde
#%optie G_OPT_R_MAP
#% sleutel: raster
#% vereist: ja
#%einde
#%optie G_OPT_V_MAP
#% sleutel: vector
#%einde
#%keuze
#% sleutel: optie1
#% type: tekenreeks
#% beschrijving: een optie
#% vereist: nee
#%einde
als ( !$ENV{'GISBASE'} ) {
printf(STDERR "Je moet in GRASS GIS zijn om dit programma uit te voeren.\n");
uitgang 1;
}
if( $ARGV[0] en '@ARGS_PARSED@' ){
mijn $arg = "";
voor (mijn $i=0; $i < @ARGV;$i++) {
$arg .= " $ARGV[$i] ";
}
system("$ENV{GISBASE}/bin/g.parser $0 $arg");
Uitgang;
}
#### voeg hier uw code toe ####
druk "\n" af;
als ($ENV{'GIS_FLAG_F'} eq "1" ){
print "Vlag -f ingesteld\n"
}
else {
print "Vlag -f niet ingesteld\n"
}
printf ("Waarde van GIS_OPT_option1: '%s'\n", $ENV{'GIS_OPT_OPTION1'});
printf ("Waarde van GIS_OPT_raster: '%s'\n", $ENV{'GIS_OPT_RASTER'});
printf ("Waarde van GIS_OPT_vect: '%s'\n", $ENV{'GIS_OPT_VECTOR'});
#### einde van uw code ####
Gebruik g.parsergrass online met behulp van onworks.net-services