- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Google 地球桌面应用程序显示一条线的 map 长度
和地面长度
。
在 Google 地球插件中,我想做类似的事情,即我希望在考虑地形的情况下确定镶嵌 KmlLineString
的 ground length
。
我可以这样做吗?如果可以,怎么做?
最佳答案
如果你使用 earth-api-utility-library 你当然可以很容易地得到长度.使用它你可以做到。
var length = (new geo.Path(linestring)).distance();
虽然此方法不考虑地形 - 但在尝试使用海拔梯度计算距离之前,您应该注意一些注意事项。
首先,在大多数情况下,地形距离和直接距离之间的差异很小。事实上,许多优质 GPS 接收器在计算距离时根本不考虑海拔的任何变化。
其次,地面高度是最不可靠的数据之一。使用基于高程的梯度来确定距离通常会在距离测量中产生更大的不准确性,而不是使用简单的“如乌鸦苍蝇”测量。
考虑到这一点,如果您仍然想这样做,那么一种方法如下所示。
您可以通过两种方式提高这种方法的精度,即增加采样率(比如每米)或对结果应用平滑程序。
对于更粗略的版本,您可以只遍历 KmlLinestring
本身中的坐标,而不是在某个设定距离处重新采样。您将使用坐标的纬度,经度来获取每个点的地面高度。然后,您将从该数据(纬度、经度、海拔 => X、Y、Z)构建笛卡尔坐标,并计算出它与下一个点之间的 Angular 距离……等等。
像下面的想法应该可行 - 尽管它写在这里并且未经测试!
var EARTH_RADIUS = 6378135; // approximate in meters
var degreestoRadians = function(degrees) {
return degrees * Math.PI / 180;
}
var arcLength = function(point1 , point2) {
var length = Math.sqrt(Math.pow(point1.X-point2.X, 2)
+ Math.pow(point1.Y-point2.Y, 2)
+ Math.pow(point1.Z-point2.Z, 2));
var angle = 2 * Math.asin(length/2/EARTH_RADIUS);
return EARTH_RADIUS * angle;
}
var sphericalToCartesian = function(latitude, longitude, altitude) {
var phi = degreestoRadians(latitude);
var theta = degreestoRadians(longitude);
var rho = EARTH_RADIUS + altitude;
return {
X: Math.cos(phi) * Math.cos(theta) * rho,
Y: Math.cos(phi) * Math.sin(theta) * rho,
Z: Math.sin(phi) * rho
}
}
var topographicDistance = function(linestring) {
var coordinates = linestring.getCoordinates(); //KmlCoordArray
var last = null;
var distance = 0;
for(var i = 0; i < coordinates.length; i++) {
var coord = coordinates.get(i); //KmlCoord
var lat = coord.getLatitude();
var lng = coord.getLongitude();
var alt = ge.getGlobe().getGroundAltitude(lat, lng);
var latest = sphericalToCartesian(lat, lng, alt);
if(last != null) {
distance += arcLength(last, latest);
}
last = latest;
}
return distance;
}
你会像这样使用它......
var distance = topographicDistance(yourLinestring);
关于javascript - 计算距离,包括 KmlLinestring 的高程/地形数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13974733/
我需要用我自己的可绘制对象替换默认的 Switch 拇指。为此,我使用了 android:thumb 属性,它运行良好,减去拇指下方的阴影不再存在。如何在保持拇指阴影/高度的同时使用自定义拇指可绘制对
我正在为我们的顶点项目创建一个 Android 应用程序。我正在使用 API 23。我在我的工具栏和其他组件上添加了高度,但没有出现阴影。我的主题毁了它吗?
我正在使用来自 this answer 的代码.我试图在折叠时禁用工具栏的提升。我尝试将 android:elevation="0dp" 放入所有 xml 标签,但没有成功。有什么建议吗? 最佳答案
在我的应用程序中,当我尝试使用“ map 高程 API”获取高程时,我得到的答案看起来像中文答案。我的要求是: My request 通过以下代码查询API返回的结果: try
我们如何向 map 添加带有高程标签的等高线图层?我发现了这个:https://www.mapbox.com/blog/satellite-map-with-contours/ , 但它没有显示如何。
我尝试在 android 上创建自己的自定义加载对话框。那没问题,但是对话框在出现时会产生非常难看的阴影 我尝试使用默认颜色主题化我的 android 而不是我自己的。我尝试设置一个透明的窗口背景并将
我已经创建了这样的 AppBar 布局 它在 LinearLayout 中起作用并转换阴影: 但是当我把它放到 CoordinatorLayout 中时,阴影消失了:
我想在 Jetpack compose 中为我的图标添加阴影,以便图像和文本具有(大致)相似的阴影。 Text( text = "HAS SHADOW", style = Materi
我正在寻找一种方法来为 matplotlib 获取适合高程的颜色图。 cmap 'terrain' 看起来不错,但颜色缩放不是基于零(即,如果比例为 0->5000m,则 0->1000m 范围可能是
这看起来是一项非常基本的任务,但我无法解决它。 PyEphem 文档: http://rhodesmill.org/pyephem/radec.html 描述了如何以相反的方式执行转换,从 Body
我是一名优秀的程序员,十分优秀!