-
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借鉴改写,亲测可用
2018-02-02 15:43:13java-业务需求需要根据经纬度计算面积,整理了一下根据经纬度计算面积,根据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:351、根据分号对经纬度数据拆分成一组一组的数据 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 -
高德地图 根据经纬度计算面积和判断一个点是否在圈内
2018-06-12 10:49:15高德地图 1,根据经纬度计算面积 2,判断一个点是否在圈内 -
java 根据经纬度计算多边形的面积_Java面向对象练习题之计算圆的面积和周长
2020-11-21 10:21:52同时为该类提供两个方法:方法一用于求圆的面积,方法二用于求圆的周长;为该类提供一个无参的构造方法,用于初始化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(); }}
运行结果:
-
JAVA根据经纬度坐标点集合计算面积
2021-04-27 10:50:34import com.wh.whcloud.common.Location... import java.util.List; public class PolygonAreaUtil { /** * public class Location { ... * private BigDecimal lon;... * 球面积计算公式 * @param locationList * ... -
java 根据经纬度获取区域面积
2022-07-06 09:45:08java 根据经纬度获取区域面积 -
经纬度计算软件
2018-11-14 18:50:06已知两点经纬度,可以计算两点之间的距离,免安装版。 -
经纬度网格面积计算(python)
2022-01-11 17:49:49from 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:03js经纬点计算面积;简单准确 -
python:经纬度求两点距离、三点面积
2018-05-22 10:15:25给出三点,求三角形面积。先给出半正失公式(haversine formula):整理两个式子可得:其中:d为两点的球面距离r为圆的半径,在这里我们假设地球为均匀球体(r=6371.393公里)d/r表示两点在圆上的弧度θφ表示纬度λ表示... -
面积计算_面积计算_面积经纬_面积_经纬度面积_经纬度计算_
2021-09-28 19:43:14大地经纬度转换,面积计算,根据大地地块角点计算面积。 -
根据经纬度计算多边形的面积
2019-01-23 13:28:00这里有个前提是:你的经纬度点是依次相连接的点,不是无序的,可以是顺时针,或者逆时针都可以。 附python代码: import mathdef ConvertToRadian(input): return input * math.pi / 180; def ... -
输入多个经纬度,计算面积
2020-04-20 11:39:04function 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]... -
js版根据经纬度计算多边形面积(墨卡托投影)
2018-04-03 13:16:11alert("面积为" + areaMeters2 + "平方米"); } } } /*球面多边形面积计算*/ function SphericalPolygonAreaMeters2(points) { var totalAngle = 0; for (var i = 0; i ; i++) { var j = (i + 1) % points... -
经纬度轮廓面积计算
2022-05-26 17:25:52import 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#两个经纬度方向角计算源码
2019-11-22 22:01:40之前网上找的一些例子计算出来的不准确自己写了一个,C#计算两个经纬度之间的方向角的DEMO,以正北为0-359 范围内的角度。 -
经纬度坐标下的球面多边形面积计算公式
2011-11-16 12:05:54经纬度坐标下的球面多边形面积计算公式,这是古人的算法。 -
经纬度坐标的shape面层计算面积的详细步骤
2022-03-14 23:33:22经纬度坐标的shape面层计算面积的详细步骤 -
经纬度度距离换算matlab代码-extractData:extractData
2021-05-25 02:30:00经纬度距离换算matlab代码HAB Datacube提取 该项目分为培训和测试任务 训练任务将使用一个包含所有HAB的经纬度,日期和(HAB)计数信息的Groundtruth MATLAB .mat文件。 然后,这会在地面真相文件中的每个样本行生成... -
经纬度坐标下求多边形的面积
2015-05-18 14:54:08经纬度坐标下求多边形的面积,mapinfo的值作为参考,试了几种投影都不行,原来应该计算球面坐标的面积。 最后采用了boost库的方法求面积。 对boost不熟悉的可以参考一下: #include #include #include ... -
【447】两经纬度点之间的距离计算(经纬度网格面积)
2021-04-23 08:50:17一、两个经纬度点之间的距离 $\phi_1$,$\phi_2$是纬度,$\lambda_1$,$\lambda_2$是经度。均是弧度制数值ArcGISPython 实现2 * 6372 * math.asin(math.sqrt(math.sin((math.radians( !CENTROID_Y! )-math.radians( ... -
根据经纬度计算多边形的面积(calculcate polygon's area by lon and lat)
2017-08-04 10:23:33代码如下: private static double CalculatePolygonArea(CoordinateCollection coordinates) { double area = 0; if (coordinates.Count > 2) { var coordlist = coordinates.ToList();...
收藏数
4,368
精华内容
1,747