2013-07-15 1 views
0

MySQL Spatial 5.6.12에 대한 미터법을 결정하려고합니다.MYSQL Spatial에서 사용되는 메트릭은 무엇입니까?

예를 들어 여러 레코드에 대해 포인트 지오메트리를 저장하기 위해 만든 다음 테이블이 있습니다.

CREATE TABLE POINTS_DATA(
    RECORD_ID   INT(15), 
    STREET_ADDRESS  VARCHAR(50), 
    CITY    VARCHAR(50), 
    STATE    VARCHAR(25), 
    ZIPCODE    VARCHAR(11), 
    LOCATION_GEO_CODES_SDO POINT NOT NULL, 
    SPATIAL INDEX(LOCATION_GEO_CODES_SDO), 
    PRIMARY KEY(RECORD_ID) 
) ENGINE=MyISAM; 

테이블을 만든 후에 테이블에 일부 레코드를 성공적으로 삽입했습니다.

이제 지정된 LAT/LONG에서 1 마일 이내에있는 모든 레코드를 가져 오기 위해 다음 쿼리를 생성했습니다. 여기에 내가 그것을 위해 실행하는 쿼리입니다 :

SELECT RECORD_ID, STREET_ADDRESS, CITY, STATE, ZIPCODE 
     , GLength(LineStringFromWKB(LineString(LOCATION_GEO_CODES_SDO 
     , POINT(-85.123,39.113))) AS DISTANCE 
FROM POINTS_DATA 
HAVING DISTANCE < 1 ORDER BY DISTANCE; 

이 쿼리를 실행 한 후, 나는 몇 가지 기록을받을 수 있나요,하지만 거리가 마일 또는 미터 될 것 같지 않습니다. 0.0123, 0.0145 등과 같은 분수 값입니다.

MySQL의 어느 곳에서도 관련 설명서를 찾을 수 없었습니다. MySQL에서 사용중인 메트릭 시스템을 아는 사람이 있습니까? 그리고 있다면, 어떻게 그것을 마일로 변환 할 수 있습니까?

즉, 위의 쿼리를 실행하여 1 마일 이내에있는 모든 레코드를 가져와야한다면 어떻게 다시 구성해야합니까?

답변

0

MySQL Spatial은 GLength에 대한 지오메트리의 공간 참조 시스템을 사용합니다. 데이터에 대해 사용하고있는 SRID (있는 경우)를 정의하지 않았지만 사용자가 제공 한 값을 추측하면 SRID가 기본 값입니다. 결과적으로 얻는 값은도를 단위로 사용하여 두 점 사이의 직교 거리에 불과합니다.

선의 거리 만 계산하기 때문에 Haversine 공식을 사용하여 GLength를 내리고 거리를 직접 계산할 수 있습니다. MySQL Great Circle Distance (Haversine formula)을 참조하십시오.

+0

데카르트 좌표 시스템 대신 위도와 경도에 대한 측지 좌표 시스템을 어떻게 사용합니까? MYSQL Spatial Extensions에서 그렇게 할 수있는 방법이 있습니까? – user2052129

+0

MySQL은 측지 계산을 지원하지 않습니다. 측지 CRS (latin-lng 포함)를 사용할 수도 있지만, MySQL은 여전히 ​​거리를 반환 할 때 데카르트 계산을 계속 사용합니다. 측지 계산이 필요한 경우이를 지원하는 일부 데이터베이스는 PostGis, Oracle Spatial 또는 SQL Server입니다. – lreeder

+0

감사합니다. 저는 과거 Oracle Spatial을 사용해 왔지만 측지 좌표계를 지원한다는 것을 알고 있습니다. Oracle Spatial의 모든 기능과 비교하여 MySQL Spatial을 비용 효율적인 솔루션으로 탐색하고있었습니다. 측지 좌표계가 지원되지 않으면 변환 할 수있는 방법이 있습니까? .. 괭이로 실제지도에서 점 기하학을 확인하고 LAT/LONGS로 식별되는 실제 상가 위치를로드 할 수 있습니까? 이 문제를 MYSQL에서 지원하기위한 해결 방법은 무엇입니까? – user2052129

관련 문제