问题标签 [geographic-distance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
275 浏览

sql - 在 SQL 中有效地查找 2 lat/longs 之间的距离

我正在处理数十亿行数据,每一行都有一个关联的起始纬度/经度和结束纬度/经度。我需要计算每个起点/终点之间的距离——但这需要很长时间。我真的需要让我正在做的事情更有效率。

目前我使用一个函数(如下)来计算点之间的斜边。有什么方法可以提高效率吗?我应该说我已经尝试将纬度/经度转换为空间地理并使用 STDistance() 函数中内置的 SQL(未编入索引),但这甚至更慢。

任何帮助将非常感激。我希望有某种方法可以加快该功能,即使它会稍微降低精度(最近 100m 可能还可以)。提前致谢!

0 投票
1 回答
239 浏览

coordinate-systems - 余弦球面定律使用什么坐标系?

余弦球面定律是用于计算地球上两点之间距离的公式。我一直在寻找讨论该公式中使用的坐标系的参考资料,但没有人讨论过该公式使用的坐标系。谁能帮帮我???

0 投票
1 回答
75 浏览

mysql - 组合 SQL SUM 子句

我有一个脚本,需要对同一数据子集执行四个相当大的 MySQL 查询。有没有办法将它们组合成一个查询?

这是查询的样子:

正如您可能知道的那样,这是一个经纬度点的地理查询。查询所做的是首先创建总表的一个简单方形子集(FirstCut ),然后在其上运行三角函数以获得一个圆形区域。

据我所知,查询速度慢的部分是FirstCut,因为它正在绘制的表有大约 280 万行。FirstCut,不过,在这种情况下,只有大约 27,922 行,因此相比之下,三角部分的速度非常快。

问题是,我必须运行其中的一些。但是,它们都可以使用相同的FirstCut,因为它们是以同一区域为中心的不同半径。我希望能够通过一个查询而不是四个查询来完成这项工作。

这是第二个查询的样子:

正如您所看到的,它与另一个完全相同,只是最后一个 WHERE 子句略有不同——条件只是一个较小的半径(48.57 而不是 79.85)。

如何以有效的方式将这两个查询组合成一个查询?

我试过使用 CASE 子句——这是最好的方法吗?

0 投票
0 回答
96 浏览

mysql - MySQL根据lat,lng获取一定距离内的所有地方

我有一张地方表,里面有名字、纬度和经度。数据库中有重复(例如“pub llc, 40.75111,-60.4211”和“pub llc, 40.75112,-60.4211”)。这里名称相同,但距离坐标略有偏差。对于表中的每一行,我想搜索潜在的冲突并显示它们。这将基于两个同名的邻近地点之间的距离(例如 100 英尺)。我有以下距离公式:

谁能帮我生成这个查询?

0 投票
1 回答
1926 浏览

r - 坐标的模糊匹配

我有两个数据集,其中一个包含人们地址的坐标(addresses),另一个包含某些位置的降雨坐标(rain)。坐标是标准纬度和经度。我想将这两组合并在一起,通过将每个地址与最近的降雨位置进行匹配,使用两个坐标之间的球面距离来确定“最近的”。天真的方法是计算每个地址和每个降雨位置之间的所有成对距离并保持最小值,但由于我的数据集非常大,我想知道是否有另一种计算有效的方法来做到这一点。

我正在使用 geosphere 包来计算距离。

这是数据的一个子集。

我在一组中有 300,000 个独特的坐标对,在另一组中有超过 80,000 个。我唯一的想法是使用两个 for 循环,一个遍历地址坐标对列表,然后另一个嵌套一个来计算从每个地址到所有降雨位置的距离,然后保持最小。

0 投票
1 回答
108 浏览

r - 如何根据最短距离为经纬度观测值命名

我有两个数据框:df1包含经纬度坐标的观察;df2具有经纬度坐标的名称。我想创建一个新变量df1$name,对于每个观察,它的名称与df2该观察的距离最短。

一些示例数据df1

一些示例数据df2

基于这个答案,我用包创建了一个距离矩阵geosphere

但是如何为每个观察选择最短距离并将相应的名称分配给df1$name

0 投票
1 回答
119 浏览

r - 如何为经纬度观测分配多个名称

我有两个数据框:df1包含经纬度坐标的观察;df2具有经纬度坐标的名称。我想创建一个新变量df1$names,对于每个观察,其名称df2都在与该观察的指定距离内。

一些示例数据df1

一些示例数据df2

使用包创建距离矩阵geosphere

结果距离以米为单位(至少我认为是,否则距离矩阵有问题)。

指定的距离用 计算(df1$cat)^2)*1000。我试过df1$names <- df2$latlonloc[apply(distmat, 1, which(distmat < ((df1$cat)^2)*1000 ))]了,但收到一条错误消息:

这可能不是正确的方法,但我需要的是:

df1$names <- #code or function which gives me a string of names which are within a specified distance of the observation

如何创建一个名称在指定观察距离内的字符串?

0 投票
2 回答
8376 浏览

r - 在地图中绘制具有定义距离半径的圆

我能够绘制地图并为特定点添加标题:

我还可以绘制一个以该点为中心的圆圈:

但是,我想控制圆圈的大小。特别是,我想在 data.frame、matrix 或 list 中包含的多个位置周围绘制一个半径为 100 英里的圆。

0 投票
1 回答
276 浏览

c# - 从中心纬度/经度计算平方 X 英里的 SW 和 NE 纬度/经度

我正在从 Noaa API 中获取数据。

与 Noaa API 交谈时,您可以获得一个正方形内的气象站列表。他们称它们为“范围”,它们是 2 组纬度/经度。左下方 lat/long 和右上方 lat/long

如此处详述:

http://www.ncdc.noaa.gov/cdo-web/webservices/v2#stations

我已经获得了美国一些城市的纬度/经度列表,我正在尝试找出放置盒子的最佳方法。

所以,我的第一个猜测是取中央纬度/经度,计算向西 75 英里的纬度/经度,然后计算该点以南 75 英里处的纬度/经度。

理想情况下,我希望将此作为 ac# 函数。

请问有人对最好的编码方式有任何想法吗?

谢谢

0 投票
1 回答
97 浏览

sql - 如果它们是文本字段,如何根据地理选择 SQL Server 2012 中的点

好吧,我有点卡在这个数据库上,我正在尝试为它创建一个“附近”页面。

我所拥有的(不幸的是)是一个lat和一个lonnvarchar。我无法转换它们,因为它们在其他地方需要作为文本。

我想以地图点为中心,在一英里左右的地方放一些点。

我可以以某种方式将这 2 个文本字段加入一个坐标列进行比较STDistance吗?

做这样的事情..

或者你能推荐一个更好的方法吗?

提前致谢!