2010-03-29 193 views
1

我想知道是否有可能通过经度和纬度在一个点的X半径内找到所有点?邮政编码半径搜索

那么,如果我提供的纬度/经度为-76.0000,38.0000,是否可以简单地找到所有可能的坐标(例如)10英里半径范围内?

我知道有一种方法可以计算两点之间的距离,这就是为什么我不清楚这是否可能。因为,您似乎需要知道中心坐标(本例中为-76和38)以及每个其他点的坐标,以确定它是否落在指定半径内。是对的吗?

回答

0

根据精度的不同,某一距离内的点的数据集可能会非常大,甚至无限(不可能)。在具有正半径的圆的给定区域中,将具有无限多点。因此,确定一个点是否落在一个圆内是微不足道的,但是要枚举所有点是不可能的。

如果你设置了一个固定的精度(比如一个数字),你可以遍历所有可能的纬度和经度组合,并执行距离测试。

+0

确定...感谢澄清! – TwixxyKit 2010-03-29 08:14:47

-1

凯文是正确的。没有理由计算半径中每个可能的坐标对。

如果您从中心点pC = Point(-76.0000,38.0000)开始并且正在测试以确定任意点pA = Point(Ax,Ay)是否在10英里半径内......请使用毕达哥拉斯定理:

xDist = abs(pCx - Ax) 
yDist = abs (pCy - Ay) 
r^2 = (xDist)^2 + (yDist)^2 

的合理近似值是只查询点中

pAx >= (-76.0000 - 10.0000) && pAx <= (-76.0000 + 10.0000) 
pAy >= (38.0000 - 10.0000) && pAy <= (38.0000 + 10.0000) 

然后执行上述更密集的计算。

+0

-1:计算非常混乱,@David正在从度数增加(或减去)数英里。 – 2010-03-29 07:59:46

1

@大卫的策略是正确的,他的执行是严重的缺陷。我建议在进行计算之前,将您的lat,long对变换为UTM坐标,并在距离而不是角度测量中工作。如果您对Universal Transverse Mercator不熟悉,请点击Google或Wikipedia。

我认为你的观点(-76,38)在UTM 37C 472995(Easting)1564346(Northing)。所以你想要从那一点开始计算距离。你会发现使用UTM更容易以米为单位工作,所以你的距离(如果你使用的是法定英里长度为5280英尺)为16040米。顺便说一句,(-76,38)远远超出了美国的联邦 - 美国邮政局是否为南极洲定义了邮政编码?

1

如果你接受地球是一个完美的球体,你可以通过

x = R.cos(Lat).cos(Long) 
y = R.cos(Lat).sin(Long) 
z = R.sin(Lat) 

现在获得一个点的空间坐标,取两分,并计算它们与地球的中心形成的角度(使用点积):

cos(Phi) = (x'.x" + y'.y" + z'.z")/R² 

(R的值得到简化)。

在你的情况下,角距离Phi等于2Pi.D/R。 (R = 6 378.1公里)。

的点P”是P的地面的距离(d)”时的点积是更大比COS(PHI)

小心内:。所有的角度必须是弧度