Openlayers openlayer 4.4 getArea()给出了一个错误的结果
Openlayers openlayer 4.4 getArea()给出了一个错误的结果,openlayers,Openlayers,getArea()侧面10米的正方形面积为206.85693359375平方米。该几何图形的坐标为: A: (10) […] 0: 349342.54170016386 1: 5765285.69787908 2: 349356.90080337634 3: 5765285.67265447 4: 349356.87564911734 5: 5765271.266706267 6: 349342.51656936127 7: 5765271.291930803
getArea()
侧面10米的正方形面积为206.85693359375平方米。该几何图形的坐标为:
A: (10) […]
0: 349342.54170016386
1: 5765285.69787908
2: 349356.90080337634
3: 5765285.67265447
4: 349356.87564911734
5: 5765271.266706267
6: 349342.51656936127
7: 5765271.291930803
8: 349342.54170016386
9: 5765285.69787908
length: 10
feature.getGeometry().getArea()
有什么问题?这在投影单位中是正确的,并且接近这个近似计算
349356.90 - 349342.54 = 14.36
5765285.69 - 5765271.26 = 14.43
14.36 * 14.43 = 207.21
当你在网络墨卡托投影中远离赤道时,物体看起来更大,所以你应该使用
ol.Sphere.getArea(geometry)
要获得世界曲面上的真实面积我发现getArea()适用于笛卡尔投影,如EPSG:2154适用于我(和utm?)。可以将投影传递给它,例如:
const opts: SphereMetricOptions = { projection: 'EPSG:32634' }
const area = getArea(polygon, opts)
参见我认为getArea给出了正方形10米边长的平面和笛卡尔面,也就是100平方米。如何用openlayers得到任意多边形的笛卡尔面积?Math.abs(wgs84Sphere.geodesicArea(坐标))给出100.1585129900082如何像Qgis给出的那样得到100?