我有一个具有经度和纬度领域的实体。
现在我有一个地址,我知道这个地址的经度和纬度,我想3英里检索记录。
如何使用FetchXML办呢?
我有一个具有经度和纬度领域的实体。
现在我有一个地址,我知道这个地址的经度和纬度,我想3英里检索记录。
如何使用FetchXML办呢?
你将不能够直接通过FetchXml这样做,因为地理编码不作为特征提供。
这意味着你需要开始滚动手工的东西,这将是不容易的。 这个网站有你需要做的(即使语言是什么你很可能与CRM使用不同的)什么一个很好的概述。
一种选项可放松您的要求,只需使用FetchXml寻找与经度记录+/- 1.5英里,纬度+/- 1.5英里(这当然查询状如方形而不是半径的区域)。
如果您需要更严格的,你可以尝试重写下面的MySQL(即不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]
我能想到的副手两个选项
1)使用SQL内部的过滤视图和计算大圆距离计算公式。 这是最彻底的方法,但不取。
2)获取所有的结果在+/- 0.02的期望点的纬度/经度。 然后用大圆距离公式(和JavaScript)来磨练你想要的物品。 因此,在这种情况下,获取是否会返回一些额外的结果(但将排除大部分),然后用JavaScript过滤剩余。
方案2的伟大工程,但它是一个2个回合方法。
http://www.meridianworlddata.com/Distance-Calculation.asp