问题标签 [geodesic-sphere]
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.
python - 循环两个 Pandas 数据框并应用函数计算城市给定距离内的机场
我有两个熊猫数据框,第一个包含城市及其各自的坐标,另一个包含机场及其坐标(下面的示例)。我想计算在给定城市的一定距离(测地线)内有多少机场,并将其作为城市数据框中的一列。这是数据框的负责人(机场然后是城市):
这是要使用的简单函数:
我如何在每个城市应用这个距离函数,循环机场的数据框及其坐标?
提前致谢!
matlab - Matlab:矢量(X,Y)中的形状文件到光栅矩阵转换器
我在将带有 X、Y 坐标的德国边界的 Shape 文件转换为相同形状的光栅矩阵格式时遇到问题。我根本不知道在这种情况下使用哪种方法。如果有人帮助我为这个应用程序找到正确的思维方式,我将不胜感激。
javascript - 如何在 Cesium.js 中创建始终靠近折线的标签?
我有一种情况,我正在使用 Cesium.js 实体从一个点绘制方位线。此外,我想在实体上的这些轴承线上贴一个标签,以显示它是什么。通过将标签附加到折线实体很容易做到这一点。到目前为止,我正在做的是从参考点沿轴承创建一条“非常长”的线,并使用沿该线的中点作为标签的锚点(在 Typescript 中):
但问题是标签位于测地线(纬度/经度)坐标中,并且在用户放大和缩小方位线时不会留在屏幕上。所以我也尝试使用 pixelOffsetScaleByDistance 属性来缩放位置,但这也不能很好地工作,并且不会将标签保持在 3d 旋转下的线附近(因为 X 和 Y 缩放在技术上必须改变)。
看来我真正需要的是线端点的屏幕空间位置,以及在该中点创建实体标签的方法。有没有办法做到这一点?如果不是,那么无论用户与 Cesium 地图(例如缩放和旋转)的交互如何,确保我的标签始终靠近我的折线的最佳方法是什么?
为了让我了解我正在尝试做什么,这里有一个 Cesium 的屏幕截图,其中的标签已实现。它们在这里看起来是正确的,但这只是因为我确保缩放级别和旋转是正确的:
python - 有效计算两个数据集之间的成对haversine距离 - NumPy / Python
我想计算经纬度之间的地理距离。
我已经在 Python 中检查了这个线程Vectorizing Haversine distance calculation, 但是当我将它用于两组不同的坐标时,我得到了一个错误。
df1 的大小可以以百万计,如果有任何其他方法可以在更短的时间内计算出准确的地理距离,那将非常有帮助。
python - 几何形状Python之间的测地线距离
有一个 dfA 和一个名为 geometry 的列,具有以下几何形状:
我想计算dfB几何列的每个几何形状的最小测地距离:
我尝试按照以下步骤使用 Python shapely 和 geopandas 库进行此计算:
不幸的是,匀称距离函数计算的是欧几里得距离而不是测地线距离。
要遵循的另一种策略是使用一个函数来计算从点 A 到线 B [B1、B2、B3、...] 上的所有点的测地距离并保持最小距离。也就是说:dist_A-B = min(geodist(A, B1), geodist(A, B2), geodist(A, B3), ....)
该解决方案有效,但在计算上非常昂贵,因为我们正在谈论从数千个点对数千条线进行计算。执行此计算的任何其他更优化的方法都会有很大帮助。
javascript - THREE.JS - 展平测地线多面体
我正在研究一个基于六角瓷砖的行星生成器——想想投影到测地线球体上的 Civ5 地形。
下图是这种形状的上半部分:图
我希望将这些单独的六边形和五边形压平成一个平面,尽管是一个不规则的平面,以便在反转转换和重组椭球体之前对其应用标准、正常的地形生成技术。
我将生成两个平面,北部和南部,因为本质上不可能展平任何真正的球体。
然而,鉴于可以在二维空间中显示六角网格,我认为没有理由不能制作这样的网格——尽管沿五边形有一些变形。
在我看来,我的步骤如下。
- 将每个图块生成为它自己的 THREE.Object3D,它本身包含一个具有 7 个顶点和 6 个面的网格(或者在 12 个五边形的情况下为 6 个和 5 个)
- 将每个图块(Object3D)的世界坐标中的纬度归一化为零(省略那些会落在“南半球”的纬度 - 这将是一个单独但相同的步骤)
- 旋转每个对象,使其内部网格与世界的地平线对齐——对象和内部网格的顶点是独立的,所以这很棘手。基本上,我需要每个网格顶点的 y 值为 0,而不会扭曲形状本身。
- 沿世界的水平面重新定位每个 Object3d,以使图块具有适当的间距,并且类似于六边形网格
- 将每个图块的每个顶点缝合成一个新的几何图形,一个连续的平面
一旦我有了它,我将应用我选择实施的任何世界建筑,将每个转换后的顶点“拾取”到它的原始图块上,然后取消转换它。瞧——一个十六进制世界。
构建六边形非常容易。我正在为 THREE.js 使用Rob Scanlon 的 Hexasphere 库。我如何实现图块的确切代码将在这篇文章的底部出现。
此外,标准化每个图块的纬度位置也相当简单。只需设置它的位置并完成。
我现在面临的问题是将六边形旋转到地平线上。我尝试使用标准三角运算。瓦片的顶点相对于它的中心点,而不是世界中心。因此,如果我取离瓦片中心的 x 距离最大的顶点,我可以计算瓦片(本身本质上是一个平面)相对于地平线形成的 x 平面中的角度。
我只是将该旋转反向应用于object3D(或者我想它是内部网格?)
这一直没有奏效,我无法塑造我错过了问题的至少一个关键部分的感觉。如果我在这件事上完全不合时宜,我不会感到惊讶。
接下来是适当地间隔瓷砖,这样它们的 xz 位置将类似于 2d 坐标而不是 3d 坐标。这一点,我也不知所措。
我意识到这可能没有实际意义。我想我可以简单地在球体上就地构建我的世界,但我很难将我的思想弯曲到第三维度。
代码如下。
AppAbstract.js - 包含场景、相机等。
PlanetApp.js -
行星.js
Tile.js
google-earth-engine - 是否有一个函数可以在谷歌地球引擎中给出“ee.Image”的像素大小(不是以米为单位)?
我有一个导出到 TFRecord 的 ee.Image。我遵循本教程(https://developers.google.com/earth-engine/guides/tfrecord)。我使用这个功能:
对我的图像进行分类后,我想将其转换为 KML。为此,我需要图像角落的测地坐标。
通常,我会让他们使用ee.image.geometry().bounds()
. 但是,当将 ee.Image 转换为 tfrecord 时,补丁尺寸 (128,128) 不会均匀地划分边界框,因此沿最大 x/y 边缘的边框瓦片被丢弃。因此,我的图像的 4 个角的坐标发生了变化(左上角除外)。
因此,给定图像左上角的坐标,并知道像素数(128,128),我想恢复四个角的坐标(测地线)。 如何获得像素的测地线大小?
IE :
注意:我知道我的像素是 30 米!
任何人都可以帮忙吗?谢谢
python - Cartopy:查找大地/平面carree的距离
在各种地图投影中,我有 4 个与 cartopy geoetics 相关的问题。这是我的代码:
下面是两个例子,1) Robinson 投影,2) Mollweide 投影。
问题
- 红色曲线是否总是显示大圆路线,即任何地图投影上的最短路径?
- 我怎样才能得到红色大地和蓝色平面carree的距离?如果是这样,那么对于任何地图投影,红色曲线的距离都应该相同,对吗?
- 在我的第二张图片上,为什么红色曲线不稳定?应该是这样吗?
- 蓝色曲线是否总是在地图投影上显示直接路径?就好像你在一张纸上有一张地图,并用尺子画了一条从 A 点到 B 点的路径。如果是这样,那么对于不同的地图投影,蓝色曲线的距离应该是不同的,对吗?