Kaartjes maken met variabelen?
In een ander topic had ik al eens de vraag gesteld hoe ik de data kan gebruiken van de customtextout10.txt. Dit is uiteindelijk gelukt. Nu zou ik ook graag kaartjes maken met kleurverloop daarin. Bvb koud is blauw en rood is warm. Is het mogelijk om met die variabelen van dat bestand een koppeling te maken naar kleuren? Zoja, hoe kan ik daar best aan beginnen?
Hier is nog eens de link nar dit bestand: http://weerstation-brugge.be/customtextout10.txt
De H van HSL is de hue, stel je wilt van uiterste waarde blauw (die bijvoorbeeld 20 is) naar uiterste waarde rood (die 60 is). Range = 60 - 20 = 40
En je max temperatuur is 40 graden, en je min temperatuur is -20 graden. Range = 40 - -20 = 60.
Dan range omvormen en offset aanpassen:
Temp * (range temp / range hsl) + (min temp - min hsl) = H
de S en de L stel je in op vaste waardes (die jij mooi vind).
Wat jij vooral kan gaan gebruiken: http://www.caperna.org/computing/repository/hsl-rgb-color-conversion-php
Gewijzigd op 06/09/2012 15:42:32 door Eddy E
Ik wil dit topic weer even aansnijden. Ik heb er een tijdje niks meer mee gedaan met die kaartjes maar ik wil er terug energie in steken. Ik heb al wat geprobeerd iets te bereiken met bovenstaande code maar ik weet niet precies hoe ik het moet implementeren op een kaart.
Ik heb deze code om variabelen uit te lezen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// in het bestand weerstation.php
class Weerstation
{
const Brugge = "http://weerstation-brugge.be/customtextout10.txt";
function LeesBericht( $station )
{
$a = explode("\n", file_get_contents ( $station ));
foreach ( $a as $value )
if ( strpos( $value, '$' ) !== false )
eval( str_replace ( '$', '$this->', $value) );
}
}
// het gebruik
include weerstation.php
$weerstation = new Weerstation();
$weerstation->LeesBericht( Weerstation::Brugge );
echo $weerstation->sunriseTime;
?>
// in het bestand weerstation.php
class Weerstation
{
const Brugge = "http://weerstation-brugge.be/customtextout10.txt";
function LeesBericht( $station )
{
$a = explode("\n", file_get_contents ( $station ));
foreach ( $a as $value )
if ( strpos( $value, '$' ) !== false )
eval( str_replace ( '$', '$this->', $value) );
}
}
// het gebruik
include weerstation.php
$weerstation = new Weerstation();
$weerstation->LeesBericht( Weerstation::Brugge );
echo $weerstation->sunriseTime;
?>
Niet dat ik de Brugse weerdienst van hacking beschuldig ... maar je weet nooit.
Alles wat daar op een lijn code kan staan, (bv. verwijder de volledige database + de mappenstructuur ...) wordt zomaar uitgevoerd.
Hier alvast een op maat gemaakte versie, die gewoon een array vult.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$Brugge = "http://weerstation-brugge.be/customtextout10.txt";
//$Brugge = "customtextout10.txt";
$text = file_get_contents($Brugge);
$lines = explode(PHP_EOL, $text);
$lines = array_filter($lines); // lege lijnen verwijderen
$newArray = array();
foreach ($lines as $key=>$line) {
$item = readLine($line);
if (empty($item[1])) {
continue;
}
$newArray[$item[0]] = $item[1];
}
function readLine($line) { // dit kan ongetwijfeld vervangen worden door een preg
$bits = explode(' = "', $line);
if (empty($bits[1])) {
return null;
}
$key = substr($bits[0], 1);
$value = substr($bits[1], 0, strlen($bits[1]) - 2);
return array($key, $value);
}
echo '<pre>' . print_r($newArray, 1) . '</pre>';
?>
$Brugge = "http://weerstation-brugge.be/customtextout10.txt";
//$Brugge = "customtextout10.txt";
$text = file_get_contents($Brugge);
$lines = explode(PHP_EOL, $text);
$lines = array_filter($lines); // lege lijnen verwijderen
$newArray = array();
foreach ($lines as $key=>$line) {
$item = readLine($line);
if (empty($item[1])) {
continue;
}
$newArray[$item[0]] = $item[1];
}
function readLine($line) { // dit kan ongetwijfeld vervangen worden door een preg
$bits = explode(' = "', $line);
if (empty($bits[1])) {
return null;
}
$key = substr($bits[0], 1);
$value = substr($bits[1], 0, strlen($bits[1]) - 2);
return array($key, $value);
}
echo '<pre>' . print_r($newArray, 1) . '</pre>';
?>
Vertel nog eens wat je uiteindelijk van plan bent.
Kaartjes? Welke kaartjes?
Die kleurencodes: dus bv. alle waarden eindigend op "°C" uitlezen (of eventueel alles met 'Temp' in de key naam); daar de numerieke waarde uit halen en die dan een kleurencode geven.
Okay, vertel jij eens: Hoe veel graden is koud, hoe veel graden is warm?
Die gradiënt van blauw naar rood is geen probleem. Je gaat lineair van koud: rgb(0,0,255) naar lauw: rgb(255,0,255) naar warm: rgb(255,0,0)
Gewijzigd op 25/09/2013 11:11:44 door Kris Peeters
Het probleem is dat ik niet weet hoe ik eraan moet beginnen.
Toevoeging op 25/09/2013 11:24:07:
Koud is bvb -15°C en warm +35°C.
Die tekst file is toch gewoon van 1 locatie; juist?
Het is niet evident om isothermen (de lijnen van gelijke temperatuur) te tekenen op een kaart; net zoals het niet gemakkelijk is om hoogtelijnen of andere iso- lijnen te tekenen.
Misschien met een soort van punten (waarvan je de gegevens hebt); die een veld uitstralen, en zo dus de omringende punten beïnvloeden ...
Niet evident, lijkt me.
Het zal inderdaad niet evident zijn maar zoals je ziet op die kaart moet het toch kunnen, de vraag is alleen hoe?
$lines = explode(PHP_EOL, $text);
Dit kan toch in één keer met file().