4

考虑到纬度和经度,我一直在寻找一种方法来了解距给定中心的某个点位于哪个季度。

西北东北
  ……|……
  ..X...|......
  ……|……
  -  -  - X -  -  - 
  ……|……
  ……|……
  ……|……
西南证券交易所
4

2 回答 2

0

以度为单位计算从中心到点的方位(搜索航空公式主页)。那么如果方位在 [0,90) 范围内:NE,
[90,180) -> SE。其他两个方向相同。[180,270) -> 西南 [270, 360) -> 西北

您可以通过以下方式简化检查

double bearing = bearing(latCenter, lonCenter, lat, lon);
int index = bearing / 90;
String[] quadrants = new String[] {"NE", "SE", "SW", NW"};

String result = quadrant[index];
于 2013-08-09T10:47:43.670 回答
0

忽略两极和反子午线(经度 = +/- 180),这很简单:

if(lat > centerLat)
  if(long < centerLong)
    NW
  if(long > centerLong
    NE

if(lat < centerLat)
  if(long < centerLong)
    SW
  if(long > centerLong
    SE

如果您需要它在反子午线附近工作,请将您的整个系统向东平移,方法是将所有经度添加 180 度。

于 2013-08-11T13:53:28.483 回答