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