Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Lokalizacja obiektu po wspolrzednych
prowseed
post 21.09.2012, 13:13:45
Post #1





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam,
mam dosc nietypowy problem i nie wiem jak sobie z nim poradzic. Dodam, ze uzycie bazy z zalozenia bedzie duze i boje sie, ze zrobie to nieoptymalnie...
Ale do rzeczy: Mam tabelę z listą obiektów, która wygląda tak:

[ id | name ]

oraz tabelę właściwości, która prezentuje się tak:

[ id | object_id | attribute | value ]

Atrybutów dla jednego object_id jest bardzo dużo, między innymi znajduje się tam latitude i longitude, czyli przykładowe wiersze:

[ 45 | 11 | lat | 55.423423 ]
[ 46 | 11 | lng | 21.102234 ]


Baza w taki sposób była budowana dość długo, a teraz ma dojść, że tak powiem feature lokalizacji obiektów za pomocą funkcji haversina, która wykonuje się mniej więcej tak:
haversine_distance(lat_0, lng_0, lat, lng) < 40
Zwraca ona true lub false w zależności od tego, czy dany punkt lat,lng znajduje się w promienu 40 kilometrów od lat_0,lng_0

Zdaję sobie sprawę, że jest to nieoptymalne i najłatwiejszą rzeczą byłoby posiadanie tabeli obiektów w postaci [ id | name | lat | lng ] ( co w ostateczności uczynię )
ale jest jak jest, do tego są już wszystkie mechanizmy i bardziej mi się na chwilę obecną czasowo opłaca zrobić nieludzkie zapytanie niż zmieniać konstrukcję aplikacji.
Tylko... Nie wiem jak owe zapytanie zbudować :/
Do tej pory zapytania wyglądały mniej więcej jakoś tak:

  1. SELECT id
  2. FROM objects
  3. INNER JOIN objects_attr m1
  4. ON ( objects.id = m1.object_id )
  5. WHERE
  6. objects.id > 2233
  7. AND ( m1.attribute = 'lat' AND m1.value < 60 )
  8. AND ( m1.attribute = 'lon' AND m1.value < 30 )


Czy jest jakaś możliwość połączenia tego zapytania z funkcją haversina która de facto musi sprawdzić obie wartości value występujące powyżej?

Jeżeli się nie jasno wyraziłem, to mówić- doprecyzuję, sam nie jestem w stanie sprawdzić, bo już mnie głowa boli od myślenia :s
Dzięki za pomoc.


--------------------
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 00:07