前端等值线分析DEMO(更新地址)

等值线分析是气象软件开发中最重要的内容,这些年陆续使用C、Delphi、C#、Python、JavaScript完成等值线分析及填色代码编写。今年的又一轮疫情封闭在家,再次把JavaScript版的改用TypeScript改写,并使用leaflet、OpenLayers、ECharts等进行了叠加显示测试。顺便尝试下vue3+vite+typescript组合,真的很好用。

Demo见:Contour V3.0 Demo(已失效)

http://111.21.31.154:8000/demo/gcontour/#/

 传入格点数据二维数组和等值线值,一行语句完成等值线分析、平滑、输出GeoJSON格式点线面数据,可以很方面地实现在各类GIS系统的叠加显示。


1. 等值线分析

一行语句完成等值线分析,输出geojson

2. 等值线分析参数调整

使用参数选择输出点(高低值中心)、线(等值线)、面(填色)数据

 3. leaflet显示测试

简单扩展了leaflet的GeoJson类,实现等值线填色及高低中心标注。

4. OpenLayers显示测试

原以为WebGis的瓦片图只能用3857和4326投影,没想到OpenLayers竟然实现了前端实时栅格投影变换...测试效果不错,相比leaflet,OpenLayers提供了更丰富的模块,等值线显示起来更加容易。

4326投影 

53009投影

兰布托投影

移植以前在leaflet下的代码,完成OpenLayers下的高空图绘制

  5. ECharts显示测试 

6. ECharts 3D显示测试

不要向我要源码, 我开源你们立马自主商用,怕了。

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
好的,我会尽力回答。首先,你需要了解一下Leaflet和turf.js是什么。 Leaflet是一个开源的JavaScript库,用于创建交互式地。它提供了许多用于地控制和交互的功能,例如缩放、拖动和标记。 turf.js是一个用于地理空间分析JavaScript库。它提供了许多用于处理地理空间数据的函数,例如计算距离、缓冲区和交集等。 下面是一些简单的步骤,可以帮助你使用Leaflet和turf.js生成一个等值线demo: 1. 首先,你需要在你的HTML文件中引入Leaflet和turf.js的库文件。你可以使用CDN来实现这一点。 2. 创建一个地容器。你可以使用Leaflet提供的L.map()函数来创建一个地容器,如下所示: ```javascript var map = L.map('map').setView([51.505, -0.09], 13); ``` 这将创建一个地容器,并将其中心点设置为[51.505, -0.09],缩放级别为13。 3. 添加一个地层。你可以使用Leaflet提供的L.tileLayer()函数来添加一个地层,如下所示: ```javascript L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19, attribution: 'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors' }).addTo(map); ``` 这将添加一个OpenStreetMap的层到地容器中。 4. 创建一些随机的点数据。你可以使用JavaScript的Math.random()函数来生成一些随机的点数据,如下所示: ```javascript var points = []; for (var i = 0; i < 100; i++) { points.push([Math.random() * 0.5 + 51, Math.random() * 0.5 - 0.09]); } ``` 这将生成100个随机的点数据,每个点的纬度在51和51.5之间,经度在-0.09和-0.59之间。 5. 使用turf.js的isolines()函数生成等值线。你可以使用turf.js的isolines()函数来生成等值线,如下所示: ```javascript var isolines = turf.isolines(turf.randomPoint(100), 'z', 10, [5, 10, 15, 20, 25]); ``` 这将生成一组等值线,每个等值线的值是5、10、15、20和25。你也可以使用自己的点数据来生成等值线。 6. 将等值线添加到地容器中。你可以使用Leaflet提供的L.geoJSON()函数将等值线添加到地容器中,如下所示: ```javascript L.geoJSON(isolines).addTo(map); ``` 这将把等值线添加到地容器中。 7. 完成!你现在可以查看你的等值线demo了。完整的代码如下所示: ```javascript var map = L.map('map').setView([51.505, -0.09], 13); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19, attribution: 'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors' }).addTo(map); var points = []; for (var i = 0; i < 100; i++) { points.push([Math.random() * 0.5 + 51, Math.random() * 0.5 - 0.09]); } var isolines = turf.isolines(turf.randomPoint(100), 'z', 10, [5, 10, 15, 20, 25]); L.geoJSON(isolines).addTo(map); ``` 希望这可以帮助你生成一个简单的等值线demo

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值