Odległość pomiędzy obiektami na podstawie współrzędnych.

0

Hej,
Potrzebuję zbudować zapytanie, które pomoże mi wyświetlić Statki znajdujące się w pobliżu mojego statku, na podstawie współrzędnych geograficznych. Tabela wygląda tak:

ID Nazwa Szer Dłg
1 Ship1 50 40
2 Ship2 50 10
3 Ship3 40 30
4 Ship4 60 20

Odległość ma być wyliczona według wzoru: ((Szer2-Szer1)2 + (Dłg2-Dłg1)2).

Początkowo chciałem zastosować funkcję analityczną z której kiedyś korzystalem, a która pozwoliłaby utworzyć dodatkowe kolumny zawierające wartości z rekordu poniżej, ale zapomniałem jej składni (OVER BY ... 1 PRECEEDING? cos takiego) :( Zamiast tego zrobiłem sobie JOINa mojej tabeli do samej siebie z warunkiem t1.ID = (t2.ID+1) - efekt otrzymałem ten sam, ale metoda troche słabsza. Tylko, że teraz do mnie dotarło, że w ten sposób mogę porównać tylko odległość między dwoma statkami, a ja muszę porównać wszystkie kombinacje

Rozwiązanie jest mi potrzebne do wykonania przykładowego zadania więc tabela będzie zawierała niewiele rekordów. Jest to element aplikacji JAVA i nie do końca wiem jak jest identyfikowany mój statek, ale może dla ułatwienia, ustalmy na sztywno jakiś jeden statek.

Proszę o wsparcie. Pozdrawiam :)

0

Tak obliczysz odległości od statku o ID równym 2 do pozostałych .

SELECT 
   b.id as id,
  power( (power((A.szer-b.szer),2)+power((a.dlug-B.dlug), 2)),0.5) as distance
FROM 
  STATKI a,statki b
where a.id =2 and b.id<>2
0

Jeśli dobrze widzę, to tutaj też muszę zrobić JOINa tej tabeli do samej siebie, i wyliczać ręcznie dla każdej kombinacji dwóch statków. Nie wiem czy wystarczająco jasno tłumaczę - chciałbym otrzymać dodatkową kolumnę w której będzie odległość obliczona według podanego wzoru, ale nie ręcznie tylko w miarę możliwości automatem, który będzie wyliczał tę odległość w przypadku gdy zostaną dodane nowe statki.

0

Nie wiem po co Ci taka informacja w bazie, ale jak chcesz to dodaj kolumnę, a jej treść możesz wypełnić w triggerze , tylko że wtedy musisz na sztywno określić ID Twojego statku.
W rozwiązaniu , które podałem wcześniej, ID Twojego statku może być parametrem

1 użytkowników online, w tym zalogowanych: 0, gości: 1