<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - Zapytanie SQL wyszukujące punkty z polygonu]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=1947</link>
		<description><![CDATA[Najświeższe odpowiedzi w Zapytanie SQL wyszukujące punkty z polygonu.]]></description>
		<lastBuildDate>Thu, 13 Mar 2014 10:56:33 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: Zapytanie SQL wyszukujące punkty z polygonu]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=5016#p5016</link>
			<description><![CDATA[kwalifikator && oznacza wykrywanie nakładających się obszarów więc możesz szukać punktu wewnątrz obszaru odniesienia tak jak w przykładzie, który przesłałem Ci na priv lub sprawdzić czy jeśli punkt zamienisz na kwadrat o boku zgodnie z założonym przez ciebie warunkiem. Właśnie to dokładnie robi  ten select

poniższy przykład to pokazuje
with p (koordynaty) as (values (point (0,0))
                              ,(point (1,1))
                              ,(point (0.5,0.5))
                              ,(point (1.5,1.5))
                              ,(point (3,3))
                              ,(point (2,2))
                              ,(point (-1,-1))
                              ,(point (2.1,2.1))
                              ,(point (-1.1,-1.1))
                        )
select p.koordynaty as punkt, box (koordynaty-point(1,1),koordynaty+point(1,1)) as kwadrat
     , box(point(0,0),point(1,1)) && box (koordynaty,koordynaty) as czy_punkt_wewnatrz_obszaru
     , box(point(0,0),point(1,1)) && box (koordynaty-point(1,1),koordynaty+point(1,1)) as czy_kwadrat_naklada_sie_na_obszaru
from p]]></description>
			<author><![CDATA[dummy@example.com (c_michal)]]></author>
			<pubDate>Thu, 13 Mar 2014 10:56:33 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=5016#p5016</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zapytanie SQL wyszukujące punkty z polygonu]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=5015#p5015</link>
			<description><![CDATA[Michal, działa zwraca nawet dużo rekordów więc wydaje się OK mógłbyś napisać co tam się dzieje??
Rozumiem że podajesz punkt startu i mety i te -1... to offset?]]></description>
			<author><![CDATA[dummy@example.com (hetmanJIIIS)]]></author>
			<pubDate>Thu, 13 Mar 2014 10:05:09 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=5015#p5015</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zapytanie SQL wyszukujące punkty z polygonu]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=5013#p5013</link>
			<description><![CDATA[zerknij na to
select *
from points p
where box (point(19.624540,50.275550),point(19.859450,50.162140)) && box(point(longitude,latitude)-point(1,1),point(longitude,latitude)+point(1,1))]]></description>
			<author><![CDATA[dummy@example.com (c_michal)]]></author>
			<pubDate>Thu, 13 Mar 2014 07:20:17 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=5013#p5013</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zapytanie SQL wyszukujące punkty z polygonu]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=5011#p5011</link>
			<description><![CDATA[Chodzi o to że mam dwa punkty: 
A - punkt startu
B - punkt mety 

A (1,1) i B (10,10) 
i chcę wszystkie punkty pośrednie ( które są pomiędzy tymi punktami) zdobyć z pośród całej mapy. Dodatkowo chcę jeszcze dodać dodatkowy offset żeby pobierać np. od (-1,-1) do (12,12) . Program wyszukuje drogi i czasem może zdarzyć się sytuacja że lepsza droga nie pójdzie bezpośrednio w stronę punktu B ale cofnie się (dlatego offset) 
napisałem zapytanie które działa pod warunkiem że punkt A jest poniżej punktu B i A jest po lewej stronie:
oto one: 
SELECT * FROM Points WHERE "longitude" >= '19.624540' AND "latitude" >= '50.275550'
AND "longitude" <= '19.859450' AND "latitude" <= '50.162140'
sorry za znaczki ale zapytanie jest robione w programie QuantumGis :) 

Programu brakuje dwóch przypadków: 
1) Punkt A jest powyzej punktu B
2) Punkt A jest po prawej stronie a punkt B po lewej (kierunek jazdy inny)
i pewnie jeszcze kilka..
Ma ktoś jakiś pomysł?? w Javie pewnie ratował bym się ifami a jak to zrobic e SQL ?]]></description>
			<author><![CDATA[dummy@example.com (hetmanJIIIS)]]></author>
			<pubDate>Wed, 12 Mar 2014 18:19:17 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=5011#p5011</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zapytanie SQL wyszukujące punkty z polygonu]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=5010#p5010</link>
			<description><![CDATA[odpowiedziałem na priv]]></description>
			<author><![CDATA[dummy@example.com (c_michal)]]></author>
			<pubDate>Wed, 12 Mar 2014 13:32:01 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=5010#p5010</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zapytanie SQL wyszukujące punkty z polygonu]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=5009#p5009</link>
			<description><![CDATA[Wysłałem Ci wiadomość na privie,]]></description>
			<author><![CDATA[dummy@example.com (hetmanJIIIS)]]></author>
			<pubDate>Wed, 12 Mar 2014 13:04:08 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=5009#p5009</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zapytanie SQL wyszukujące punkty z polygonu]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=5008#p5008</link>
			<description><![CDATA[klauzula WITH w tym konkretnym wypadku jest wykorzystywana do symulowania danych w tabelach.
Jeśli nie znasz SQL-a to podeślij strukturę tabel (wszystko co jest w poleceniu CREATE TABLE) z punktami i obszarami, napisz mi też czego oczekujesz w wyniku działania zapytania, postaram Ci napisać ten select.

Ps poczytaj też dokumentacje do funkcji geometrycznych w PosgreSql [url]http://www.postgresql.org/docs/current/static/functions-geometry.html,[/url] twój błąd prawdopodobnie polega na tym, że nie umiesz swoich danych zamienić na typy geometryczne typu point i box. Jeśli chcesz sam powalczyć najpierw poczytaj dokumentacje]]></description>
			<author><![CDATA[dummy@example.com (c_michal)]]></author>
			<pubDate>Wed, 12 Mar 2014 12:48:00 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=5008#p5008</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zapytanie SQL wyszukujące punkty z polygonu]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=5007#p5007</link>
			<description><![CDATA[Działami przykład i pokazuje o co mi chodziło, mógłbyś mi wytłumaczyć co tam się dzieje? , mam tabele Points a tam nie rozumiem co zawarte jest w krauzuli WITH ?
Spróbuję podpiąć moja tabele do zapytania (od miejsca select) i jakos to poustawiać- o to chodzi tak ?
Sorry ale z SQLa znam tylko z podstaw.
Dziękuję Ci Michał bardzo :)]]></description>
			<author><![CDATA[dummy@example.com (hetmanJIIIS)]]></author>
			<pubDate>Wed, 12 Mar 2014 12:35:31 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=5007#p5007</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zapytanie SQL wyszukujące punkty z polygonu]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=5006#p5006</link>
			<description><![CDATA[zerknij na poniższy przykład
with obszary (id, koordynaty_box) as (values
(1,box '((0,0),(1,1))'),
(2,box '((1,1),(2,3))')),
punkty (id,koordynaty_punkt) as (values
 (1,point '(-1,-1)'),
 (2,point '(0,0)'),
 (3,point '(1,1)'),
 (4,point '(2,2)'),
 (5,point '(0.5,1)'))
select o.id as obszar_od , o.koordynaty_box as obszar_koordynaty
      ,p.id as punkt_id  , p.koordynaty_punkt as punkty_zawarte_w_obszarze
from obszary o
join punkty p on o.koordynaty_box && box(p.koordynaty_punkt,p.koordynaty_punkt)]]></description>
			<author><![CDATA[dummy@example.com (c_michal)]]></author>
			<pubDate>Wed, 12 Mar 2014 10:53:13 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=5006#p5006</guid>
		</item>
		<item>
			<title><![CDATA[Zapytanie SQL wyszukujące punkty z polygonu]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=5005#p5005</link>
			<description><![CDATA[Witam wszystkich,
Potrzebuję stworzyć zapytanie wyszukujące punkty, które występują w danym polygonie/prostokącie
Mam Baze punktów- Points:
-- LAT- (szerokosc Geogr- rownolezniki)
-- LON (dlugosc Geogr- poludniki)
int ID |bigint osmid |  double LAT  | double LON | degree
np. 1 | 1678695440 | 50.029162 | 19.948975 | 3

Mam takich punktów 800 000 i potrzebuje (by zoptymalizować pracę programu) wybrać tyko część punktów z polygonu o punktach: (koordynaty testowe...) 
A ( 50.028... , 19.94... )
B ( 50.029... , 19.94...)
C ( 50.029... , 19.94... )
D ( 50.029... , 19.94... )

Wymyśliłem na kartce takie zależności :
Mając prostokąt:
A (Ax, Ay) - lewy górny róg
B (Bx, By) - prawy górny róg
C (Cx, Cy) - lewy dolny róg
D (Dx, Dy) - prawy dolny róg
to:
punkt X (nasz punkt który sprawdzamy czy należy do poligonu) musi spełniać warunki:
X >= Ax  i  X<= Bx
X <= Ay i   X>= Cy
Pomożecie mi opakować to w zapytanie sqlowe ?
Z gory dziękuję i pozdrawam]]></description>
			<author><![CDATA[dummy@example.com (hetmanJIIIS)]]></author>
			<pubDate>Wed, 12 Mar 2014 10:09:58 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=5005#p5005</guid>
		</item>
	</channel>
</rss>
