programing

MariaDB : 두 점 사이의 거리(km)를 계산합니다.

goodcopy 2022. 9. 25. 22:59
반응형

MariaDB : 두 점 사이의 거리(km)를 계산합니다.

mariaDB에서 두 점 사이의 거리를 대략적으로 잡으려고 합니다.

이 SQL을 사용합니다.

SELECT st_distance(POINT(50.6333,3.0667),p) from p

다음과 같은 결과를 출력합니다.

0
1.9128040446888426
8.103248262271125

mariaDB는 SRID를 처리하지 않는 것 같습니다.이 값을 km로 변환하는 방법이 있습니까? (110을 곱하는 것이 매우 올바른 것 같습니다.)

저의 목표는 sin, cos, atan 등의 수학을 다루는 것을 피하는 것이며 대략적인 결과는 괜찮습니다.

st_distance에 의해 반환되는 결과는 킬로미터가 아니라 분입니다.d = 40.075km의 적도 둘레의 경우, 2분 간의 거리는 d / 360 = 111,319km이다.

위도 사이의 거리는 일정하지만, 적도에서 극점까지의 경도 사이의 거리는 지속적으로 감소합니다.당신의 예에 따르면, 한 위치에서 지점은 경도 사이의 거리가 약 70km인 프랑스 어딘가에 있을 것입니다.

Haversine 공식을 사용하지 않기 때문에 피타고라스 정리를 사용하여 보다 정확한 결과를 얻을 수도 있습니다.

# Distance between Eiffel tower and Lille

SELECT ST_DISTANCE(GeomFromText("Point(50.6333 3.0669)"), GeomFromText("Point(48.853. 2.348)")) * 111.38;
-> 213.84627307672486

select sqrt(pow((50.63333 - 48.853) * 111.38,2) + pow((3.0669 - 2.348) * 70, 2));
->204.57903071304386

ST_DISTANCE는 평지 지지자를 위해 설계되었습니다.

ST_DISTANCE_SPIRE는 5.7 현재 InnoDB에서 사용할 수 있습니다.

https://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.html#function_st-distance-sphere

언급URL : https://stackoverflow.com/questions/58889637/mariadb-calculate-distance-between-2-points-in-km

반응형