Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: gps sijainti tietojen muuttaminen

peg [03.05.2010 10:04:45]

#

Hei !
Onko php:ssä valmista funktiota jolla voi muuttaa sijainti koordinaatit tuollaiseen muotoon kuin esim. bing ja google käyttää.

Eli tämä
69°3'21" N 20°47'58" E

muotoon
69.0558333333333, 20.7994444444444

esim http://www.bing.com/maps/

Grez [03.05.2010 12:14:31]

#

Käsittääkseni ei ole. Tuosta regexpilla poimii ja jakaa minuutit 60:lla ja sekunnit 3600:lla.

Entropia on tehnyt näköjään koodiesimerkinkin (ilman poimimista) http://mureakuha.com/koodikirjasto/1171

Metabolix [03.05.2010 15:11:24]

#

<?php
function muunna($str) {
	return preg_replace(
		'/((?:\\d+°)?)((?:\\d+\')?)((?:\\d+")?) ([NESW])/e',
		'(intval("$1") + intval("$2") / 60.0 + intval(\'$3\') / 3600.0) * ("$4" == "N" || "$4" == "E" ? 1 : -1)',
		$str
	);
}
muunna("69°3'21\" N, 20°47'58\" E"); // 69.055833333333, 20.799444444444

peg [03.05.2010 15:21:21]

#

Kiitän, tuo Entropian esimerkki auttoi.

peg [04.05.2010 13:09:59]

#

Tässä toteutukseni. http://veijola.net/sijainti/
Nyt tuo sijainti sarake pitäisi saada sellaiseksi jossa olisi raaka kuva
Suomen kartasta jossa pari kaupunkia merkittynä ja koordinaattien mukaan näyttäisi vaikka punaisen pisteen kartalla, jotta selviäisi suunnilleen sijainti. Eli vähän tähän tyyliin http://fi.wikipedia.org/wiki/Oulu
Onko antaa ideoita, varsinkin kun koordinaatit kasvaa ylöspäin mentäessä
ja näytöllä sijainti pixeleinä pienenee. Koska kuvia on paljon tulisi kartan
olla yksi ja sama taustakuva jonka päällä vain näkyy pilkku.

<table border="1">
<tr> <th>pituutta</th> <th>leveyttä</th> <th>korkeus</th> <th>kuva</th>
<th>sijainti</th> <th>aika</th> <th>nimi</th> </tr>
<?php

    foreach (glob("../sijainti/{*.jpg,*.gif,*.png}", GLOB_BRACE) as $filesimg) {

$data = @exif_read_data($filesimg);

$deg = ereg_replace('/1', '', $data["GPSLatitude"][0]);

$min = ereg_replace('/1', '', $data["GPSLatitude"][1]);

$sec = ereg_replace('/1', '', $data["GPSLatitude"][2]);

$frac = ($min * 60 + $sec) / 3600;
#  $decimal = $deg + $frac;

 #   $data["GPSLatitudeRef"],

$deglo = ereg_replace('/1', '', $data["GPSLongitude"][0]);

$minlo = ereg_replace('/1', '', $data["GPSLongitude"][1]);

$seclo = ereg_replace('/1', '', $data["GPSLongitude"][2]);

$fraclo = ($minlo * 60 + $seclo) / 3600;

#    $data["GPSLongitudeRef"]



$kuva = $data[FileName];

echo '<tr><td> ', $deg + $frac, '</td> <td> ', $deglo + $fraclo , '</td><td> ' , substr($data['GPSAltitude'], 0, -6), ' m</td><td>' , '<img src="../sijainti/'.$kuva.'" width="200">' , '</td><td> ' , 'sijainti', '</td><td> ' , $data["DateTimeOriginal"], '</td><td> ' , $kuva , '</td></tr>';

   }

?>

Grez [04.05.2010 13:25:29]

#

peg kirjoitti:

Tässä toteutukseni.
Onko antaa ideoita, varsinkin kun koordinaatit kasvaa ylöspäin mentäessä
ja näytöllä sijainti pixeleinä pienenee.

Siis ihan tosissasiko kysyt? Jotenkin tuntuu että et ole edes yrittänyt miettiä itse. Jos luvun kertoo -1:llä, niin siitä tulee negatiivinen. Joudut joka tapauksessa skaalaamaan ja siirtämään origoa, että saat koordinaatit täsmäämään kuvan pikseleiden kanssa.

Eli siis:
x = x-siirtymä + x-skaalaus * longtitude
y = y-siirtymä + y-skaalaus * latitude

Eli oletettavasti y-skaalaus on negatiivinen numero...

peg [04.05.2010 13:29:41]

#

Siksi juuri kysynkin, tuo skaalaminen ja kääntäminen tuntuu aika hankalalta, mutta ei ehkä sittenkään niin hankalalta kuin ensiksi ajattelin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta