<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - Matematyka w SQL- przeliczanie LAT i LNG na GPS]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=649&amp;type=atom"/>
	<updated>2011-09-29T12:24:10Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=649</id>
		<entry>
			<title type="html"><![CDATA[Odp: Matematyka w SQL- przeliczanie LAT i LNG na GPS]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2738#p2738"/>
			<content type="html"><![CDATA[Działa poprawnie gszpetkowski dzięki :-)
Jak wezmę się wieczorem za pisanie to poniżej dopiszę jaki mi kod wyszedł może komuś się przyda. 
Pozdrawiam
Michał
KOD:
SELECT lat, lng, nazwa,
(substr(lat, 1, 2)) AS latSt, (substr(lat, 4, 8))AS latMin,
(substr(lng, 1, 2)) AS lngSt, (substr(lng, 4, 8))AS lngMin  
FROM Mapa;

Niestety nie udało mi się zrobić przeliczania w SQL poniewaz mam problemy z typami (projektant bazy wartosci LAT i LNG zrobil na VARCHAR :((]]></content>
			<author>
				<name><![CDATA[hetmanJIIIS]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1268</uri>
			</author>
			<updated>2011-09-29T12:24:10Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2738#p2738</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Matematyka w SQL- przeliczanie LAT i LNG na GPS]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2737#p2737"/>
			<content type="html"><![CDATA[Odpowiednikiem jest funkcja [url=http://www.postgresql.org/docs/current/static/functions-string.html#FUNCTIONS-STRING-OTHER]substr[/url], przykładowo:

[code]SELECT substr(18.09092323, 4, 8);
  substr  
----------
 09092323
(1 row)[/code]

Wprawdzie pierwszym parametrem powinien być string, ale dla liczb zachodzi konwersja implicit.

Jeśli obcianie ma działać niezależnie od liczby cyfr przed przecinkiem to można dodać użyć strpos, żeby wyłuskać pozycję kropki:

[code]SELECT substr(118.09092323, strpos(118.09092323, '.') + 1, 8);
  substr  
----------
 09092323
(1 row)

SELECT substr(18.09092323, strpos(18.09092323, '.') + 1, 8);
  substr  
----------
 09092323
(1 row)[/code]]]></content>
			<author>
				<name><![CDATA[gszpetkowski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1223</uri>
			</author>
			<updated>2011-09-28T13:43:33Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2737#p2737</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Matematyka w SQL- przeliczanie LAT i LNG na GPS]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2736#p2736"/>
			<content type="html"><![CDATA[Witam wszystkich

W bazie posiadam długosc i szerokosc geograficzna (np. 49.09223345, 18,09092323). Chcę ją przeliczyć na GPS w SQL'u.
Algorytm przeliczania z LAT(szerokosc) i LNG(dlugosc) na GPS:
1)
GPS to np. 49 32' 33'' 

49- stopnie
32'-minuty
33''-serkundy
lat=49.09223345
przeliczanie na stopnie- liczba_przed_przecinkiem= 49
przeliczanie na minuty- (osiem_liczb_po_przecinku * 60)/100 000 000= 09223345*60/100 000 000
przelicznaie na sekundy- (.... bla bla bla )

Co mnie interesuje- jak zrobic w SQL zeby do obliczen bralo np. osiem liczb po przecinku 
np.:
z liczby: 49.09223345 bralo: 09223345
W excelu jest funkcja MID(49,09223345;4;8):
(wartosc;pozycja_startowa;liczba_znakow) - czy w SQL'u jest cos podobnego ??]]></content>
			<author>
				<name><![CDATA[hetmanJIIIS]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1268</uri>
			</author>
			<updated>2011-09-28T12:24:12Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2736#p2736</id>
		</entry>
</feed>
