WebGIS-Leaflet应用(二)地图矢量

Leaflet的强大之处在于轻量,并可以通过许多插件进行扩展。

以下介绍两个JS

Leaflet.PM https://github.com/codeofsumit/leaflet.pm 

Leaflet.PM Demo https://geoman.io/studio/

Leaflet.PM,可自由在地图上勾画矢量,并可通过Leaflet 自带的 toGeoJSON() 转成GeoJson对象,持久化到数据库,或转化成json文件用于数据移植等。

GeoJson 介绍 https://www.oschina.net/translate/geojson-spec

Turf.js http://turfjs.org/

Turf.js主要用实现在网页端来空间几何对象关系的计算,点、线、面之间包含、相交等一系统运算

通过Leaflet.PM与Turf.js的结合,我们可以做出一些比较有意思的东西。

1、合并复杂多边形

思路:通过Leaflet.pm   用map.on('pm:create', listenerCreatePm); 监听地图勾画事件,将创建好的layer转化为turf.polygon对象,调用turf.union(poly1, poly2); 即可拿到合并后的多边形,若为复杂多边形,则多个多边形依次合并即可。

var poly1 = turf.polygon([[
    [-82.574787, 35.594087],
    [-82.574787, 35.615581],
    [-82.545261, 35.615581],
    [-82.545261, 35.594087],
    [-82.574787, 35.594087]
]], {"fill": "#0f0"});
var poly2 = turf.polygon([[
    [-82.560024, 35.585153],
    [-82.560024, 35.602602],
    [-82.52964, 35.602602],
    [-82.52964, 35.585153],
    [-82.560024, 35.585153]
]], {"fill": "#00f"});

var union = turf.union(poly1, poly2);

效果图

  

2、获取多边形相交部分

思路: 通过Leaflet.pm   用map.on('pm:create', listenerCreatePm); 监听地图勾画事件,将创建好的layer转化为turf.polygon对象,调用turf.intersect(poly1, poly2); 即可拿到相交部分

var poly1 = turf.polygon([[
  [-122.801742, 45.48565],
  [-122.801742, 45.60491],
  [-122.584762, 45.60491],
  [-122.584762, 45.48565],
  [-122.801742, 45.48565]
]]);

var poly2 = turf.polygon([[
  [-122.520217, 45.535693],
  [-122.64038, 45.553967],
  [-122.720031, 45.526554],
  [-122.669906, 45.507309],
  [-122.723464, 45.446643],
  [-122.532577, 45.408574],
  [-122.487258, 45.477466],
  [-122.520217, 45.535693]
]]);

var intersection = turf.intersect(poly1, poly2);

效果图(蓝色部分为相交)

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值