精华内容
下载资源
问答
  • 根据经纬度求面积
    万次阅读 热门讨论
    2018-05-27 12:35:15

    根据经纬度计算的面积,需要一个转化,才能和高德地图显示的面积是一致的。原理就是简单多边形求面积公式:

    data = "115.989099,39.646023;115.987394,39.645988;115.987371,39.647407;115.986684,39.647423;115.986602,39.648088;115.989095,39.648151;115.989188,39.646021;115.989099,39.646023"

    这里有个前提是你的经纬度点是依次相连接的点,不是无序的,可以是顺时针,或者逆时针都可以。

    具体的计算规则可以参考:多边形求面积公式

    下面是Python实现的代码

    import math
    def ComputeArea(data):
        arr = data.split(';')
        arr_len = len(arr)
        if arr_len < 3:
            return 0.0
        temp = []
        for i in range(0,arr_len):
            temp.append([float(x) for x in arr[i].split(',')])
        s = temp[0][1] * (temp[arr_len -1][0]-temp[1][0])
        print s
        for i in range(1,arr_len):
            s += temp[i][1] * (temp[i-1][0] - temp[(i+1)%arr_len][0])
        return round(math.fabs(s/2)*9101160000.085981,6)
        

    最后求的面积是:

    38602.365364

    更多相关内容
  • java-业务需求需要根据经纬度计算面积,整理了一下根据经纬度计算面积,根据openlayers借鉴改写,亲测可用!
  • 经纬度计算面积的程序

    热门讨论 2013-03-01 15:42:26
    自己写的通过一个方形地区的左上角与右下角经纬度计算出实际面积的程序 里面的计算公式是从网上找的 内附代码 分享给有需要的朋友
  • 根据经纬度计算多边形面积

    千次阅读 2020-06-30 18:21:30
    <!doctype html> <html lang="en"> <head> ...meta charset="UTF-8">... content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">...
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <script src="data.js"></script>
        <title>Document</title>
    </head>
    <body>
    
    </body>
    <script>
      var s = "112.523197631836,37.868892669677734;112.5170669555664,37.8605842590332;112.52099609375,37.849857330322266;112.54137420654297,37.8512732521875;112.5351180302734,37.858699798583984";
      console.log(computeSignedArea(cvpath(s)))
      function cvpath(s) {
        let path = s.split(';').map(item => {
          return {
            lng: item.split(',')[0]/1,
            lat: item.split(',')[1]/1
          }
        })
        return path
      }
      function computeSignedArea(path) {
        let radius = 6371009
        let len = path.length
        if (len < 3) return 0
        let total = 0
        let prev = path[len - 1]
        let prevTanLat = Math.tan(((Math.PI / 2 - prev.lat / 180 * Math.PI) / 2))
        let prevLng = (prev.lng) / 180 * Math.PI
        for (let i in path) {
          let tanLat = Math.tan((Math.PI / 2 -
            (path[i].lat) / 180 * Math.PI) / 2)
          let lng = (path[i].lng) / 180 * Math.PI
          total += polarTriangleArea(tanLat, lng, prevTanLat, prevLng)
          prevTanLat = tanLat
          prevLng = lng
        }
        return Math.abs(total * (radius * radius))
      }
    
      function polarTriangleArea(tan1, lng1, tan2, lng2) {
        let deltaLng = lng1 - lng2
        let t = tan1 * tan2
        return 2 * Math.atan2(t * Math.sin(deltaLng), 1 + t * Math.cos(deltaLng))
      }
    </script>
    </html>
    <script>
      var earthRadiusMeters = 6371000.0;
      var metersPerDegree = 2.0 * Math.PI * earthRadiusMeters / 360.0;
      var radiansPerDegree = Math.PI / 180.0;
      var degreesPerRadian = 180.0 / Math.PI;
      var pointArr=[]
    let d=data
      console.log(d)
      b(data)
      function calculateArea(points) {
        if (points.length > 2) {
          var areaMeters2 = PlanarPolygonAreaMeters2(points);
          // if (areaMeters2 > 1000000.0) {
            areaMeters2 = SphericalPolygonAreaMeters2(points);
            alert("面积为" + areaMeters2 + "平方米");
          // }
        }
      }
      function b() {
         var s = "112.523197631836,37.868892669677734;112.5170669555664,37.8605842590332;112.52099609375,37.849857330322266;112.54137420654297,37.8512732521875;112.5351180302734,37.858699798583984";
        //  let s=data
        var s1 = new Array()
        s1 = s.split(";");
        for (var i = 0; i < s1.length; i++) {
          var ss = s1[i];
          var temp = ss.split(",");
          var point = new Array();
          point.push(Number(temp[0]), Number(temp[1]));
          pointArr.push(point);
        }
        calculateArea(pointArr);
      }
      /*球面多边形面积计算*/
      function SphericalPolygonAreaMeters2(points) {
        var totalAngle = 0;
        for (var i = 0; i < points.length; i++) {
          var j = (i + 1) % points.length;
          var k = (i + 2) % points.length;
          totalAngle += Angle(points[i], points[j], points[k]);
        }
        var planarTotalAngle = (points.length - 2) * 180.0;
        var sphericalExcess = totalAngle - planarTotalAngle;
        if (sphericalExcess > 420.0) {
          totalAngle = points.length * 360.0 - totalAngle;
          sphericalExcess = totalAngle - planarTotalAngle;
        } else if (sphericalExcess > 300.0 && sphericalExcess < 420.0) {
          sphericalExcess = Math.abs(360.0 - sphericalExcess);
        }
        return sphericalExcess * radiansPerDegree * earthRadiusMeters * earthRadiusMeters;
      }
    
      /*角度*/
      function Angle(p1, p2, p3) {
        var bearing21 = Bearing(p2, p1);
        var bearing23 = Bearing(p2, p3);
        var angle = bearing21 - bearing23;
        if (angle < 0) {
          angle += 360;
        }
        return angle;
      }
    
    
      /*方向*/
      function Bearing(from, to) {
        var lat1 = from[1] * radiansPerDegree;
        var lon1 = from[0] * radiansPerDegree;
        var lat2 = to[1] * radiansPerDegree;
        var lon2 = to[0] * radiansPerDegree;
        var angle = -Math.atan2(Math.sin(lon1 - lon2) * Math.cos(lat2), Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon1 - lon2));
        if (angle < 0) {
          angle += Math.PI * 2.0;
        }
        angle = angle * degreesPerRadian;
        return angle;
      }
    
      /*平面多边形面积*/
      function PlanarPolygonAreaMeters2(points) {
        var a = 0;
        for (var i = 0; i < points.length; ++i) {
          var j = (i + 1) % points.length;
          var xi = points[i][0] * metersPerDegree * Math.cos(points[i][1] * radiansPerDegree);
          var yi = points[i][1] * metersPerDegree;
          var xj = points[j][0] * metersPerDegree * Math.cos(points[j][1] * radiansPerDegree);
          var yj = points[j][1] * metersPerDegree;
          a += xi * yj - xj * yi;
        }
        return Math.abs(a / 2);
      }
    
    
    
    </script>
    
    

    有想换工作的同学可以找我内推哦不低于15k(前端,java,测试)

    在这里插入图片描述

    展开全文
  • 根据经纬度点计算区域面积

    万次阅读 2019-04-18 17:22:35
    1、根据分号对经纬度数据拆分成一组一组的数据 2、计算点数 3、将每个点的经纬度组合形成列表形式 4、计算 第一点的纬度*(最后一个点的经度-第一个点的经度) 注:round函数,最后一个6是小数点后保留的位数 ...

    经纬度点组成一个区域,要求数据是顺序排列,顺时针或逆时针都可以。
    在这里插入图片描述步骤拆分:
    1、根据分号对经纬度数据拆分成一组一组的数据
    在这里插入图片描述
    2、计算点数
    在这里插入图片描述
    3、将每个点的经纬度组合形成列表形式
    在这里插入图片描述
    4、计算
    在这里插入图片描述
    第一点的纬度*(最后一个点的经度-第一个点的经度)
    在这里插入图片描述
    在这里插入图片描述
    注:round函数,最后一个6是小数点后保留的位数
    temp[0][1]表示temp列表中第一个列表中的第1个位置,即第一个点的纬度
    temp[data1_len -1][0]是temp列表中最后一个点的第0个位置,切片由于有第0个位置,故要用len-1即为最后一个列表

    参考文章:
    https://blog.csdn.net/tongjinrui/article/details/80468461

    展开全文
  • 高德地图 1,根据经纬度计算面积 2,判断一个点是否在圈内
  • 同时为该类提供两个方法:方法一用于圆的面积,方法二用于圆的周长;为该类提供一个无参的构造方法,用于初始化r的值为4。在main方法中测试。package hello.circle;/** * 2.创建一个圆Circle类。 * 为该类提供一...

    创建一个圆Circle类。为该类提供一个变量r表示半径,一个常量PI表示圆周率;

    同时为该类提供两个方法:方法一用于求圆的面积,方法二用于求圆的周长;

    为该类提供一个无参的构造方法,用于初始化r的值为4。

    在main方法中测试。

    package hello.circle;/** * 2.创建一个圆Circle类。 * 为该类提供一个变量r表示半径,一个常量PI表示圆周率; * 同时为该类提供两个方法:方法一用于求圆的面积,方法二用于求圆的周长; * 为该类提供一个无参的构造方法,用于初始化r的值为4。 * 在main方法中测试。 *///创建一个圆Circle类public class Circle {    //为该类提供一个变量r表示半径,一个常量PI表示圆周率    public double r;    public final double PI = 3.14;    //为该类提供一个无参的构造方法,用于初始化r的值为4。    public Circle() {        System.out.println("无参数的构造函数:为R赋值为 4 ---");        r = 4;    }    //方法一用于求圆的面积    public void area() {        System.out.println(r);        System.out.println("圆的面积为:" + PI * r * r);    }    //方法二用于求圆的周长    public void girth() {        System.out.println(r);        System.out.println("圆的周长为:" + 2 * PI * r);    }    // main方法    public static void main(String[] args) {        System.out.println("-----");        Circle c = new Circle();        System.out.println("-----");        c.area();        c.girth();    }}

    运行结果:

    f229aba4fb4c34bac82535b2a3a6474d.png
    展开全文
  • JAVA根据经纬度坐标点集合计算面积

    千次阅读 2021-04-27 10:50:34
    import com.wh.whcloud.common.Location... import java.util.List; public class PolygonAreaUtil { /** * public class Location { ... * private BigDecimal lon;... * 球面积计算公式 * @param locationList * ...
  • java 根据经纬度获取区域面积
  • 经纬度计算软件

    2018-11-14 18:50:06
    已知两点经纬度,可以计算两点之间的距离,免安装版。
  • from math import radians, sin def area(lon1, lat1, lon2, lat2): lon1, lat1, lon2, l[at2 = map(radians, \[lon1, lat1, lon2, lat2\]) r = 6372 return abs(r**2 * (lon2 - lon1) * (sin(lat2) - sin(lat1))...
  • GeoTools计算经纬度图形面积

    千次阅读 2021-05-15 10:41:49
    文章目录前言一、pom.xml二、经纬度坐标转Mactor三、解析GeoJson,计算面积总结 前言 项目中需要对经纬度的矢量图形数据计算面积,由于项目开发中主体部分使用的是Java语言,因此这里采用开源的Geotools工具包实现 ...
  • js根据经纬度计算多边形面积

    千次阅读 2017-06-20 10:46:03
    js经纬点计算面积;简单准确
  • python:经纬度求两点距离、三点面积

    千次阅读 2018-05-22 10:15:25
    给出三点,三角形面积。先给出半正失公式(haversine formula):整理两个式子可得:其中:d为两点的球面距离r为圆的半径,在这里我们假设地球为均匀球体(r=6371.393公里)d/r表示两点在圆上的弧度θφ表示纬度λ表示...
  • 大地经纬度转换,面积计算,根据大地地块角点计算面积
  • 根据经纬度计算多边形的面积

    千次阅读 2019-01-23 13:28:00
    这里有个前提是:你的经纬度点是依次相连接的点,不是无序的,可以是顺时针,或者逆时针都可以。 附python代码: import mathdef ConvertToRadian(input): return input * math.pi / 180; def ...
  • 输入多个经纬度,计算面积

    千次阅读 2020-04-20 11:39:04
    function computeSignedArea(path) { //传入path:{ [{lat:,lng:}],[{lat:,lng:}],[{lat:,lng:}] } let radius= 6371009 let len = path.length; if (len < 3) return 0; let total = 0;...let prev = path[len - 1]...
  • alert("面积为" + areaMeters2 + "平方米"); } } } /*球面多边形面积计算*/ function SphericalPolygonAreaMeters2(points) { var totalAngle = 0; for (var i = 0; i ; i++) { var j = (i + 1) % points...
  • 经纬度轮廓面积计算

    2022-05-26 17:25:52
    import js2py import pandas as pd import numpy as np from shapely.geometry import Polygon,Point data_js = open(r'polygon_go.js', 'r', encoding='utf8').read() ... 计算poly的面积(单位:平方.
  • 之前网上找的一些例子计算出来的不准确自己写了一个,C#计算两个经纬度之间的方向角的DEMO,以正北为0-359 范围内的角度。
  • 经纬度坐标下的球面多边形面积计算公式,这是古人的算法。
  • 经纬度坐标的shape面层计算面积的详细步骤
  • 经纬度距离换算matlab代码HAB Datacube提取 该项目分为培训和测试任务 训练任务将使用一个包含所有HAB的经纬度,日期和(HAB)计数信息的Groundtruth MATLAB .mat文件。 然后,这会在地面真相文件中的每个样本行生成...
  • 经纬度坐标下多边形的面积

    千次阅读 2015-05-18 14:54:08
    经纬度坐标下多边形的面积,mapinfo的值作为参考,试了几种投影都不行,原来应该计算球面坐标的面积。 最后采用了boost库的方法求面积。 对boost不熟悉的可以参考一下: #include #include #include ...
  • 一、两个经纬度点之间的距离 $\phi_1$,$\phi_2$是纬度,$\lambda_1$,$\lambda_2$是经度。均是弧度制数值ArcGISPython 实现2 * 6372 * math.asin(math.sqrt(math.sin((math.radians( !CENTROID_Y! )-math.radians( ...
  • 代码如下: private static double CalculatePolygonArea(CoordinateCollection coordinates) { double area = 0; if (coordinates.Count > 2) { var coordlist = coordinates.ToList();...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,368
精华内容 1,747
关键字:

根据经纬度求面积