【发布时间】:2011-04-11 16:09:06
【问题描述】:
这是一个让我醒了好几天的问题。到目前为止,我得出的唯一结论是 Red Bull 通常不会帮助编码人员。
我的应用程序中有一个场景,我有几份工作(1 到 50 个)。该工作有一个地址,我有一个地址的以下属性:邮政编码、纬度和经度。
我还有一张工人表,他们也有地址。虽然工作或工人是通过屏幕创建的,但我使用 Google 地图查询来确保提供的邮政编码有效并且在英国,因此所有地址都经过验证。
我正在使用调度程序控件在 y 轴上显示一些工作人员,在 x 轴上显示时间线。每个作业都有一个日期,并且只能在作业日期的调度程序上垂直移动。用户选择多个作业,它们将显示在靠近调度程序的篮子中。然后,用户可以针对工作人员拖放作业。所有这些都是手动的,所以它可以工作。
我的任务是自动执行此操作,以便用户除了验证和分配工作之外不需要做太多事情。因此,我必须自动化这个过程。
每个工人都有一个名为 WillingMaximumDistanceTravel 的属性,它是一个整数,代表英里,工人愿意为工作而旅行。
现在令人头疼的是:我有超过 1500 名工人。我有一个实用函数,它使用 Newtonsoft 的 Json Convert 来反序列化来自谷歌地图的响应流。我需要输入邮政编码 A 和 B。
我还计划向 DB 引入一个新表,以将找到的距离存储为邮政编码 A、邮政编码 B 和距离。因此,如果我发现自己再次比较相同的邮政编码,我只会从 DB 中检索结果,并且慢慢地,最终,我将不再需要打扰 Google,因为该表会非常全面。
我不能使用简单的 Haversine 公式,因为我不要求 Crow-fly 路径。这样做的痛苦是需要花费大量时间来计算。有些工人可以行驶超过 10 英里,而有些则从 15 英里到 80 英里不等。我必须从列表中选择第一份工作,并与系统中每个适用的工人一起运行它!我想知道英国邮政编码有一个模式。如果我们对英国邮政编码列表进行排序,我们能否根据字母数字模式粗略估计,我们将在哪里达到 100 英里标记、200 英里标记等等?
如果有人对代码感兴趣,请留言,我会贴上去。
【问题讨论】:
-
好的,我有这个 SQL 查询。为了在附近搜索,我在纬度和经度上加减 0.100000:
-
嗨@HassanGulzar - 这个查询运气好吗?您是否找到任何工具/文件将给定的英国邮政编码映射到最接近的英国邮政编码?
-
你好,@DanielaRodrigues!我相信我做到了,因此我可以按需调用付费版本的 Google Maps API,而不是预先计算系统中每个地址之间的距离。一旦用户进行调度,系统将仅针对所涉及的地址求解距离。已经很久了。
标签: c#-4.0 map distance postal-code