2 nokta (latitude-longitude) arasındaki mesafeyi Mysql ST_Distance_Sphere methodu yardımıyla ölçme

Read the English version of this article: https://guven.atbakan.com/blog/calculate-distance-between-2-points-latitude-longitude-with-mysql-st_distance_sphere-method/


Eğer 2 nokta arasındaki mesafeyi ölçmek istiyorsanız, Mysql5.7 ile birlikte gelen ST_Distance_Sphere methodundan faydalanabilirsiniz.

Bir örnek verecek olursak, diyelim ki verilen noktaya en yakın üyeyi getirmek istiyorsunuz: 41.0049823,28.7319855

<?php
$latitude = 41.0049823;
$longitude = 28.7319855;

$sql =  "SELECT users.id, users.username, ST_Distance_Sphere(point(users.longitude, users.latitude),point({$longitude}, {$latitude})) as distance FROM users";

Yukarıdaki query sonucunda distance sonucunu metre biriminde alacaksınız. Burada ufak bir noktaya dikkat etmenizi istiyorum. Bu method longitue-latitude olarak kullanılır, latitude-longitude olarak değil. Neden bilmiyorum fakat ben sürekli "lat-lng" şeklinde kullandığım için biraz bocalamıştım.

Şimdi bir başka örnek ile pekiştirelim. "Verilen noktanın 100 metre yakınındaki üyeleri getirelim".

<?php
$latitude = 41.0049823;
$longitude = 28.7319855;

$sql =  "SELECT users.id, users.username, ST_Distance_Sphere(point(users.longitude, users.latitude),point({$longitude}, {$latitude})) as distance FROM users WHERE distance < 100"

Yukarıdaki sonuç size üye listesini verecek. ST_Distance_Sphere methodunu keşfetmeden önce sinüs, kosinüslü, tanjantlı queryler ile uğraşıyordum. Hem yavaş çalışıyordu hem de her zaman doğru sonuç vermiyordu. ST_Distance_Sphere methoduna hayatımızı kolaylaştırdığı için teşekkürler :)

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir