2012-06-18 3 views
-4

위도와 경도가있는 엔티티가 있습니다.FetchXML - GeoCode 거리 별 거리 검색

이제 주소가 있습니다.이 주소의 위도와 경도를 알고 있으며, 3 마일 이내에 기록을 검색하고 싶습니다.

FetchXML을 사용하여 어떻게 수행하나요?

답변

2

지오 코딩이 기능으로 제공되지 않으므로 FetchXml을 통해 직접이 작업을 수행 할 수 없습니다.

즉, 손으로 뭔가를 굴리기 시작할 필요가 있음을 의미합니다. 쉽지는 않을 것입니다. This site에는 (CRM과 관련하여 언어가 다른 경우에도) 수행해야 할 작업에 대한 개요가 있습니다.

귀하의 요구 사항을 완화하고 FetchXml을 사용하여 경도 +/- 1.5 miles 위도 +/- 1.5 마일 (물론 사각형 대신에 반경).

더 엄격하게해야하는 경우 다음 (즉, MSSQL이 아님) 쿼리를 다시 작성하여 일종의 QueryExpression과 함께 사용할 수 있습니다. 예를 들어, 위와 같이 위도와 경도가 중심점의 1.5 마일 인 곳에서 데이터의 대략적인 하위 집합을 결정하는 쿼리 식과 그 결과를 반환 한 후에 각각에 대해 원하는 반경 내에 있는지 계산합니다 (예 : ...

SELECT id, X(gm_coor) AS latitude, Y(gm_coor) AS longitude, 
    ATAN2(
    SQRT(
     POW(COS(RADIANS(__LAT__)) * 
      SIN(RADIANS(Y(gm_coor) - __LNG__)), 2) + 
     POW(COS(RADIANS(X(gm_coor))) * SIN(RADIANS(__LAT__)) - 
      SIN(RADIANS(X(gm_coor))) * COS(RADIANS(__LAT__)) * 
      COS(RADIANS(Y(gm_coor) - __LNG__)), 2)), 
    (SIN(RADIANS(X(gm_coor))) * SIN(RADIANS(__LAT__)) + 
    COS(RADIANS(X(gm_coor))) * COS(RADIANS(__LAT__)) * 
    COS(RADIANS(Y(gm_coor) - __LNG__))) 
) * 6372.795 AS distance 
FROM geocoded 
HAVING distance < [RANGE IN KILOMETRES] 
+0

이 너무보기 : http://www.codeproject.com/Articles/32806/GeoLocation-by-Radius-Using-Google-Maps-and-NET –

0

나는 두 가지 옵션이 꺼져

한 손

) SQL 내부의 필터링 된보기를 사용하여 큰 원 거리 공식을 계산 생각할 수 있습니다. 이것은 가장 깨끗한 방법이지만 가져올 수는 없습니다.

2) 원하는 포인트의 위도/경도에 대해 +/- .02 내의 모든 결과를 가져옵니다. 그런 다음 큰 원거리 거리 수식 (및 자바 스크립트)을 사용하여 원하는 항목을 연마하십시오. 따라서이 경우 가져 오기에서는 몇 가지 추가 결과가 반환되지만 (대다수는 제외됨) 자바 스크립트가 나머지를 필터링합니다.

옵션 # 2는 훌륭하게 작동하지만 2 단계 접근 방식입니다.

http://www.meridianworlddata.com/Distance-Calculation.asp