<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>&#60;?blog &#187; JPG</title>
	<atom:link href="https://blog.visionsoftware.pl/tag/jpg/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.visionsoftware.pl</link>
	<description>...nie tylko o programowaniu</description>
	<lastBuildDate>Sun, 23 Mar 2014 19:23:43 +0000</lastBuildDate>
	<language>pl-PL</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>Odczyt danych GPS ze zdjęcia w PHP</title>
		<link>https://blog.visionsoftware.pl/programowanie-php/odczyt-danych-gps-ze-zdjecia-w-php.html</link>
		<comments>https://blog.visionsoftware.pl/programowanie-php/odczyt-danych-gps-ze-zdjecia-w-php.html#comments</comments>
		<pubDate>Wed, 28 Dec 2011 22:19:18 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Fliszta]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[EXIF]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[JPG]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zdjęcie]]></category>

		<guid isPermaLink="false">http://blog.visionsoftware.pl/?p=465</guid>
		<description><![CDATA[Wykonanie zdjęcia urządzeniem posiadającym GPS, spowoduje zapisanie w nim dodatkowych informacji na temat lokalizacji. Są one przechowywane w metadanych obrazu (EXIF), zatem można je bardzo łatwo odczytać przy pomocy odpowiedniej funkcji dostępnej w PHP. Rozszerzenie do obsługi EXIF zawiera w PHP kilka ciekawych funkcji. Aby było ono dostępne, PHP musi zostać skompilowane z opcją -–enable-exif. Najbardziej przydatną w omawianym przykładzie będzie oczywiście exif_read_data(), która odczytuje nagłówek z plików JPG oraz TIFF. Zwraca ona tablicę z [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Wykonanie zdjęcia urządzeniem posiadającym GPS, spowoduje zapisanie w nim dodatkowych informacji na temat lokalizacji. Są one przechowywane w metadanych obrazu (<code>EXIF</code>), zatem można je bardzo łatwo odczytać przy pomocy odpowiedniej funkcji dostępnej w PHP.<span id="more-465"></span></p>
<p>Rozszerzenie do obsługi <code>EXIF</code> zawiera w PHP kilka ciekawych funkcji. Aby było ono dostępne, PHP musi zostać skompilowane z opcją <code>-–enable-exif</code>. Najbardziej przydatną w omawianym przykładzie będzie oczywiście <code>exif_read_data()</code>, która odczytuje nagłówek z plików JPG oraz TIFF. Zwraca ona tablicę z danymi określającymi urządzenie oraz szczegółowe parametry zdjęcia. Funkcja przyjmuje następujące parametry:</p>
<pre class="brush: php; light: true; title: ; notranslate">
array exif_read_data ( string $filename [, string $sections = NULL [, bool $arrays = false [, bool $thumbnail = false ]]] )
</pre>
<p>Kolejno oznaczają one:</p>
<ul>
<li>filename &#8211; nazwa pliku, z którego odczytujemy dane</li>
<li>sections &#8211; lista sekcji, jakie mają zostać odczytane, np. <code>FILE</code>, <code>COMPUTED</code>, <code>THUMBNAIL</code>, itd. Gdy parametr nie zostanie określony, odczytane zostaną wszystkie</li>
<li>arrays &#8211; określa, czy poszczególne sekcje mają zostać tablicami. <code>COMPUTED</code>, <code>THUMBNAIL</code> oraz <code>COMMENT</code> zawsze zostają zwrócone w ten sposób, gdyż mogą zawierać nazwy powodujące konflikt z innymi sekcjami.</li>
<li>thumbnail &#8211; gdy ustawiony na <code>true</code>, zostanie odczytana miniaturka</li>
</ul>
<p>Standardowe wywołanie funkcji spowoduje pobranie wszystkich danych ze zdjęcia. W przypadku, gdy wykonano je urządzeniem z GPS, pojawią się dodatkowe pola. Pierwszym miejscem, gdzie je zauważymy, jest lista sekcji:</p>
<pre class="brush: php; light: true; title: ; notranslate">
[SectionsFound] =&gt; ANY_TAG, IFD0, THUMBNAIL, EXIF, GPS
</pre>
<p>Wystarczy sprawdzić poszczególne pola, aby oprócz informacji na temat urządzenia oraz parametrów wykonanego zdjęcia, znaleźć także dane GPS. Mogą one wyglądać następująco:</p>
<pre class="brush: php; light: true; title: ; notranslate">
    [GPSLatitudeRef] =&gt; N
    [GPSLatitude] =&gt; Array
        (
            [0] =&gt; 33/1
            [1] =&gt; 52/1
            [2] =&gt; 129675/4096
        )

    [GPSLongitudeRef] =&gt; W
    [GPSLongitude] =&gt; Array
        (
            [0] =&gt; 116/1
            [1] =&gt; 18/1
            [2] =&gt; 23882/4096
        )

    [GPSAltitudeRef] =&gt; 
    [GPSAltitude] =&gt; 304/1
</pre>
<p>Jak widać na przedstawionym przykładzie, możemy odczytać szczegółowe dane na temat współrzędnych geograficznych miejsca, w którym wykonano zdjęcie. Są one wyrażone w stopniach, <code>GPSLatitude</code> oraz <code>GPSLongitude</code> zawierają tablice z odpowiednimi danymi: [0] &#8211; stopnie, [1] &#8211; minuty, [2] &#8211; sekundy (należy podzielić dane liczby). Aby uzyskać stosowane częściej w Google Maps oraz innych serwisach wartości dziesiętne, musimy odpowiednio przeliczyć powyższe dane. Należy w tym celu skorzystać ze wzoru:</p>
<pre class="brush: php; light: true; title: ; notranslate">
DD = D + M/60 + S/3600
</pre>
<p>gdzie D to stopnie, M to minuty, a S to sekundy.</p>
<p>Należy także pamiętać, że w zależności od szerokości i długości geograficznej określonej w <code>GPSLatitudeRef</code> oraz <code>GPSLongitudeRef</code> musimy postawić odpowiednio znak minus. W tym przypadku jest tak dla drugiej wartości, która wskazuje na zachód (podobnie należy zrobić dla południa).</p>
<p>Ostatecznie przeliczone współrzędne posiadają następujące wartości 33.87555556 oraz -116.30166667 (dla 33&deg; 52&apos; 32&quot; N i 116&deg; 18&apos; 06&quot; W).</p>
<p>Tablica z danymi GPS zawiera także wartość <code>GPSAltitude</code>, która określa wysokość w metrach, na jakiej wykonano zdjęcie.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.visionsoftware.pl/programowanie-php/odczyt-danych-gps-ze-zdjecia-w-php.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
