now generating directly from wiki source
authorMagnus Manske <magnusmanske@users.mediawiki.org>
Sat, 15 Jan 2005 22:18:05 +0000 (22:18 +0000)
committerMagnus Manske <magnusmanske@users.mediawiki.org>
Sat, 15 Jan 2005 22:18:05 +0000 (22:18 +0000)
experiments/geo/geo.php
experiments/geo/geo_data.php

index c6fc044..470bf5c 100755 (executable)
@@ -1,12 +1,57 @@
 <?
-include_once ( "geo_data.php" ) ;
+#include_once ( "geo_data.php" ) ;
 include_once ( "geo_functions.php" ) ;
 
+$geo_cache = array () ; # Evil global variable - beware!
+
+function get_raw_text ( $id )
+       {
+       global $geo_cache ;
+       
+       if ( isset ( $geo_cache[$id] ) ) # Try the cache first...
+               return $geo_cache[$id] ;
+
+       # Get the page contents. This is stupidly done through reading the URL right now
+       # It *should* be done by querying the DB through the Article class, of course
+       $filename = "http://127.0.0.1/phase3/index.php?title=Geo:{$id}&action=raw" ;
+       $handle = fopen($filename, "r");
+       $contents = '';
+       while (!feof($handle))
+               $contents .= fread($handle, 8192);
+       fclose($handle);
+
+       $geo_cache[$id] = $contents ; # Cache the result
+       return $contents ;
+       }
+
 # Global functions
 function geo_get_text ( $id )
        {
-       global $geo_data ;
-       return $geo_data[$id] ;
+       $id = trim ( strtolower ( $id ) ) ;
+       
+       $parts = explode ( "#" , $id ) ;
+       if ( count ( $parts ) == 2 )
+               {
+               $id = array_shift ( $parts ) ;
+               $subid = array_shift ( $parts ) ;
+               }
+       else $subid = "" ;
+       
+       $ret = "\n" . get_raw_text ( $id ) ;
+       $ret = explode ( "\n==" , $ret ) ;
+       
+       if ( $subid == "" ) return $ret[0] ; # Default
+       
+       array_shift ( $ret ) ;
+       foreach ( $ret AS $s )
+               {
+               $s = explode ( "\n" , $s , 2 ) ;
+               $heading = array_shift ( $s ) ;
+               $heading = strtolower ( trim ( str_replace ( "=" , "" , $heading ) ) ) ;
+               if ( $heading == $subid ) return array_shift ( $s ) ;
+               }
+#      print "Not found : {$id}#{$subid}\n" ;
+       return "" ; # Query not found
        }
 
 
@@ -84,7 +129,7 @@ class geo_params
                        $fs = $l['font-size'] ;
                        if ( $fs == "medium" ) $fs = $medium_font_size ;
                        if ( $fs == "" ) $fs = $medium_font_size * 8 / 10 ;
-
+                       
                        $p = array() ;
                        $p[] = "text-anchor:middle" ;
                        $p[] = "fill-opacity:0.7" ;
@@ -105,10 +150,10 @@ class geo
        var $data = array () ;
        var $xsum , $ysum , $count ;
        
-       function set_from_text ( $t , $id = "" )
+       function set_from_id ( $id )
                {
                $this->id = $id ;
-               $t = explode ( "\n!" , "\n".$t ) ;
+               $t = explode ( "\n;" , "\n".geo_get_text ( $id ) ) ;
                $this->data = array () ;
                foreach ( $t AS $x )
                        {
@@ -121,11 +166,6 @@ class geo
                        if ( $key != "" ) $this->data[$key] = $value ;
                        }
                }
