一、什么是叠加分析

1-1、基本概念

叠加分析是地理信息系统最常用的提取空间隐含信息的手段之一。该方法源于传统的透明材料叠加,即将来自不同的数据源的图纸绘于透明纸上,在透光桌上将其叠放在一起,然后用笔勾出感兴趣的部分或提取感兴趣的信息。
2、叠加分析 - 图1

1-2、计算公式

2、叠加分析 - 图2

1-3、应用场景

比如,现在城市规划需要建一个新的大型商场,将规划的新图层旧城区居民的图层叠加分析,就可以得出那些小区要拆迁。
如规划一条铁路,将规划的图层和农田图层叠加分析,决定需要征用田地的补偿预算款型。

二、步骤

  1. - 输入数据
  2. - 叠加数据
  3. - 显示结果

三、示例

02.png

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <script src="./dist/include-openlayers-local.js"></script>
  8. <script src="./libs/gaode.js"></script>
  9. </head>
  10. <body>
  11. <button onclick="overAnalysis()">叠加分析</button>
  12. <div id="map_container">
  13. </div>
  14. <script>
  15. /* 模拟居民区 */
  16. const vectorData = 'gdbp://MapGISLocalPlus/gis0517/sfcls/Area'
  17. const vecLayer = new Zondy.Map.GdbpLayer(
  18. '',
  19. [vectorData], {
  20. ip: 'localhost',
  21. port: '6163'
  22. }
  23. )
  24. var map = new ol.Map({
  25. target: "map_container",
  26. layers: [gaode,vecLayer],
  27. view: new ol.View({
  28. projection: 'EPSG:4326',
  29. center: [114.30, 30.50],
  30. zoom: 4
  31. })
  32. })
  33. /* 叠加分析 */
  34. let resultname;
  35. function overAnalysis() {
  36. //2.1设置要叠加的多边形
  37. //模拟商圈
  38. const geoRegion = new Zondy.Object.GRegion(
  39. [
  40. new Zondy.Object.AnyLine([
  41. new Zondy.Object.Arc(
  42. [
  43. new Zondy.Object.Point2D(100, 33),
  44. new Zondy.Object.Point2D(100, 22),
  45. new Zondy.Object.Point2D(115, 22),
  46. new Zondy.Object.Point2D(115, 33),
  47. new Zondy.Object.Point2D(190, 33)
  48. ],
  49. 0
  50. )
  51. ])
  52. ],
  53. 0
  54. )
  55. resultname = 'gdbp://MapGISLocalPlus/gis0517/sfcls/Area'+Date.now();
  56. //2.2 创建叠加分析服务
  57. var overlayParam = new Zondy.Service.OverlayByPolygon({
  58. ip: 'localhost',
  59. port: '6163', //访问IGServer的端口号,.net版为6163,Java版为8089,
  60. //设置被叠加图层URL
  61. srcInfo1: vectorData,
  62. //设置结果URL
  63. desInfo: resultname,
  64. //设置多边形坐标序列化对象
  65. strGRegionXML: JSON.stringify(geoRegion),
  66. //多边形字符串输入格式
  67. inFormat: 'json',
  68. //设置结果图层的图形参数信息
  69. infoOptType:2,
  70. //求交
  71. overType: 1,
  72. //允许重算面积
  73. isReCalculate: true,
  74. //容差半径
  75. radius: 0.05,
  76. })
  77. //2.3 执行叠加分析
  78. //调用基类的execute方法,执行叠加分析,onSuccess为结果回调函数
  79. overlayParam.execute(
  80. onSuccess,
  81. 'post',
  82. false,
  83. 'json',
  84. onError
  85. )
  86. }
  87. //2-4、分析结果显示到地图容器上
  88. function onSuccess(result){
  89. console.log(result)
  90. if(result.succeed){
  91. map.removeLayer(vecLayer)
  92. console.log(resultname)
  93. const resultLayer = new Zondy.Map.GdbpLayer('',[resultname],{
  94. ip:'localhost',
  95. port:'6163'
  96. })
  97. map.addLayer(resultLayer)
  98. }
  99. }
  100. function onError(err){
  101. console.log(err)
  102. }
  103. </script>
  104. </body>
  105. </html>