1.比较粗糙的计算方式

计算长度

var length = lineFeature.getGeometry().getLength();if (length > 1000) {length = length / 1000;unit = 'km';} else {unit = 'm';}

说明:直接使用geom的getLength方法获取长度,openlayers默认的长度单位是m。所有如果长度大于1000,需要转换成km。

计算面积

var area = polygonFeature.getGeometry().getArea();if (area > 1000000) {area = area / 1000000;unit = 'km²';} else {unit = 'm²';}

说明:直接使用geom的getArea方法获取面积,同理如果面积大于1000000,需要转换为km(2)。

2.精准计算

    计算长度

var sphere = new ol.Sphere(6378137);
var lonLatLine = lineFeature.getGeometry().transform(mapProjection, 'EPSG:4326');var lineCoordinates = lonLatLine.getCoordinates();var length = 0;for (var i = 0; i < lineCoordinates.length - 1; i += 1) {length += sphere.haversineDistance(lineCoordinates[i], lineCoordinates[i + 1]);}if (length > 1000) {length = length / 1000;unit = 'km';} else {unit = 'm';}

说明:ol.Sphere是一个地形对象,可提供计算精准长度和面积。通过实际地理形状计算,需要把坐标转换为对应坐标系的经纬度,调用geom的transform(projection1, projection2),把投影系1下的坐标转化为投影系2的坐标,例如把墨卡托投影系EPSG:3857(大地坐标)下的坐标转换为EPSG:4236投影系下的坐标(经纬度)。使用Sphere对象的haversineDistance函数计算两个坐标之间的距离。

计算面积

var lonLatPolygon = polygonFeature.getGeometry().transform(mapProjection, 'EPSG:4326');var area = Math.abs(sphere.geodesicArea(lonLatPolygon.getCoordinates()[0]));if (area > 1000000) {area = area / 1000000;unit = 'km²';} else {unit = 'm²';}

说明:其他不用再多介绍了,主要说下geodesicArea函数,它用来计算多边形的面积,计算出来的面积有正负之分,如果多边形是沿顺时针方向画,面积为正;否则为负。所以需要使用Math.abs求绝对值。

转载于:https://www.cnblogs.com/w-wanglei/p/6538054.html

Openlayers 3计算长度和面积相关推荐

  1. PostGIS 计算长度和面积

    参考官网:http://postgis.net/docs/manual-3.0/using_postgis_dbmanagement.html 相关函数参考:http://postgis.net/do ...

  2. Openlayers测量距离与面积

    测量功能 距离的测量是根据鼠标在地图上绘制的点,实时计算出两点之间的实际距离,面积的测量是根据鼠标绘制的范围,通过地理坐标系的转换而计算出实际面积大小. 本博客参考:https://blog.csdn ...

  3. openlayers测距和测面积

    初次使用openlayers地图进行开发各种地图功能,测距和测面积使用的是官方例子并进行了一些简单的修改,官方示例在测量一次之后不能停止,修改后,每点击测量,只会测量一次. 而且需要注意的是,官方例子 ...

  4. arcgis api 4.x 实现动态测距和计算面积

    先来个效果图: 图片是静态的,没有体现出来动态的效果,实际效果是测距和面积会随着鼠标的位置实时显示当前线段的长度或者面积大小. 本例采用arcgis api 4.x,原理是调用draw绘制工具,监听d ...

  5. OpenLayer示例网址汇总

    1.https://openlayers.org/en/latest/examples/feature-move-animation.html 图标 行进轨迹动画 使用后期渲染事件和矢量上下文沿线对标 ...

  6. Web GiS之 OpenLayes 笔记

    文章目录 笔记来自: 代码示例 1.常见的开源WebGIS平台 2.框架结构 3.常见的坐标系统 4.比例尺 5.GiS矢量,栅格数据 6.矢量地图和瓦片地图 7.地理要素 8.GiS坐标转换 9.O ...

  7. OpenCASCADE绘制测试线束:拓扑命令之拓扑和几何分析

    OpenCASCADE:绘制测试线束:拓扑命令之拓扑和几何分析 拓扑和几何分析 lprops.sprops.vprops bounding isbbinterf distmini xdistef.xd ...

  8. Geometry(几何对象定义空间位置和关联几何形状)

    Geometry 描述 几何对象定义空间位置和关联几何形状. 讨论 在许多地理处理工作流中,您可能需要使用坐标和几何信息运行特定操作,但不一定想经历创建新(临时)要素类.使用光标填充要素类.使用要素类 ...

  9. 聊聊GIS中的坐标系|再版

    目录 1. 经纬度(例: 119.32°E, 32.48°N)与米(∟, 直角坐标) 2. 为什么有两种表达(不同点) 3. 内在联系(相同点) 4. 常用坐标系统 4.1. 一对名词:WKID与EP ...

最新文章

  1. UVa10672 - Marbles on a tree(BFS)
  2. 2021贵州毕节高考成绩查询,2021贵州毕节选调生考试排名查询入口-时间(已开通)...
  3. 从实例入手学习Shiro的会话机制
  4. JAVA 继承和派生4.1-4.3 2020.3.20
  5. java服务器修改缓存数据,java监控服务器数据存入缓存
  6. Gitlab Java API 使用示例
  7. 凯利公式和复利公式,与概率和时间为友
  8. snaker流程预览
  9. 关于js中绑定事件失效问题
  10. html播放h265,Web 播放 H.265视频
  11. 判断是否为回文字符串(Java)
  12. 项目优化:当使用redis减少数据库压力时,遇到redis写入失败,造成读取数据问题的解决方案
  13. Xcode创建c语言方案及调试
  14. TikTok带货爆单:彩色人造玫瑰周增长率飙升,TikTok热卖榜前10?
  15. ecg去噪 matlab,MATLAB,ECG,去噪,小波
  16. memoryCache和diskCache流程详解
  17. 实用微带线的相关计算
  18. matlab 环形检测,用matlab模拟环形磁铁的磁场分布详解.doc
  19. RSA攻击之Rabin密码体制
  20. Neo4j CEO Emil Eifrem 解读图数据平台引领数据库未来十年的发展

热门文章

  1. QSerialPort线程内接收异常
  2. token与sessionId的区别——学习笔记
  3. python time用法
  4. 纯CSS3实现动态火车行驶特效
  5. ThreadPool执行异步操作
  6. 处理服务器故障的前5分钟(转)
  7. POJ 3348 Cows
  8. 反病毒软件技术简析与探索(2009年5月18日)
  9. 从零开始学习搜索引擎(开篇)---Searcharoo.net
  10. 问题五十:怎么用ray tracing画blobs