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