CesiumJS - 两点之间的距离
CesiumJS - Distance Between Two Points
我的目标是计算两个铯实体之间的距离(以千米为单位)。作为奖励,我最终希望能够以像素为单位测量它们的距离。
我有一堆 KML 格式的地标,如下所示:
<Placemark>
<name>Place</name>
<Point><coordinates>48.655,-31.175</coordinates></Point>
<styleUrl>#style</styleUrl>
<ExtendedData>
...
</ExtendedData>
</Placemark>
我像这样将它们导入 Cesium:
viewer.dataSources.add(Cesium.KmlDataSource.load('./data.kml', options)).then(function(dataSource) {
var entities = dataSource.entities._entities._array;
我试图为我关心的实体创建新的 Cartesian3 对象,但是我从实体对象获得的 x、y 和 z 值有几十万。我的 KML 中的经纬度在实体对象中找不到。
如果我创建 Cartesian3 对象并像这样计算距离:
var distance = Cesium.Cartesian3.distance(firstPoint, secondPoint);
它 returns 数以百万计。我以这种方式评估了多个点之间的距离,当我将返回的这些值与在线计算器的结果进行比较时,returns 以公里为单位的实际值,距离的差异不是线性的(返回的一些距离Cesium 是实际距离的 900 倍,有的是实际距离的 700 倍。
我希望这足以获得帮助。我不确定从哪里开始解决这个问题。任何帮助,将不胜感激。谢谢。
这里发生了几件事。 Cesium.Cartesian3
class 表示米,因此除以 1000 得到公里是正确的,但这不是全部。 Cartesian3s 是 3D 地球上的位置,如果您计算一个简单的 Cartesian.distance
在该地球相对两侧的两个位置之间,您将获得笛卡尔线性距离,如穿过地球的中间从一个到另一个,而不是绕地球表面移动到另一边。
要获得您真正想要的距离——沿地球表面曲率的直线的距离——请在 GIS SE 上查看 Cesium JS Line Length 的答案。
我的目标是计算两个铯实体之间的距离(以千米为单位)。作为奖励,我最终希望能够以像素为单位测量它们的距离。
我有一堆 KML 格式的地标,如下所示:
<Placemark>
<name>Place</name>
<Point><coordinates>48.655,-31.175</coordinates></Point>
<styleUrl>#style</styleUrl>
<ExtendedData>
...
</ExtendedData>
</Placemark>
我像这样将它们导入 Cesium:
viewer.dataSources.add(Cesium.KmlDataSource.load('./data.kml', options)).then(function(dataSource) {
var entities = dataSource.entities._entities._array;
我试图为我关心的实体创建新的 Cartesian3 对象,但是我从实体对象获得的 x、y 和 z 值有几十万。我的 KML 中的经纬度在实体对象中找不到。
如果我创建 Cartesian3 对象并像这样计算距离:
var distance = Cesium.Cartesian3.distance(firstPoint, secondPoint);
它 returns 数以百万计。我以这种方式评估了多个点之间的距离,当我将返回的这些值与在线计算器的结果进行比较时,returns 以公里为单位的实际值,距离的差异不是线性的(返回的一些距离Cesium 是实际距离的 900 倍,有的是实际距离的 700 倍。
我希望这足以获得帮助。我不确定从哪里开始解决这个问题。任何帮助,将不胜感激。谢谢。
这里发生了几件事。 Cesium.Cartesian3
class 表示米,因此除以 1000 得到公里是正确的,但这不是全部。 Cartesian3s 是 3D 地球上的位置,如果您计算一个简单的 Cartesian.distance
在该地球相对两侧的两个位置之间,您将获得笛卡尔线性距离,如穿过地球的中间从一个到另一个,而不是绕地球表面移动到另一边。
要获得您真正想要的距离——沿地球表面曲率的直线的距离——请在 GIS SE 上查看 Cesium JS Line Length 的答案。