Chciałbym przechowywać tysiące punktów szerokości/długości geograficznej w bazie danych MySQL. Udało mi się skonfigurować tabele i dodać dane za pomocą rozszerzeń geoprzestrzennych, w których kolumna "coord" jest punktem (łac., Lng).Jak korzystać z rozszerzeń geoprzestrzennych MySQL o geometrii sferycznej
Problem:
chcę szybko znaleźć najbliższy wpisy 'n' do szerokości i długości geograficznej stopni 'x' stopni 'Y'. Ponieważ funkcja Distance() nie została jeszcze zaimplementowana, użyłem funkcji GLength() do obliczenia odległości między (X, Y) i każdym z wpisów, sortowania w rosnącej odległości i ograniczenia do wyników "N". Problem polega na tym, że nie oblicza się najkrótszej odległości z geometrią sferyczną. Co oznacza, że jeśli Y = 179,9 stopni, lista najbliższych pozycji będzie zawierać tylko długości zaczynające się od 179,9 i malejące, nawet jeśli istnieją bliższe wpisy o długościach wzrastających od -179,9.
Jak zwykle obsługuje się nieciągłość w długości geograficznej podczas pracy z geometriami sferycznymi w bazach danych? Musi to być łatwe rozwiązanie, ale muszę po prostu szukać niewłaściwej rzeczy, ponieważ nie znalazłem nic przydatnego.
Czy powinienem po prostu zapomnieć o funkcji GLength() i utworzyć własną funkcję do obliczania separacji kątowej? Jeśli to zrobię, czy nadal będzie szybki i wykorzysta rozszerzenia geoprzestrzenne?
Dzięki!
Josh
UPDATE:
This jest dokładnie to, co ja opisuję powyżej. Jednak jest to tylko dla SQL Server. Najwyraźniej SQL Server ma Geometry i Geografia typów danych. Geografia robi dokładnie to, czego potrzebuję. Czy jest coś podobnego w MySQL?
Dzięki za odpowiedź. Co zwykle używają do tego ludzie? Widziałem stronę, którą połączyłeś jakiś czas temu, ale wydaje się, że rozwiązuje ona tylko problem znajdowania punktów najbliżej podanej szerokości/długości geograficznej. Nie rozwiązuje problemu żądania wszystkich punktów w regionie. Korzystanie z rolki własnej metody nie pozwoli Ci zażądać wszystkich punktów od 178 lon do -178 lon i od 30 lat do 35 lat (region prostokątny). – Joshua
Używam [PostGIS] (http://postgis.refractions.net/). Istnieje również kilka bibliotek open source, z których można korzystać - sprawdź [osgeo] (http://www.osgeo.org/).To może być przesada, jeśli wszystko, co robisz, to względne obliczenia odległości. – Seth