Openlayers记录(七)利用ol3进行缓冲区的空间相交分析

Openlayers记录(七)利用ol3进行缓冲区的空间相交分析

1效果

在这里插入图片描述

实现代码

首先需要添加引用文件jsts.js,坐标问题阴影proj4.js:

//空间分析
var proj = new ol.proj.Projection({
    code: 'EPSG:4326',
    extent: [113.36672963700005, 23.125302196000064, 113.36790226200003, 23.12607775300006],
    units: 'degrees',
    axisOrientation: 'neu'
});


let parser = new jsts.io.OL3Parser();
parser.inject(ol.geom.Point, ol.geom.LineString, ol.geom.LinearRing, ol.geom.Polygon, ol.geom.MultiPoint, ol.geom.MultiLineString, ol.geom.MultiPolygon);
var wkt1 = "POINT (114.46733018908569 35.725607531477872)";
var wkt2 = "POINT (114.36734010607498 35.125616410488103)";
var format = new ol.format.WKT();
//设置符号样式
var style = {
    point: new ol.style.Style({
        image: new ol.style.Circle({
            radius: 2 * 2,
            fill: new ol.style.Fill({
                color: 'rgba(0, 0, 255, 0.8)'
            }),
            stroke: new ol.style.Stroke({
                color: 'rgba(0, 0, 0, 0.8)',
                width: 1 / 2
            })
        }),
        zIndex: Infinity
    }),

    polygon: new ol.style.Style({
        fill: new ol.style.Fill({ //矢量图层填充颜色,以及透明度
            color: 'rgba(200, 100, 250, 0.8)'
        }),
        stroke: new ol.style.Stroke({ //边界样式
            color: '#234120',
            width: 1
        }),
    }),
    intersect: new ol.style.Style({
        fill: new ol.style.Fill({ //矢量图层填充颜色,以及透明度
            color: 'rgba(255, 255, 0, 0.8)'
        }),
        stroke: new ol.style.Stroke({ //边界样式
            color: '#234120',
            width: 1
        }),
    }),
}

var feature1 = format.readFeature(wkt1, {
    dataProjection: 'EPSG:4326',
    featrueProjection: 'EPSG:4326'
});

var feature2 = format.readFeature(wkt2, {
    dataProjection: 'EPSG:4326',
    featrueProjection: 'EPSG:4326'
});
feature1.setStyle(style.point);
feature2.setStyle(style.point);

var geo1 = feature1.getGeometry();
var geo2 = feature2.getGeometry();

var jstsgeo1 = parser.read(geo1);
var jstsgeo2 = parser.read(geo2);

//缓冲区
var buffer1 = jstsgeo1.buffer(1);
var buffer2 = jstsgeo2.buffer(1);

//相交
//var intersects=buffer1.intersects(buffer2);
var intersects = buffer1.intersection(buffer2);
//console.log(intersects);
var fea = new ol.Feature();
//fea.setGeometry(parser.write(intersects.buffer(0.00001)))
fea.setGeometry(parser.write(intersects))
fea.setStyle(style.intersect);

console.log(fea);
//console.log(intersects.getCoordinates());

var fea1 = new ol.Feature();
var fea2 = new ol.Feature();
fea1.setGeometry(parser.write(buffer1));
fea2.setGeometry(parser.write(buffer2))

fea1.setStyle(style.polygon);
fea2.setStyle(style.polygon);
//console.log(feature);
var pt_vector = new ol.layer.Vector({
    source: new ol.source.Vector({
        features: [feature1, feature2]
    })
});

var pg_vector = new ol.layer.Vector({
    source: new ol.source.Vector({
        features: [fea1, fea2]
    })
});
var intersect_vector = new ol.layer.Vector({
    source: new ol.source.Vector({
        features: [fea]
    })
});

案例链接:链接:https://pan.baidu.com/s/1iBoq9nI9RQYUprP5OP6EeA
提取码:vf3m

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenLayers是一个开源的JavaScript库,用于在Web上显示交互式地图。OpenLayers提供了许多功能,包括缓冲区分析缓冲区分析是一种地理空间分析方法,用于确定给定点、线或面周围一定距离内的区域。在OpenLayers中,可以使用Turf.js库来进行缓冲区分析。Turf.js是一个JavaScript库,用于进行地理空间分析和操作。它提供了许多功能,包括缓冲区分析、距离计算、面积计算等等。 要在OpenLayers进行缓冲区分析,您需要使用Turf.js库。首先,您需要将OpenLayers图形转换为Turf.js图形,然后使用Turf.js库中的缓冲区分析函数来创建缓冲区。最后,您可以将Turf.js图形转换回OpenLayers图形,并将其添加到地图上。 以下是一个使用OpenLayers和Turf.js进行缓冲区分析的示例代码: ```javascript // 创建OpenLayers地图 var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ], view: new ol.View({ center: ol.proj.fromLonLat([37.41,8.82]), zoom: 4 }) }); // 创建OpenLayers图形 var circle = new ol.geom.Circle(ol.proj.fromLonLat([37.41, 8.82]), 100000); // 将OpenLayers图形转换为Turf.js图形 var turfCircle = turf.circle(circle.getCenter(), circle.getRadius(), {steps: 64, units: 'meters'}); // 使用Turf.js库中的缓冲区分析函数创建缓冲区 var buffered = turf.buffer(turfCircle, 10, {units: 'meters'}); // 将Turf.js图形转换回OpenLayers图形 var bufferedCircle = new ol.geom.Polygon(buffered.geometry.coordinates); // 创建OpenLayers要素并将其添加到地图上 var feature = new ol.Feature(bufferedCircle); var vectorSource = new ol.source.Vector({ features: [feature] }); var vectorLayer = new ol.layer.Vector({ source: vectorSource }); map.addLayer(vectorLayer); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值