Quellcode-Programm-2: Unterschied zwischen den Versionen

Aus Weimarnetz Wiki
Zur Navigation springen Zur Suche springen
(quellcode)
 
(links)
Zeile 1: Zeile 1:
Ziel dieses Programmes ist ist,SVG/XML-Quellcode zu generieren.
+
Ziel dieses Programmes ist es,aus der vorher erstellten Textdatei nun SVG/XML-Quellcode zu generieren,der im Browser angezeigt werden kann. Man hat auch die Option davon ein Bildschirmfoto generieren zu lassen,fuer Browser ohne PlugIn.
 
Das sieht dann z.b. so aus.
 
Das sieht dann z.b. so aus.
 +
* [[http://www.stud.tu-ilmenau.de/~babi-mtr/wirelessweimar/out2.svg|out2.svg]] - SVG-Karte einzeln
 +
* [[http://www.stud.tu-ilmenau.de/~babi-mtr/wirelessweimar/map.jpg|map.jpg]] - Stadtkarte einzeln (300kb)
 +
* [[http://www.stud.tu-ilmenau.de/~babi-mtr/wirelessweimar/out.svg|out.svg]] - SVG und Stadtkarte kombiniert (momentan noch falsches Mapping,muss mal die genauen Eckpunkte der Karte als GPS raussuchen 8)))
  
 
<pre>
 
<pre>

Version vom 20. August 2005, 03:09 Uhr

Ziel dieses Programmes ist es,aus der vorher erstellten Textdatei nun SVG/XML-Quellcode zu generieren,der im Browser angezeigt werden kann. Man hat auch die Option davon ein Bildschirmfoto generieren zu lassen,fuer Browser ohne PlugIn. Das sieht dann z.b. so aus.

  • [[1]] - SVG-Karte einzeln
  • [[2]] - Stadtkarte einzeln (300kb)
  • [[3]] - SVG und Stadtkarte kombiniert (momentan noch falsches Mapping,muss mal die genauen Eckpunkte der Karte als GPS raussuchen 8)))
/* $VER makenodemap.rexx v0.1alpha */
zeit = subword(date(),1,1)||'-'||subword(date(),2,1)||','||substr(time(),1,5)||'uhr' /* 19-Jun,09:17uhr */
xmax = 661; ymax = 936; f1 = 'ram:2paint.txt'; textstyle = 'verdana'; textsize = 10
anonym=0; mobil=0; nodecount=0; ohnegps=0; cpuschnitt = 0; scalef = 3

kartexmin = 11.302; kartexmax = 11.3359   /*xmax hoeher rutscht karte nach links*/
karteymin = 50.9705; karteymax = 50.9919  /*ymax hoeher,rutscht karte tiefer*/

say '<?xml version="1.0" encoding="ISO-8859-1" standalone="no" ?>'
say '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"'
say '  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">'
say '<svg width="'||xmax||'" height="'||ymax||'" xmlns="http://www.w3.org/2000/svg">'
say '  <title>Netzknoten</title>'
say '  <desc>eine Karte des Weimarnetzes</desc>'
say '   <defs><symbol id="karte"><desc>NetzknotenUndLinien</desc>'


 IF open(p,f1,'r') then DO
  DO until EOF(p)
   z = readln(p)

   IF pos('=',z)>0 THEN DO
    ip     = subword(z,1,1)
    cpu    = subword(z,3,1)
    nom    = subword(z,8,1)
    IF nom =? THEN nom = ip
    IF cpu~=? THEN cpuschnitt = cpuschnitt + cpu
    CALL setclip(ip||cpu,subword(z,3,1))
    CALL setclip(ip||name,nom)
    CALL setclip(ip||x,subword(z,5,1))
    CALL setclip(ip||y,subword(z,6,1))
    xx = getclip(ip||x)
    yy = getclip(ip||y)
     IF xx~=? & yy~=? THEN DO
      nodecount = nodecount + 1
      offset=random(0,10)
      say '<circle cx="'||px(xx)||'" cy="'||py(yy)||'" r="6" fill="yellow" stroke="black" />'
      say '<text x="'||px(xx)+6||'" y="'||py(yy)+offset||'" font-family="'||textstyle||'" font-size="'||textsize||'px">'||getclip(ip||name)||'</text>'
     END
     ELSE ohnegps = ohnegps + 1
   END

   IF pos('=',z)=0 & pos('-',z)=0 THEN s = z   /* s = startip */
   IF pos('=',z)=0 & pos('-',z)=1 THEN DO
    t  = subword(z,2,1)                        /* t = targetip */
    sx = getclip(s||x); sy = getclip(s||y)
    tx = getclip(t||x); ty = getclip(t||y)
    IF px(sx)~=? & py(sy)~=? & px(tx)~=? & py(ty)~=? THEN DO
     say '<line x1="'||px(sx)||'" y1="'||py(sy)||'" x2="'||px(tx)||'" y2="'||py(ty)||'" style="stroke:black; stroke-width:0.5px;" />'
    END
   END

  END
 CALL close(p)
 END

say '<text x="'||px(11.3021)||'" y="'||py(50.9709)||'" font-family="'||textstyle||'" font-size="'||textsize||'px">...Netzknoten_anonym/mobil/ohneGPS/gesamt:_'||anonym||'/'||mobil||'/'||ohnegps||'/'||ohnegps+nodecount||'_,_Router-CPU-Auslastung:_'||trunc(cpuschnitt/(ohnegps+nodecount),2)||'</text>'
say '<text x="'||px(11.3021)||'" y="'||py(50.9706)||'" font-family="'||textstyle||'" font-size="'||textsize||'px">...erzeugt_mit_Commodore_AmigaOS_v3.1_+_ARexx_['||zeit||']</text>'

say '</symbol>'
say '<image id="map" x="0" y="0" width="'||xmax||'px" height="'||ymax||'px" xlink:href="map.jpg">'
say '</image>'
say '</defs>'

say '<use xlink:href="#map" />'
say '<use xlink:href="#karte" />'

say '</svg>'

exit

entfernung:
return 1000
parse arg x1,y1,x2,y2
say x1 y1 x2 y2
abstandx = x1 - x2; abstandy = y1 - y2
abstandx = abstandx * 70088; abstandy = abstandy * 111324
abstand = sqr((abstandx**2)+(abstandy**2))
say abstand
abstand = substr(abstand,1,pos('.',abstand)-1)
return abstand

sqr:
parse arg ra
as = (ra/2)+.1
do for 15; as = (as+ra/as)/2; end
return as

px:
parse arg xx
 IF xx<kartexmax & xx>kartexmin THEN DO
  xx = trunc(xmax/((kartexmax-kartexmin)/(kartexmax-xx)),0)
  xx = xmax - xx
 END
IF xx = '' THEN xx = ?
return xx

py:
parse arg yy
 IF yy<karteymax & yy>karteymin THEN DO
  yy = trunc(ymax/((karteymax-karteymin)/(karteymax-yy)),0)
 END
IF yy = '' THEN yy = ?
return yy