基于lat/lon和n坐标计算并去除重叠区域

2024-04-16 15:48:35 发布

您现在位置:Python中文网/ 问答频道 /正文

上下文: 我正试图构造一系列坐标用于地理定位。我有A组,这是一系列的坐标,我要瞄准。我的系统允许的最小目标半径是1公里,但我想把目标限制在350米。a组有几千个坐标

我的解决方案: 为了解决这个问题,我的解决方案是在a组的每个坐标周围创建一个网格/多边形(B组),这将是一个禁区。通过这种方式,我可以人为地将A组限制在350米的区域内,方法是创建一个排除区域的多边形(从中心lat/lon开始任意半径)。你知道吗

问题: 在a组中只有一个坐标的情况下,这是很容易的。如果我有几百个或几千个坐标,我不想在B组中创建一个与a组中的包含区域重叠的排除坐标,因为它会无意中将350米减少到更小的数字,或者将其全部删除。你知道吗

如何从数学上确定要使用的B组坐标系,从而使A组中最大可能的坐标数具有350米半径的可能性最大化?你知道吗

警告: 我的数学背景不超过基本的微积分,我将用JavaScript或Python编程解决方案

我对这种数学很不熟悉。到目前为止,我的解决方案是创建一系列4个坐标,每个坐标距中心点1.35KM,中心点的半径也为1KM。我认为中心点的面积是350米。我用下面的代码来计算

 var pi = Math.PI;
 var meters = (1 / ((2 * pi / 360) * earth)) / 1000;
 var cos = Math.cos;

 var testLat = 40.704112;
 var testLon = -74.012133;

 var newLat = testLat + (meters*1350);
 var newLon = testLon + (meters*1350)/cos(testLat*(pi/180));```

The expected result would be, for a series of input coordinates (Group A), an output group of coordinates (Group B) that maximizes the number of Group A coordinates with a 350M remaining radius

Tags: of区域目标vargrouppi半径数学