Fotorozcestník

  • Úvod
  • Fotoprůvodce
  • Fotorozcestník
  • Fotonoviny
  • Archiv článků
  • Fototipy
  • Fotosoutěže
  • Kniha návštěv
  • RSS
  • Blog
  • Vyhledávání Prohledá obsah stránek mimo katalog odkazů.

    Pro hledání v katalogu odkazů použijte volbu Fotorozcestník.
    Nejnovější foto poslední fotografie

      Fotonoviny

    Nepravidelný občasník - články o fotografii, fotografování a úpravě fotek. Pár dobře míněných rad a ověřených postupů jak fotografovat v určité situaci. Návody k provádění úprav fotografií na PC. Programové či technické novinky. Velký seriál o filtrech, jejich druzích a vhodnosti použití u digitálních fotoaparátů.


    Reklama Digitální zrcadlovka
    Nikon D7000
    leží na pomezí amatérského a profesionálního fotoaparátu.
    Vyzkoušejte ji! Reklama
    Spolupráce FotoVideo
    Bod-zlomu
    FotoFanda
    Statistiky
    Reklama
    Aktualizováno: 12.11.2007 (20:25)

    Publikujete své fotografie na internetu ve vlastní fotogalerii? Možná Vás, stejně jako mne, nenadchly hotové PHP skripty volně šířených fotogalerií (např. z nejznámějších třeba Coppermine Photo Gallery), či jednoduché HTML galerie generované z různých fotoeditorů.

    Pokud jste se jako já rozhodli napsat si celou galerii sami a nebo jste si přizpůsobili již hotovou volně šířenou PHP galerii k obrazu svému mám pro Vás jeden tip. K dokonalosti Vaší galerie chybí již jen doplnit snímky o geografické údaje a o odkaz na mapu s přesným místem zhotovení snímku pro lepší informovanost čtenářů. K tomu Vám může dopomoci tato jednoduchá funkce.


    Při práci s fotografiemi v nové verzi programu Zoner Photo Studio 10 jsem začal u svých snímků využívat i přiřazení GPS údajů o přesném místě zhotovení snímku. Podrobnější návod na přiřazení těchto údajů naleznete v článku "GPS a přiřazování pozice v Zoner Photo Studiu 10" na emag.cz.

    Problémem ovšem bylo, jak tyto údaje dále využít. Pro zápis těchto údajů se využívá tzv. EXIF což je zjednodušeně řečeno soubor textových dat obsahující informace o snímku zabudovaný do souboru ve formátu JPG. Ukažme si výpis GPS údajů jednoho takového EXIFu u konkrétní fotografie. První část je výpis 1.úrovně, pod ní rozpad polí s údaji zeměpisné délky a šířky.

    Ukázka z výpisu EXIF údajů

    GPS.GPSLongitude: Array // pole s hodnotami zeměpisné délky GPS.GPSLongitudeRef: E // E=East (východní) W-West (západní) GPS.GPSLatitude: Array // pole s hodnotami zeměpisné šířky GPS.GPSLatitudeRef: N // N=North (severní) S=South (jižní) GPS.GPSAltitude: 0/1000 // údaj o nadmořské výšce GPS.GPSAltitudeRef: // výpis pole hodnot zeměpisné délky - jde o pole se 3 řádky // v každém je hodnota údaje / desetinná místa GPS.GPSLongitude.0: 1600000/100000 // stupně GPS.GPSLongitude.1: 34000/1000 // minuty GPS.GPSLongitude.2: 55705/1000 // vteřiny // výpis pole hodnot zeměpisné šířky - jde o pole se 3 řádky // v každém je hodnota údaje / desetinná místa GPS.GPSLatitude.0: 4900000/100000 // stupně GPS.GPSLatitude.1: 11000/1000 // minuty GPS.GPSLatitude.2: 14403/1000 // vteřiny

    Nyní když víme jak jsou jednotlivé údaje zapsány můžeme je již programově zpracovat a upravit pro naše potřeby. Než složitý slovní popis volím raději komentovanou ukázku programu.

    Nejprve samostatná funkce která bude volána z hlavního programu. Parametrem funkce je cesta k příslušné fotografii.

    Kód funkce pro načtení hodnot

    function GPS($photo) // parametrem funkce je adresa fotografie { // načteme celý EXIF $exif=exif_read_data($photo, 0, true); // pokud není EXIF přítomen nebo nejsou zadány GPS údaje // jak si to ošetříte nechám na Vás :-) if ($exif===false or $exif["GPS"]["GPSLatitude"]==''): $GPS_deg=''; $GPS_int=''; else: // načteme zeměpisnou šířku $LatitudeRef=$exif["GPS"]["GPSLatitudeRef"]; // N nebo S // načteme obsah pole s údajem stupňů - vrátí 4900000/100000 $lat=$exif["GPS"]["GPSLatitude"]; // rozdělíme vrácený řetězec na 2 čísla list($number,$decimal)=explode("/",$lat[0]); // vypočteme podíl těchto čísel $lat_s=intval($number/$decimal); // získáme hodnotu stupňů list($number,$decimal)=explode("/",$lat[1]); $lat_m=intval($number/$decimal); // získáme hodnotu minut list($number,$decimal)=explode("/",$lat[2]); $lat_v=round($number/$decimal,3); // získáme hodnotu vteřin // použito round místo intval - protože mohou být desetinná místa // totéž provedeme pro zeměpisnou délku $LongtitudeRef=$exif["GPS"]["GPSLongitudeRef"]; // E nebo W $long=$exif["GPS"]["GPSLongitude"]; list($number,$decimal)=explode("/",$long[0]); $long_s=intval($number/$decimal); list($number,$decimal)=explode("/",$long[1]); $long_m=intval($number/$decimal); list($number,$decimal)=explode("/",$long[2]); $long_v=round($number/$decimal,3); // vložíme si do proměnné řetězec polohy ve stupních // celý příkaz - na jeden řádek!!! $GPS_deg=$lat_s.'°'.$lat_m."'".$lat_v.'"'.$LatitudeRef. ' '.$long_s.'°'.$long_m."'".$long_v.'"'.$LongtitudeRef; // vložíme si do proměnné řetězec polohy jako desetinná čísla // tento formát je potřebný pro vložení do odkazu na mapu // celý příkaz je opět na jeden řádek!!! $GPS_int=round($lat_s+$lat_m/60+$lat_v/ 3600,7). $LatitudeRef.' '.round($long_s+$long_m/60+$long_v/3600,7). $LongtitudeRef; endif; // protože budeme vracet dvě hodnoty uložíme je do pole $GPS_array=array($GPS_deg,$GPS_int); // vrátíme pole hodnot return $GPS_array; }

    Tím máme zpracovány údaje a uloženy v použitelné formě pro zobrazení na stránkách či použití v odkazu. Ve vlastním programu poté provedeme pouze volání funkce a použití hodnot dle potřeby. Údaj ve stupních můžeme použít pro přímé zobrazení na stránce. Údaj v desetinném čísle použijeme do odkazu na mapu.

    Volání funkce

    // adresu k fotografii máme patrně v nějaké proměnné $foto="gallery/veteran-3.jpg"; // vlastní volání funkce $GPS=GPS($foto); //přečtení vrácených parametrů echo $GPS[0]; // vrátí polohu ve stupních echo $GPS[1]; // vrátí polohu jako desetinná čísla

    echo $GPS[0]; - vrátí výpis - 49°11'14.4"N 16°34'55.71"E

    echo $GPS[1]; - vrátí výpis - 49.1873333N 16.5821417E

    Vytvoření odkazu na Mapy.cz

    // pro použití v odkazu nahradíme mezeru znakem %20 $GPS_url=str_replace(' ','%20',$GPS[1]); // vytvoření odkazu na Mapy.cz // hodnota parametru z udává zvětšení mapy (zoom) maximum je 16 $url='http://www.mapy.cz/#z=14@st=s@sss=1@mm=FP@ssq=loc:'.$GPS_url; // poté můžeme jednoduše zapsat odkaz echo '<a href="'.$url.'" title="odkaz na Mapy.cz">'.$url.'</a>';

    Odkazy na Mapy.cz jsem zvolil z důvodu velmi dobrých fotomap na území ČR. Jak může vypadat použití této funkce v praxi, můžete vidět u jednotlivých snímků ve fotogalerii.

    Pokud Vaše snímky pochází z jižní polokoule nebo amerického kontinentu, Mapy.cz tuto oblast nepokrývají a bude nutno upravit odkaz pro použití na GoogleMaps.

    Vytvoření odkazu na GoogleMaps

    // pro použití v odkazu nahradíme mezeru znakem čárky $GPS_url=str_replace(' ',',',$GPS[1]); // vytvoření odkazu na GoogleMaps // hodnota parametru z udává zvětšení mapy (zoom) $url='http://maps.google.com/maps?t=h&amp;om=1&amp;ie=UTF8&amp;z=15 &amp;iwloc=addr&amp;q='.$GPS_url; // poté můžeme jednoduše zapsat odkaz echo '<a href="'.$url.'" title="odkaz na GoogleMaps.cz">'.$url.'</a>';

    Oba výsledné odkazy pak mohou vypadat třeba takto a oba vedou na brněnské výstaviště do pavilonu A.

    Mapy.cz

    http://www.mapy.cz/#z=14@st=s@sss=1@mm=FP@ssq=loc:49.1873333N%2016.5821417E

    GoogleMaps

    http://maps.google.com/maps?t=h&om=1&ie=UTF8&z=15 &iwloc=addr&q=49.1873333N,16.5821417E

     

    Chyba v Google Maps

    Nyní jsem byl jedním čtenářem upozorněn na chybu která vzniká při přepočtu souřadnic v Google Maps. Pokud zadáte souřadnice s 0 v hodnotách vteřin (např. 49°41'0.0"N,18°5'0.0"E) skript přepočítá správně na desetinné číslo 49.6833333N,18.0833333E. Tato hodnota zadaná do Mapy.cz se zobrazí správně. V Google Maps ale dojde k přepočtu na hodnotu 49°40'60.00"N,18°4'60.00"E, což je blbina, neboť hodnota vteřin nikdy nemůže dosáhnout 60. Přesto by ale měla šipka ukazovat do stejného místa, takže na funkci (rostlináře) by to nemělo mít vliv. Jen ten vrchní je nějaké divné. :-)


    Související články:

    Zpět   | Komentáře: 6x | Hodnoceno: 12x | 100% | Článek je užitečný:   + ANO   •   - NE

  • Úvod
  • Fotoprůvodce
  • Fotorozcestník
  • Fotonoviny
  • Archiv článků
  • Fototipy
  • Fotosoutěže
  • Kniha návštěv
  • RSS
  • Blog
  • V textu použité názvy produktů, firem apod. mohou být ochrannými známkami, nebo registrovanými ochrannými známkami příslušných vlastníků.
    Fotografie podléhají autorskému zákonu 121/2000 Sb.zákonů ČR. • Program & Design & Obsah - Copyright © 2005-2012 - info@fotorozcestnik.eu