确定物理地址是高速公路的东侧还是西侧(例如 I-95)- 自然灾害防备

Determine if a physical address is EAST or WEST of a highway (ex. I-95) - Natural Disaster Preparedness

由于飓风(和其他灾难)疏散计划,以及通常 work/are 的计划,我正在尝试开发一个涉及地理定位地址与疏散区的解决方案。

通常,例如在佐治亚州,员工会被告知居住在 I-95 州际公路东部的每个人都必须撤离(根据州政府的指导)。有时情况真的很糟糕,i-95 州际公路以东的所有人以及 i-95 州际公路以西的人都必须撤离。就其本身而言,强度并不重要,就好像它在 95 号以西一样,这是一场非常可怕的风暴,正向我们袭来,每个非必要的人都必须撤离,例如,与 I-95 的距离并不重要重要的是方向

我已经在 Google 地图文档、Google 搜索以及 Whosebug 上寻找答案,但我什至没有找到第一个能为我指明正确方向的面包屑.

非常感谢任何输入和花费的时间。如果没有,希望大家度过愉快的一周!

===

对于造成的混乱,我深表歉意。正如@Fraser 指出的那样,地球上的每个点都是 I-95 的 east/west,这是非常正确的,在我匆忙中我没有考虑到这一点。话虽如此,它必须有某种边界,比如 100 英里 EAST 或 WEST 就足以满足这个用例。

这是一个非常简单的解决方案,基本上你需要,

  1. 定义I-95的要点,

例如

北迈阿密 美国佛罗里达州 25.886999, -80.215033

棕榈滩县 美国佛罗里达州 26.616067, -80.077996

...

巴尔米拉 美国缅因州 04965 44.845670, -69.339113

然后你将存储这些点。在数据库中或仅在代码中,例如一个非常粗略的约。 I-95 路线的一部分是...

const I95 = [ 
    [ 25.78364,-80.20397 ],
    [ 25.87672,-80.20764 ],
    [ 25.92758,-80.20947 ],
    [ 25.96093,-80.16689 ],
    [ 26.07565,-80.16895 ],
    [ 26.20202,-80.14286 ],
    [ 26.33871,-80.11540 ],
    [ 26.41732,-80.08916 ],
    [ 26.69125,-80.07053 ],
    [ 26.80963,-80.09800 ],
    [ 26.89172,-80.13457 ],
    [ 27.05956,-80.24473 ],
    [ 27.13447,-80.35813 ],
    [ 27.26235,-80.42439 ],
    [ 27.36947,-80.41054 ],
    [ 27.39591,-80.39414 ],
    [ 27.52203,-80.45045 ],
    [ 27.65044,-80.52553 ],
    [ 27.79038,-80.55236 ],
    [ 28.17599,-80.71639 ],
    [ 29.07689,-81.03222 ],
    [ 29.42123,-81.16468 ],
    [ 30.14514,-81.53397 ],
    [ 30.35867,-81.66032 ],
    [ 30.68282,-81.66581 ],
    [ 30.96873,-81.68229 ],
    [ 31.31721,-81.46740 ],
    [ 31.86616,-81.35713 ],
    [ 32.39924,-81.00667 ],
    [ 32.97139,-80.67807 ],
    [ 33.55893,-80.39473 ],
    [ 34.24241,-79.78304 ],
    [ 34.63655,-79.02817 ],
    [ 35.01769,-78.82628 ],
    [ 35.69044,-78.06967 ],
    [ 36.17135,-77.78567 ],
    [ 36.78059,-77.47569 ],
    [ 37.44699,-77.34057 ],
    [ 38.47267,-77.39426 ],
    [ 39.59907,-75.87815 ],
    [ 40.40772,-74.46824 ],
    [ 41.26384,-73.08396 ],
    [ 41.47261,-71.75990 ],
    [ 42.05443,-71.23805 ],
    [ 42.50737,-71.09643 ],
    [ 43.11185,-70.73388 ],
    [ 44.72099,-69.49369 ],
    [ 44.83018,-68.74662 ],
    [ 46.12428,-68.05448 ]
];
  1. 对您的地址进行地理编码以获得纬度和经度。

例如艾伦赫斯特。格鲁吉亚 - [ 31.786663, -81.609701 ]

  1. 对于给定的地理编码位置,您需要根据匹配的 I-95 坐标确定最近的纬度。在我的例子中是 [ 31.86616,-81.35713 ] 然后您只需查看地理编码经度是否大于(东)或小于(西)该纬度的 I-95 经度。

例如因为 -81.609701 小于 -81.35713 Allenhurst。佐治亚州位于 I-95 州际公路以西 31.86616 北部。

如前所述,您可能希望测试有一些“上限”,因为如果旅行足够远,地球上的每个点都在 I-95 的东边和西边。因为如果你从任何一点向东或向西行驶,你都会回到同一点:)

您也可以在像 PostGIS 这样的空间数据库中执行所有这些操作,MySQL 具有空间类型等 - 在这种情况下,只需查询数据库以获得您的“东方”, “西方”结果,无需实施您自己的解决方案。

可能只是定义两个覆盖您感兴趣的“东”和“西”位置的“区域”或“形状”。这样就可以简单地询问“这是[纬度,经度] 'inside'(在范围内)东方或西方'shape'"