当前位置: 首页 > 知识库问答 >
问题:

使用javascript使用经度和纬度计算多边形面积

宁飞宇
2023-03-14

https://stackoverflow.com/a/4682656/7924630这是一个非常有用的答案,帮助我解决这个问题

function polygonArea(X, Y, numPoints) {
  let area = 0;         // Accumulates area in the loop
  let j = numPoints-1;  // The last vertex is the 'previous' one to the first

  for (i=0; i<numPoints; i++) {
    area = area +  (X[j]+X[i]) * (Y[j]-Y[i]);
    j = i;  //j is previous vertex to i
  }
  return area/2;
}


let xpoints = [];
let ypoints = [];
let lat_dist = (6371009 * Math.PI) / 180;
var i;
for (i = 0; i < points.length; i++) {
    let cartoPoint = Cesium.Cartographic.fromCartesian(points[i]);
    let lng = cartoPoint.longitude;
    let lat = cartoPoint.latitude;
    xpoints[i] = lng * lat_dist * Math.cos(lat);
    ypoints[i] = lat * lat_dist;
};
surfaceArea = polygonArea(xpoints, ypoints, xpoints.length);

出于某种原因,这返回的区域值很小,我不明白为什么。例如,我在一个矩形区域上测试了这个。面积应该约为45平方米,但它返回0.0137平方米。我尝试了其他的实现,但没有找到任何对本机JavaScript有用的东西。

共有1个答案

韩禄
2023-03-14

你对多边形面积使用鞋带公式,这里它给出了球面多边形的近似值。最后添加math/abs,独立得到横移方向的结果,并注意赤道和第0经线坐标符号的变化。

但是由于这个问题,计算是不正确的:

cesium.cartographic.FromCartesian函数返回以弧度表示的结果坐标

 let lat_dist = 6371009;
 类似资料:
  • 我正在尝试使用臭氧监测仪器(OMI)的数据文件,并将该来源的数据与监测类似数据的地面仪器进行比较。 最终,我想知道它们是否在一个特定的多边形内。然而,要做到这一点,我需要创建我想象的多边形。 我有以下变量 latmat和lonmat当然都比两个指数大得多,但我尽量保持这些简单。这些值分别表示四角卫星像素的纬度和经度点。 最重要的是,我在表格中也有数据 我如何着手创建一个地理数据框架与地理平台,识别

  • 问题内容: 我的桌子有经度和纬度 所以我想要的是我要从页面传递两个经度和纬度。如何使用存储过程查找最近的地方?我没有太多帮助,所以我必须在这里询问 尝试过使用这个 但是我必须将其与表值进行匹配,所以我该如何实现呢? 问题答案: 您可以在SQL中使用与上面显示的查询类似的查询,其中和是要搜索的变量值。该和是从你的表的列名。顺便说一句,这称为Haversine公式,该常数用于获取以KM为单位的距离,而

  • 问题内容: 我搜索了有关如何计算地球多边形表面积的解释和算法。我发现了这个,这 说我已经凸出了船体点 从第二个链接开始,第一个答案使用Python库,而第二个答案的方法即使我们假设地球是球形,也不会给出非常精确的区域(我是对的)吗?如果我们假设地球是球形,我可以采取什么方法来计算面积(便宜些)? 另外,我寻找了不同的库(geotools.org等),但是在它们有关面积计算的文档中找不到。 问题答案

  • 我正在试用google places api。 我可以搜索酒店或我想要的任何东西,并可以将这些位置保存在我的数据库中,包含google places API提供的任何信息。我的计划是,任何用户都可以保存其实际位置。在下一步中,用户应该看到,其他用户都在附近。 我怎么能这样做?有什么方法可以用谷歌地图的经纬度计算吗? 希望你能理解我的好英语: D

  • 问题内容: 我很难缠一些三角学。我正在尝试根据起始纬度,对数,距离和方位来推论目标纬度和经度。 幸运的是,我找到了一个令人惊叹的网站,该网站准确地描述了我需要的功能:http : //www.movable- type.co.uk/scripts/latlong.html “给定目标点的距离并与起点保持距离”我尝试了java程序,但对我不起作用。我按照网站所述部署它。这是我的代码: 但它显示的输出

  • echarts地图不能根据多个经纬度标出区域范围,类似画多边形吗? 官方有个画多边形的示例,但是要配合百度地图才行。 直接在echarts地图上画多边形,按照官方文档进行配置了,但是没效果。不知道是哪里出了问题,还是说不支持这个功能?