Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF2][Symfony2][Symfony]POINT inPOLYGON
Michal_Sz
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 9.10.2007

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


Witam,

Chciałbym zapytać czy jest w Symfony2 jakiegoś gotowe rozwiązanie które umożliwia bardzo szybkie preszukiwanie punktów i obszarów.

Przykładem może być sprawdzenie które z zadanych punktów znajdują się w zadanych obszarach (jest 5000 punktów i 500 obszarów - każdy punkt musi przejść przez każdy obszar)
Podkreślam, że jednocześnie może być zadane bardzo dużo punktów i obszarów.
Punkty i obszary przetrzymywane są w MYSQL , gdzie współrzędne są typem GEOMETRY.

BYć może lepiej to robić na poziomie bazy danych, jeśli tak to jak.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
markuz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Te punkty i obszary są stałe?
Jeżeli tak możesz stworzyć nową tabele o strukturze:
- obszar_id
- gps_id
- contains TINYTINY(1)
Napisać skrypt który wypełni ją danymi tj. 6 250 000 rekordami i zmienić zapytanie, tak aby nie korzystało już z funkcji CONTAINS tylko z tej tabeli.
Indeks UNIQUE na obszar_id i gps_id.

Jeżeli punkty nie są stałe a obszary tak, możesz zrobić automatycznie usuwanie rekordów z tej tabeli po usunięciu punktu (tylko założ indeks na gps_id) i jakieś kolejkowanie przy dodawaniu punktu tak aby cron zaczął obliczać contains jak najwcześniej.

Jeszcze jest opcja, że mając w obszarze GEOMETRY które zajmuje dla każdego rekordu np. 100 kB możesz zrobić kolejne pole o nazwie np. geo_2 które będzie zawierało odchudzona wersję tego kształu np. do 1/10 - dokładność będzie mniejsza ale szybkość powinna wzrosnąć.

Ten post edytował markuz 15.07.2016, 10:02:18
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 6.10.2025 - 15:43