2016-08-26 2 views
0

나는 주어진 반경 거리를 얻을 수있는 MySQL의 테이블과 요청이 : 예를 들어ST_Length 측정 단위 유형

SELECT 
     *, 
(ST_Length(LineStringFromWKB(LineString(location, GeomFromText("POINT(55.525211 30.492340)"))))) AS distance        
    FROM 
     `#__positions` 
    HAVING 
     distance < radius 

내가 2 마일 반경에있는 모든 기록을 얻을 wan't을. 그러나 ST_Length가 반환 한 단위를 알지 못하기 때문에 문제가 발생합니다. 인 경우 마일로 변환 할 수 있습니까?

- 위치 테이블 열에는 전 세계의 많은 공간 지점이 있습니다. 감사합니다. .

답변

1

나는 MYSQL 사용자가 아니지만, 내가 말할 수있는 바에 따르면, 이와 관련하여 MSSQL과 유사합니다.

나는 GeleFromText를 직각 좌표로 생각하고, 그렇다면 ST_Length는 원하는 것을주지 않을 것이다.

것은이 반드시보십시오 :

SELECT 
ST_Length(
    LineStringFromWKB(
    LineString(
     GeomFromText("POINT(0 0)"), 
     GeomFromText("POINT(1 0)") 
    ) 
) 
) 

을하는 당신에게 1의 값을주는 경우에, 당신은 직교 작동, 또는 평면 평면이며, 조정합니다.

귀하의 질문에 당신은 단위가 반환되었는지 물었습니다, 그리고 그것은 거의 사실입니다.

이 문제는 모든 각도가 같지 않다는 점입니다. 북극에서 몇 피트 떨어져있는 척하십시오. 몇 단계 만 거치면 0도 경도와 90도 경도 사이를 걸어 갈 수 있습니다. 적도에서 물건을 사는 경우 바다를 건너야합니다. 이는 학위가 길이로 변환 될 수 없음을 의미합니다.

이 문제에 대해 (아주 작은) 검색 결과에서 MYSQL에 inbuilt 함수가 없어 표면적 측정이 가능해 보입니다. 가장 좋은 방법은 거리를 결정하기 위해 haversine 수식을 사용하는 함수를 작성하는 것입니다.