一、什么是叠加分析
1-1、基本概念
叠加分析是地理信息系统最常用的提取空间隐含信息的手段之一。该方法源于传统的透明材料叠加,即将来自不同的数据源的图纸绘于透明纸上,在透光桌上将其叠放在一起,然后用笔勾出感兴趣的部分或提取感兴趣的信息。
1-2、计算公式
1-3、应用场景
比如,现在城市规划需要建一个新的大型商场,将规划的新图层于旧城区居民的图层叠加分析,就可以得出那些小区要拆迁。
如规划一条铁路,将规划的图层和农田图层叠加分析,决定需要征用田地的补偿预算款型。
二、步骤
- 输入数据- 叠加数据- 显示结果
三、示例

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./dist/include-openlayers-local.js"></script><script src="./libs/gaode.js"></script></head><body><button onclick="overAnalysis()">叠加分析</button><div id="map_container"></div><script>/* 模拟居民区 */const vectorData = 'gdbp://MapGISLocalPlus/gis0517/sfcls/Area'const vecLayer = new Zondy.Map.GdbpLayer('',[vectorData], {ip: 'localhost',port: '6163'})var map = new ol.Map({target: "map_container",layers: [gaode,vecLayer],view: new ol.View({projection: 'EPSG:4326',center: [114.30, 30.50],zoom: 4})})/* 叠加分析 */let resultname;function overAnalysis() {//2.1设置要叠加的多边形//模拟商圈const geoRegion = new Zondy.Object.GRegion([new Zondy.Object.AnyLine([new Zondy.Object.Arc([new Zondy.Object.Point2D(100, 33),new Zondy.Object.Point2D(100, 22),new Zondy.Object.Point2D(115, 22),new Zondy.Object.Point2D(115, 33),new Zondy.Object.Point2D(190, 33)],0)])],0)resultname = 'gdbp://MapGISLocalPlus/gis0517/sfcls/Area'+Date.now();//2.2 创建叠加分析服务var overlayParam = new Zondy.Service.OverlayByPolygon({ip: 'localhost',port: '6163', //访问IGServer的端口号,.net版为6163,Java版为8089,//设置被叠加图层URLsrcInfo1: vectorData,//设置结果URLdesInfo: resultname,//设置多边形坐标序列化对象strGRegionXML: JSON.stringify(geoRegion),//多边形字符串输入格式inFormat: 'json',//设置结果图层的图形参数信息infoOptType:2,//求交overType: 1,//允许重算面积isReCalculate: true,//容差半径radius: 0.05,})//2.3 执行叠加分析//调用基类的execute方法,执行叠加分析,onSuccess为结果回调函数overlayParam.execute(onSuccess,'post',false,'json',onError)}//2-4、分析结果显示到地图容器上function onSuccess(result){console.log(result)if(result.succeed){map.removeLayer(vecLayer)console.log(resultname)const resultLayer = new Zondy.Map.GdbpLayer('',[resultname],{ip:'localhost',port:'6163'})map.addLayer(resultLayer)}}function onError(err){console.log(err)}</script></body></html>
