2016-08-29 3 views
0

두 지점 사이의 거리가 N 킬로미터 미만인지 확인해야합니다. 그것이 형상의 일부로서 저장,Mariadb : geography

는 지금까지 SRID 속성은 MySQL의 단지 더미입니다 :이 쿼리를 실행하려고 해요 :

select st_distance(
    ST_GeomFromText('point(45.764043 4.835658999999964)', 4326), 
    ST_GeomFromText('point(45.750371 5.053963)', 4326) 
) < :n 

을하지만 때문에 작동하지 않습니다 메타 데이터를 제외한 모든 실제 계산은이를 무시하고 계산은 유클리드 (평면) 기하학을 가정하여 수행됩니다.

(https://mariadb.com/kb/en/mariadb/st_transform-missing/)

내 목표는 측정 거리이 거리를 변환하거나 도로에 N을 변환하는 것입니다.

어떻게 할 수 있습니까? 아마도 더 나은 해결책을 알고 있습니까?

P. 공간적 방법에 기반한 솔루션이 필요합니다 (또는 성능면에서 더 좋습니다).

답변

0

SPATIAL에서 "거리"기능을 사용할 수 있다고 생각하지 않습니다. 이 작업을 수행하는 FUNCTIONhttps://mariadb.com/kb/en/latitudelongitude-indexing/에 있습니다. 그러나 args와 출력은 lat/lng (10000 * degrees)로 조정됩니다. 코드는 크기 조정을 피하기 위해 변경할 수 있지만 해당 블로그 페이지의 컨텍스트에서 필요합니다.

+0

불행히도, 너무 하드 코딩되어 있습니다. 실제로, 상자 나 일부 확장 기능은 없습니까? –

+0

오라클의 MySQL 5.7.6에는'ST_Distance_Sphere()'와'ST_MakeEnvelope()'가 있습니다. MariaDB가 언제 추가할지 모르겠습니다. –