高德 面积计算公式 js版

高德 面积计算公式 js版 

计算一个经纬度围成的实际面积,下面是js方法

var ring = [
[ 116.169465, 39.932670],
[ 116.160260, 39.924492],
[ 116.186138, 39.879817],
[ 116.150625, 39.710019],
[ 116.183198, 39.709920],
[ 116.226950, 39.777616],
[ 116.421078, 39.810771],
[ 116.442621, 39.799892],
[ 116.463478, 39.790066],
[ 116.588276, 39.809551],
[ 116.536091, 39.808859],
[ 116.573856, 39.839643],
[ 116.706380, 39.916740],
[ 116.657285, 39.934545],
[ 116.600293, 39.937770],
[ 116.540039, 39.937968],
[ 116.514805, 39.982375],
[ 116.499935, 40.013710],
[ 116.546520, 40.030443],
[ 116.687668, 40.129961],
[ 116.539697, 40.080659],
[ 116.503390, 40.058474],
[ 116.468800, 40.052578]
];

var area = getArea( ring);

console. info( "面积", area);

/**
*面积算法 zdb
*/
function getArea( ring) {
var sJ = 6378137;
var Hq = 0.017453292519943295;

var arr = [];
for ( var i = 0; i< ring. length; i++){
var poi = {
lng:ring[ i][ 0],
lat:ring[ i][ 1]
};
arr[ i] = poi;
}

ring = arr;

var c = sJ * Hq , d = 0 , e = ring. length;

if ( 3 > e) {
return 0;
}
for ( var g = 0; g < e - 1; g += 1){
var h = ring[ g], k = ring[ g + 1];
var u = h. lng * c * Math. cos( h. lat * Hq);
var h = h. lat * c;
var v = k. lng * c * Math. cos( k. lat * Hq);
var d = d + ( u * k. lat * c - v * h);
}

g = ring[ g];
ring = ring[ 0];
e = g. lng * c * Math. cos( g. lat * Hq);
g = g. lat * c;
k = ring. lng * c * Math. cos( ring. lat * Hq);
d += e * ring. lat * c - k * g;
return 0.5* Math. abs( d)
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要使用 Geotools 计算高德经纬度范围的面积并将其转换为平方米,您可以按照以下步骤进行操作: 1. 首先,您需要将高德经纬度坐标转换为 Geotools 中的几何对象。您可以使用 Geotools 的 `GeometryFactory` 类来创建几何对象。假设您有一个包含高德经纬度坐标的列表 `List<Point2D.Double> coordinates`,可以按照以下方式创建几何对象: ```java import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.GeometryFactory; // 创建 GeometryFactory 对象 GeometryFactory geometryFactory = new GeometryFactory(); // 创建 Coordinate 数组 Coordinate[] coordinateArray = new Coordinate[coordinates.size()]; for (int i = 0; i < coordinates.size(); i++) { Point2D.Double point = coordinates.get(i); coordinateArray[i] = new Coordinate(point.getX(), point.getY()); } // 创建几何对象 Geometry polygon = geometryFactory.createPolygon(coordinateArray); ``` 2. 接下来,您可以使用 Geotools 的 `Area` 类来计算面积。请注意,`Area` 类返回的面积单位是平方度(square degrees),而不是平方米。为了将其转换为平方米,您需要使用 Geotools 的 `MeasureUtilities` 类进行单位转换。以下是示例代码: ```java import org.geotools.measure.Measure; import org.geotools.measure.MeasureUtilities; // 创建 Area 对象 org.geotools.geometry.jts.Area area = new org.geotools.geometry.jts.Area(polygon); // 获取面积值(单位为平方度) double areaValue = area.getArea(); // 创建面积测量对象 Measure<Double, org.geotools.measure.MeasureUtilities.Area> areaMeasure = Measure.valueOf(areaValue, org.geotools.measure.MeasureUtilities.SQUARE_DEGREE); // 转换为平方米 double areaInSquareMeters = MeasureUtilities.convert(areaMeasure, org.geotools.measure.MeasureUtilities.SQUARE_METRE); System.out.println("面积:" + areaInSquareMeters + " 平方米"); ``` 请确保在使用该代码之前,已经正确导入 Geotools 和 JTS 的相关包,并且已经设置好 Geotools 的环境。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值