-       
-       function set_from_id ( $id )
-               {
-               $this->set_from_text ( geo_get_text ( $id ) , $id ) ;
-               }
 
        function get_data ( &$params )
                {
@@ -294,14 +334,6 @@ $svg = $g->draw ( $p ) ;
 $svg .= $p->get_svg_labels () ;
 
 $styles = "" ;
-/*
-$styles = '    <defs>
-               <style type="text/css"><![CDATA[
-                       .stuff {fill:none; stroke:blue; stroke-width:2}
-               ]]></style>
-       </defs>
-' ;
-*/
 
 $viewBox = $p->get_view_box () ;
 
index 0d8fe47..dd6ed95 100644 (file)
 
 $geo_data = array (
 
-"germany.bavaria/bw" => "!data:484627,092026 484900,092638 485407,092842 485407,093801 490146,092945 490329,094006 490146,094720 485640,094720 485822,095333 485549,095741 484718,100048 484354,100456 484536,101109 484212,101517 483341,101619 482146,101824 481639,102130 481224,102640 480302,103355 474925,103457 474509,102743 474600,102538 474145,102640 473456,102640 473041,101619 473041,101415 472535,101007 471339,101619 470053,101721 465314,101721 464443,101517 463521,101619 463521,100558 463521,095639 463014,094822",
-"germany.bavaria/hesse" => "!data:484900,091923 485407,091821 490004,092026 490926,091617 492212,091107 492537,092026 492628,093251 492537,094108 493316,094006 493458,094720 493914,095231 494745,095537 494602,100252 495251,100905",
-"germany.bavaria/thuringia" => "!data:495615,101109 495615,101926 494602,102947 494329,103804 493407,104008 493641,105131 494238,104620 494602,105335 494420,110805 493914,111111 494238,111622 495200,111417 495524,112132 494927,112541 494602,112949 494927,115031",
-"germany.bavaria/saxony" => "!data:494602,115235 494329,115644 494056,120256",
-"germany.bavaria/east" => "!data:493549,120154 492901,120909 492121,122134 491433,122747 490329,121930 484212,123604 483756,125033 482834,130054 482328,131013 481224,132137 481224,132749 480626,133912 475431,134321 474236,133810 474509,132545 473912,132443 472950,132034 472352,131115 472210,125952 471613,125238 471015,124625 470418,125340 465405,125850 464352,130054 464301,130401 463936,130605 462832,130401",
-"germany.bavaria/south" => "!data:462832,130401 463014,125238 463754,125135 464118,124319 463703,123502 464118,122747 463936,121930 464443,121828 464118,121317 463430,121726 463157,115542 463157,114316 462741,114010 462650,113153 462235,113255 462001,112336 462235,111928 461910,111315 462001,110458 462650,110152 463014,104620 462650,104110 463014,103559 462235,103804 461910,103804 460949,102436 460806,101926 461455,102334 461404,101721 462001,101517 462650,100150 462923,095844 462508,095639 462741,095027",
-
-"germany.bw/south" => "!data:463014,094312 463521,093659 463703,092945 464716,091617 463521,092332 464210,091107 463703,091311 463339,090658 463936,085943 463936,085535 464210,085535 464352,084922 464301,084106 463612,084003 463339,084310 463612,085229 463106,084922 462923,084106 462923,083351 463248,083147 463106,082330 462832,082125 462650,081513 462650,081207 463106,080656 462650,075737",
-"germany.bw/west" => "!data:463703,074920 464807,075022 465820,075329 470509,075124 472210,075941 473132,080248 474145,080758 475107,081615 475704,082228 480717,082738",
-"germany.bw/rp" => "!data:480808,083044 481639,083759 482743,084514 483847,084412 483847,084208 484900,084003",
-"germany.bw/hesse" => "!data:484951,084106 484536,084922 485042,085024 485133,085535 484536,085535 484445,090352 483847,090556 484718,091719",
-
-"germany.nrw/west" => "!data:515435,072940 514747,072021 514240,071306 513734,072021 513045,071409 513045,065531 513136,064305 512903,063244 511850,063551 510928,064305 510057,064612 504447,063857 504356,064305 503252,062529 502745,063346 502006,063551 501641,063142 501044,063755 500304,064612 495758,064101 495342,064816 494836,064918 494511,065122",
-"germany.nrw/rp" => "!data:494602,065020 494511,065428 494420,065939 494420,070552 494420,071409 495109,071000 495524,071306 495109,071715 495342,071919 495524,072021 500213,073655 500810,074614 500953,075022 501226,075941 501732,080350 502421,080656 502006,081207 501641,081411 501459,081717 500902,082023 500537,082432",
-"germany.nrw/hesse" => "!data:500628,082534 500902,082636 501317,082738 502006,083555 501732,084208 502148,084514 503252,084718 503343,085127 503434,085943 504214,085841 504538,085943 504538,085229 504811,085024 505409,085637 505551,090902 510148,090800 510422,091719 505733,091923 510057,092740 511110,093353",
-"germany.nrw/ns" => "!data:511343,093353 511941,093251 512812,093801 512903,093047 513551,092434 514604,092230 514656,091413 515344,091719 515526,091107 520033,091617 520448,091923 521228,091821 520630,090902 520357,090148 521319,085739 521319,085331 520904,083901 520306,084310 515344,084514 514929,084616 514422,083555 514240,082228 514149,081819 514422,081615 514838,082125 515111,081615 515800,082023 520357,081717 520306,080900 520955,080145 520448,080145 520124,075431 515617,074308 515526,073144",
-
-"germany.mv/brandenburg" => "!data:531619,134729 531710,134219 531345,134014 531254,133056 532125,133708 532307,133606 532358,133056 532358,132239 533138,131524 532632,131218 532358,130911 532034,130259 531437,130401 531203,125748 530839,124931 530606,123706 530424,122441 530839,120909 531528,114827 531021,114623 530606,113255 530606,112438 530059,112336 525644,112336 525917,111724 525644,110907",
-"germany.mv/ns" => "!data:525644,110907 525826,110356 531203,105029 530839,104723 531203,103559",
-"germany.mv/sh" => "!data:531203,103559 531943,103804 532632,104518 532905,105131 533502,105131 533736,104518 534424,104110 534840,104314 535255,104825",
-"germany.mv/north-east" => "!data:535346,104825 535619,105437 535710,110152 535619,110601 535255,111417 535802,111724 540906,112438 540906,113153 542101,115542 543256,120705 543529,122849 544400,123604 545048,124727 544218,125135 544400,130054 543944,130259 543205,125952 542658,130911 542152,130605 542607,125646 542101,124931 541503,124727 541048,125544 541412,130707 541230,131830 540632,132953 535853,133300 535204,131932 534606,133606 532125,134627",
-
-"germany.sh/north" => "!data:535346,104825 535619,104314 540217,104314 540126,104620 541230,105744 542101,105539 542516,110050 542425,110805 543256,110152 543438,105437 542931,105131 542749,105642 542607,105642 542516,105131 542425,104927 542010,103906 542243,103253 542607,101619 542101,101007 542607,101313 542840,101007 542749,095639 543347,100150 544218,100354 544957,100150 545048,095639 545413,094108 545919,094006 545413,093557 545413,093047 545322,092638 545555,092332 545737,085535",
-"germany.sh/west" => "!data:545555,085433 544542,085943 543256,091311 542658,090658 542425,085331 541503,085331 541554,090046 541736,090902 541139,090556 540541,090556 535944,091005 535853,090658 534931,091413",
-"germany.sh/ns1" => "!data:534424,092638 533918,093251 533411,093904 532956,094210 532723,094618",
-"germany.sh/ns2" => "!data:531619,102028 531437,102232 531345,102538 531345,102947 531254,103457",
-
-"germany.hamburg/sh" => "!data:532814,095027 532723,095333 533229,100048 533736,101109 533411,101007 532956,101415 532541,101109 531852,101926",
-"germany.hamburg/ns" => "!data:532541,094925 532034,095333 531710,095537 531801,095844 531528,100048 531801,100700 531528,101415 531619,101619",
-
-"germany.ns/sa" => "!data:525137,112438 524722,112234 524216,111928 523851,111315 524033,110356 524033,105539 523800,105233 523618,104416 523254,104212 522838,104723 522008,105437 521228,105642 520955,105233 520357,105948 520124,105539 515435,105948 515020,105846 514838,105846 514422,105539 514240,105539 514058,104110 513643,103559 513409,103906 513045,103804 512812,103804 512214,103702 511759,104212 511343,104110",
-"germany.ns/tr" => "!data:511201,104008 510746,104008 510655,103355 511110,102538 510513,102640 505915,101619 505409,100354",
-"germany.ns/hesse" => "!data:505642,100150 505642,095537 505227,095129 504811,095231 505044,094108 505551,094618 510057,094618 510422,094516 510928,094822 511019,094414 511343,093557",
-"germany.ns/west" => "!data:515708,072940 520306,073144 520955,072634 521137,071409 522241,071613 522059,073349 523851,073451 524631,074410 525735,074001 531021,074512 530839,073246 532307,073451 532358,073859 532632,073655 533320,074512 533411,075329 533320,080043 533502,082534 533138,082432 532216,083147 532216,082330 531801,082738 531528,083351 532125,083901 532307,083657 532723,083453 532905,084003 532449,084820 532125,085331 532632,085535 532814,085433 532814,084922 533229,084820 534840,085331 534749,090046 534424,090454 534515,091515",
-
-"germany.ns" => "
-!type[political]:state
-!name[de]:Niedersachsen
-!name[en]:Lower Saxony
-!region[political]:
-polygon(germany.sh/ns1,germany.hamburg/ns,germany.sh/ns2,germany.mv/ns,germany.ns/sa,germany.ns/tr,germany.ns/hesse,germany.nrw/ns,germany.ns/west)
-",
 
 "germany.sylt" => "
-!type[political]:isle
-!name[de]:Sylt
-!name[en]:Sylt
-!region:
-polygon(germany.sylt)
-!data:544724,083657 550010,083759 551114,084412 550841,084718 550517,084412 545828,084310 545828,084922 545504,084310 545555,084003 544906,084003
-",
-
-"germany.sh.body" => "
-!type:abstract
-!region[political]:
-polygon(germany.mv/sh,germany.sh/north,germany.sh/west,germany.sh/ns1,germany.hamburg/sh,germany.sh/ns2)
-",
-
-"germany.sh" => "
-!type[political]:state
-!name[de]:Schleswig-Holstein
-!name[en]:Schleswig-Holstein
-!region[political]:
-addregs(germany.sylt,germany.sh.body)
-",
-
-"germany.hamburg" => "
-!type[political]:state
-!name[de]:Hamburg
-!name[en]:Hamburg
-!region[political]:
-polygon(germany.hamburg/sh,germany.hamburg/ns)
-",
 
-"germany.mv" => "
-!type[political]:state
-!name[de]:Mecklenburg-Vorpommern
-!name[en]:Mecklenburg-Western Pomerania
-!region[political]:
-polygon(germany.mv/brandenburg,germany.mv/ns,germany.mv/sh,germany.mv/north-east)
 ",
 
-"germany.nrw" => "
-!type[political]:state
-!name[de]:Nordrhein-Westphalen
-!name[en]:North Rhine-Westphalia
-!region[political]:
-polygon(germany.nrw/west,germany.nrw/rp,germany.nrw/hesse,germany.nrw/ns)
-",
 
-"germany.bavaria" => "
-!type[political]:state
-!name[de]:Bayern
-!name[en]:Bavaria
-!region[political]:
-polygon(germany.bavaria/hesse,germany.bavaria/thuringia,germany.bavaria/saxony,germany.bavaria/east,germany.bavaria/south,germany.bavaria/bw)
-",
+"germany.sh" => "
 
-"germany.bw" => "
-!type[political]:state
-!name[de]:Baden-Württemberg
-!name[en]:Baden-Württemberg
-!region[political]:
-polygon(germany.bavaria/bw,germany.bw/south,germany.bw/west,germany.bw/rp,germany.bw/hesse)
 ",
 
 "germany" => "
-!type[political]:country
-!name[de]:Deutschland
-!name[en]:Germany
-!region[political]:
-addregs(germany.bavaria,germany.bw,germany.nrw,germany.mv,germany.sh,germany.ns,germany.hamburg)
+
 ",
 
 "danube" => "