Załóżmy, że mam tabelę 2 kolumny tak:Znajdź odległość między dwoma punktami w MYSQL. (Za pomocą punktu Typ danych)
| user_id | int(11) | NO | UNI | NULL | |
| utm | point | NO | MUL | NULL | |
Jak widać, jest to bardzo proste. utm jest typem danych Punkt. Wstawiam to tak:
INSERT INTO mytable(user_id, utm) VALUES(1, PointFromWKB(point(50, 50)));
Następnie tworzę indeks przestrzenny.
ALTER TABLE mytable ...add spatial index on(utm) or something. (forgot)
Dobrze, wszystko jest dobrze. Teraz chcę wybrać *, gdzie odległość < 99999. Ale to nie działa!
//This is supposed to select all where the distance is less than 99999999.
set @mypoint = PointFromWKB(point(20,20))
select * from mytable where GLength(LineString(utm, @mypoint)) < 9999999;
Empty set (0.00 sec)
select * from mytable where GLength(LineStringFromWKB(LineString(utm, @mypoint))) < 9999;
Empty set (0.00 sec)
Nawiasem mówiąc, próbowałem wstawić do bez PointFromWKB ... i to nie działa ... to dlaczego ktoś zasugerował, że PointFromWKB do mnie.
Czy oblicza się odległość na podstawie współrzędnych geograficznych lub współrzędnych planarnych. –