[Mapserver-DE] Darstellung von Farben aus der Datenbank
Martin Spott
Martin.Spott at mgras.net
Mit Dez 6 13:09:06 CET 2006
Martin Spott wrote:
> Ich bin deshalb einfach hingegangen und lasse mir mit einen kleinen
> Script-Programm die Map-Datei anhand unterschiedlicher Felder aus der
> Datenbank automatisch generieren. So nebenbei taugt die Methode
> ausserdem gut als Praevention gegen Tippfehler ;-)
Fuer denn Fall, dass noch mehr Fragen danach eintreffen ....
Nein, das Script ist fuer den allgemeinen Gebrauch nicht wirklich
geeignet. Bis ich die ganzen Eigenheiten des Scriptes erklaert habe,
hat der potentielle Anwender in weniger Zeit ein passendes Script
selber geschrieben. Etwas Hilfe zur Selbsthilfe kann ich aber geben,
vielleicht hat das ja einen Sinn.
Ich habe z.B. eine Tabelle "conf", da steht fast alles zu den Layern
drin, was irgendwie interessant wird. Daraus generiere ich ein
SQL-Script zum Anlegen der Tabellen, da stehen die Parameter drin, mit
Hilfe derer die Tabellen gefuellt werden und unter anderem gibt es da
auch ein paar Eckdaten fuer das Mapfile. Die Tabelle hat eine Spalte
"id" und auch eine Spalte "color". Die ganze Scripterei laeuft in
einer BASH.
Ich baue mir erstmal einen Zugriff auf die ganzen ID's:
PSQL='psql -d <Tabelle> -U <Benutzer> -qtA'
id () {
echo "select id from conf;" | ${PSQL}
}
Und damit kann ich mir schon fast das Mapfile zusammenstoepseln. Die
Layer aehneln sich ja groesstenteils, fuer ein paar Abweichungen mache
ich halt entsprechende Fallunterscheidungen (OUTLINECOLOR vorhanden oder
nicht usw.).
Ich geb' dann in einer Schleife:
for ID in `id`; do
[...]
die ganzen Zeilen fuer das Mapfile mit 'echo' aus. Diejenigen Werte, in
denen sich die Layer unterscheiden, werden in Variablen gesteckt.
Dafuer gibt es _vor_ der Schleife noch so ein Hilfsmittel wie:
color () {
echo "select color from conf where id = ${ID};" | ${PSQL}
}
.... was dann inneralb der Schleife an passender Stelle angewendet
wird:
COLOR=`color`
[...]
echo " COLOR ${COLOR}"
[...]
Viel Spass damit,
Martin.
--
Unix _IS_ user friendly - it's just selective about who its friends are !
--------------------------------------------------------------------------
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)