问题标签 [great-circle]
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.
r - 显示昼夜区域的世界地图
我正在尝试将白天/夜间线添加到世界地图ggplot
中,以指示白天和黑夜区域;像这样的东西:
计划是在 24 小时周期内为我的地图制作动画,如下所示:
上面的动画是使用正弦波实现的,我知道这是完全不准确的。我知道这geosphere::gcIntermediate
可以让我画出大圆线,如下所示:
虽然我不确定是否可以在一年中的不同时间点绘制所需的线条,例如在 3 月,它看起来像这样:
我没有找到解决方案,但我猜我不知道要搜索的关键字,因为这超出了我的知识范围。我认为答案可能在日出方程的某个地方,但我不知道如何应用这些来找到解决方案,也不知道如何在一年中改变这些参数。这个网站(用于上面的情节)似乎也很有用,但我还不确定如何!
r - R:大数据的Distm?计算两个矩阵之间的最小距离
我有两个矩阵,一个是 200K 行长,另一个是 20K。对于第一个矩阵中的每一行(这是一个点),我试图找到第二个矩阵中的哪一行(也是一个点)最接近第一个矩阵中的点。这是我在示例数据集上尝试的第一种方法:
但是,Error: cannot allocate vector of size 30.1 Gb
当我使用该distm
功能时出现错误。
关于这个主题有几个帖子:
这个bigmemory
用于计算相同数据帧中点之间的距离,但我不确定如何调整它来计算两个不同矩阵中点之间的距离...... https://stevemosher.wordpress.com/2012/04/12 /nick-stokes-distance-code-now-with-big-memory/
这也适用于计算相同矩阵中点之间的距离矩阵...用于重复距离矩阵计算和超大距离矩阵分块的高效(内存)函数
这与我想要做的几乎相同,但他们实际上并没有提出适用于大数据的解决方案:R: distm with Big Memory我尝试了这种方法,它使用bigmemory
,但出现Error in CreateFileBackedBigMatrix(as.character(backingfile), as.character(backingpath), :
Problem creating filebacked matrix.
错误,我认为是因为数据框太大。
有没有人想出一个很好的解决这个问题的方法?我对其他包装创意持开放态度!
更新了修复问题的代码
python - 绘制方程来表示球体的线框?(大圆圈)
我找到了其他人的示例,该示例展示了如何在 python 中绘制球体,但我很好奇是否有一个方程可以表示沿球体的各个纵向线。
示例:Python/matplotlib:绘制一个 3d 立方体、一个球体和一个向量?
我想要的是一个沿着球体运行并能够绘制它们的大圆方程。
类似于 Mathematica 中的这篇文章... https://mathematica.stackexchange.com/questions/16413/how-to-draw-a-great-circle-on-a-sphere
d3.js - 使用 D3.js、Leaflet 或 Mapbox 用墨卡托地图包裹大圆圈
简而言之,问题是:如何使用Google Maps API 以外的其他工具在墨卡托中准确地投影一个环绕的大圆半径?
问题很长:
所以我有一个难题。我运行了一个地图应用程序,它使用 Google Maps API 将巨大的圆圈投影到墨卡托地图上——它试图显示非常大、精确的半径,例如,大约 13,000 公里。但我不想再使用 Google Maps API,因为 Google 的新定价方案太疯狂了。因此,我试图将代码转换为 Leaflet、Mapbox 或任何非 Google 的东西,没有任何东西可以正确处理这些圆圈。
以下是 Google Maps API 如何处理以非洲北部为中心、半径为 13,000 公里的测地圆:
这在直觉上看起来很奇怪,但却是正确的。波浪形图案是由环绕地球的圆圈引起的。
D3.js 可以在正交投影中正确渲染它。所以这是在 D3.js 中使用 d3.geo.circle() 在地球上渲染的同一个圆圈,旋转两次:
这使得 2D-“波浪”模式更有意义,对吧?对。我喜欢它。完全适用于我的科学传播等目的。
但是当我将代码转换为 Leaflet 时,它根本不起作用。为什么?因为 Leaflet 的 circle 类根本就不是一个大圆。相反,它似乎只是一个随着纬度有点扭曲的椭圆,但不是以真正的测地线方式。相同的圆,相同的半径,相同的原点,我们得到:
大错特错,大错特错!除了看起来完全不切实际之外,这是不正确的——澳大利亚不会在这样的圆形半径内。这对我的申请很重要!这是不行的。
好吧,我想,也许诀窍就是尝试实现我自己的大圆圈类。我采用的方法是将圆点作为距原点的距离进行迭代,但是使用这个非常有用的网站上的“目标点给定距离和距起点的方位”计算来计算距离,然后将它们投影为多边形传单。这是我得到的结果:
这看起来很糟糕,但实际上更接近准确!我们得到了波浪效应,这是正确的。像我一样,你可能会问,“这里到底发生了什么?” 所以我做了一个版本,让我可以突出每个迭代点:
你可以很清楚地看到它正确地渲染了圆,但是多边形错误地加入了它。它应该做的(人们可能会天真地认为)是将波浪形包裹在墨卡托地图投影的多个实例周围,而不是天真地将它们连接在顶部,而是将它们连接成球形。就像这个粗糙的 Photoshop 渲染一样:
然后多边形将以某种方式“关闭”,表明多边形上方的所有内容也都包含在其中。
不过,我不知道如何在 Leaflet 中实现这样的东西。或其他任何事情。考虑到缩放状态,也许我必须自己处理原始 SVG?或者其他的东西?在我进入那些危险的杂草之前,我想我会征求任何建议/想法/等。也许有一些更明显的方法。
哦,我尝试了另一件事:使用相同的 d3.geo.circle 构造函数,该构造函数在墨卡托/传单投影的正交投影中效果很好。它产生的结果或多或少与我的“天真”传单大圆实现相同:
我猜这是有希望的。但是,如果您移动原点的经度,D3.js 版本会以一种更奇怪的方式包装(D3.js 为红色,我的 Leaflet 类为青绿色):
如果 D3.js 中有某种方法可以改变它的工作方式,我不会感到惊讶,但我还没有完全进入 D3.js 的兔子洞。我希望 D3.js 能让这个“更容易”(因为它是比 Leaflet 更完整的制图工具),所以我会继续研究这个。
我还没有尝试在 Mapbox-gl 中执行此操作(我想这是“尝试”列表中的下一个)。
反正。谢谢阅读。重申这个问题:如何使用Google Maps API 以外的其他工具在墨卡托中准确地投影一个环绕的大圆半径?
r - 计算沿动物运动路径的点之间的距离和时间
当在车站检测到个体动物时,我有一个大型数据集(> 900 万行)时间和位置。我想计算每只动物在车站之间旅行时沿每条动物路径的每个车站之间的距离,以及在车站之间旅行的时间。然后我想总结一下路径所有部分的总距离和时间。
对于该数据集中的每个个体,数据在每次在固定点检测到时都会进行组织。如果个人长时间连续处于静止点,则该时间段有多个记录(每条记录相隔约 30 秒)。
我可以总结下面的数据,以获得一个人每次在车站时的 1 行(见下文)。但是,当一个人多次前往同一站点时,输出无法识别。
例如
一种对数据进行分组的方法,以便将多次访问同一站点(中间有其他站点的行程)识别为行程的单独“行程”。
然后,我需要计算每个站之间的大圆距离,以及 timeEnd(第 1 站)和 timeStart(第 2 站)之间的时间差。
gps - 根据预定间隔在两个 GPS 点之间插入附加点
我的 Erlang 模块加载一个 GPX 文件并为文件中的每组纬度/经度坐标执行特定的功能。我想通过在现有点之间填充更多 GPS 点来提高 GPX 文件的分辨率。例如,GPX 文件可能每 100 英尺有一个点,甚至是随机间隔的点,我可能希望每 10 英尺有一个一致的点。我不想实际修改 GPX 文件;我只希望我的脚本在运行时计算这些中点。
我不关心插值速度或其他任何事情;只有常规的 GPS 坐标。
正如您在下面的函数中看到的,我正在使用 egpx 模块从 GPX 文件中提取纬度/经度点。我还发现了 geolib 等可以执行地理计算的模块,但是我在这方面的知识有限,无法独自解决这个问题。
在 Erlang 中,如何根据预定间隔(例如 10 英尺)在两个坐标之间插入更多 GPS 坐标?
编辑:我在 Stack Overflow 上发现了这个问题,这可能是相关的,但我仍然需要帮助理解和应用解决方案:如何在两个已知点之间生成坐标
r - 在R中计算大圆距离
过去,在 MATLAB 中,我使用大圆距离计算计算了给定其纬度和经度的点的索引。我会和你分享我的代码。我对 R 中的等效函数会是什么样子或者 on 是否存在感到困惑?我找到了一些显示两点之间距离的代码,但没有一个代码可以帮助我索引我的数据。
这是我的 MATLAB 代码!
“dist”计算是这里的派对作品。您应该能够使用提供的代码来重现结果并查看我希望在 R 中实现的目标。
同样,在 R 中可能会给出一个可比较的函数,我有以下内容: 纬度点网格 经度点网格 两个点,以度为单位,表示我所在位置的纬度和经度。
geometry - 如何在 A 上的特定点创建与另一个大圆弧 (A) 垂直的大圆弧 (B)?
假设我在(经度,纬度)中只有两个顶点来制作大圆弧A。然后我想在A上的任何给定点找到一条垂直的弧来组成大圆弧B,然后在B上找到点距离 A 距离 x。我如何找到这些点?