如果我在Salesforce中拥有所有潜在客户的纬度/经度数据,是否有办法编写查询以对其进行分组,或者列出距离加利福尼亚州旧金山10英里范围内的所有潜在客户?
[编辑:澄清] 我有成千上万的线索,包括完整的地址和长/拉特。 我想建立一个关于这些线索的查询,它将为我提供加利福尼亚州旧金山附近的所有线索。这意味着在salesforce中进行GIS类型的工作。
我当然可以专门针对城市或邮政编码或区号进行过滤,但在尝试汇总整个都会区时会出现一些问题。
答案 0 :(得分:2)
是。您需要使用工具/服务来反转GeoCode。在过去,我使用过Maporamas服务,但这是相当昂贵的,那是在谷歌地图和虚拟地球存在之前,所以我相信现在有更便宜(免费)的东西....谷歌搜索我发现this和this
修改强>
确定从我的理解你正在尝试计算2个纬度/长点之间的距离。我首先要打折那些在你外面(比方说)10英里的地方。因此,从您的中心点开始,您将需要获得10英里,东,西,南和北的坐标。为此,您需要使用Great-circle distance公式。
从那时起,如果您希望进一步打破这些数据,那么您需要销售人员数据,然后您需要按距离中心点的距离订购点数。为此,您需要使用Haversine formula
我不确定你的语言偏好是什么,所以我只是从SQL(主要)和C#中包含一些例子
Haversine Formula in C# and in SQL
答案 1 :(得分:0)
使用GeoHash.org(作为Web服务或实现算法)。它会将您的长条形坐标变为与附近地方类似的形式。例如,A可能具有类似“akusDf3af”的散列,而B可能具有类似“akusDf3b2”的散列(如果它们在附近)。然后执行SOQL查询,查找以与已知位置相同的n个字符开头的位置。您的n将确定查找的半径。
答案 2 :(得分:0)
这些是一些非常出色的技术解决方案,可以提供非常精确的答案,但需要考虑两件事:
通过邮政编码查询或其他不允许存在间隙或重叠的规则,所有权计算似乎最佳。否则,您将有两个(或更多)销售人员争夺与他们两个接近的潜在客户,并忽略远离他们两个的潜在客户。
因此,如果您使用上述地理计算来分配所有权,只需确认系统将泄漏并创建业务规则以适应这种情况。但是,定义区域的简单邮政查询(作为salesforce自己的territory management功能确实)可能会更好。
我建议我们试图解决的地理空间问题不是谁拥有哪个领导者。相反,考虑到你拥有的所有潜在客户,这些都在附近?
同样,报告中的地理空间数据可能不是最佳答案。 50公里外的一条线路,但沿着一条主要道路,比另一条距离山脉或湖泊另一侧50公里的距离更有趣。或者靠近其他线索的线索比线索本身更有趣。
报告无法显示此信息,但地图可以显示。
Salesforce有一些很好的Google地图集成示例。而不是一个名为“我的附近潜在客户”的列式报告,为什么不是一个visualforce页面,里面有谷歌地图?您为用户提供的信息远远多于柱状报告。他们可能更喜欢它,并且比试图计算上面的一些方程式更容易实现。
另一种可能(或可能不)适合当前问题的观点。
答案 3 :(得分:0)
这篇文章真的很老了,但却出现在Google搜索结果的顶部,所以我想我会发布一些信息。
2个不错的映射工具是batchgeo.com和geocod.io。 Geocod.io甚至可以从地址中为您提供纬度和长坐标。
如果您只需要一次性计算,则可以使用Excel。使用lat和long导出所有潜在客户。然后转到Google地图,获取您想要测量的城市中心的纬度和长度十进制度数。
然后在excel中使用此公式来计算以英里为单位的坐标之间的距离。 Lat1dd和Long1dd是一个点的坐标,lat2dd和long2dd是另一个点的坐标点。
=3963*ACOS(COS(RADIANS(90-lat1dd))*COS(RADIANS(90-lat2dd))+SIN(RADIANS(90-lat1dd))*SIN(RADIANS(90-lat2dd))*COS(RADIANS(long1dd-long2dd)))
运行之后,只需将结果从最小值排序到最大值,即可获得最接近的结果。
我还没有完成下一部分,但从概念上说它应该可行。我们有一个字段列出了每个帐户所在的主要市场。例如,芝加哥IL。我将构建一个触发器或公式字段,基本上表示IF(Market =" Chicago IL")然后使用X和Y作为lat和long。这些将被硬编码为该特定市场的市中心。然后,查询将针对来自市中心的每个帐户的纬度和长度运行以计算距离。
如果您想将市场分成不同的区域,您可以调整您的公式,以便使用<和>在纬度和长场上。小于X但大于Y的所有东西都在A区,等等。
希望这有助于某人。