美文网首页
openlayers3之jsts空间分析完整例子

openlayers3之jsts空间分析完整例子

作者: 我是兰小莫 | 来源:发表于2019-09-30 16:59 被阅读0次

    接着上一篇,把上一篇相关的完整代码写出来。

    <!DOCTYPE html>
    <html>
      <head>
        <title>jsts sample</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="ol3/ol.css" type="text/css">
         <script src="ol3/ol.js" type="text/javascript"></script>
         <script src="ol3/proj4.js" type="text/javascript"></script>
         <script src="ol3/jsts.js" type="text/javascript"></script>
      </head>
      <style>
        .map{
            height:600px;
        }
      </style>
      <body>
        <div id="map" class="map"></div>
        <script>  
          var proj = new ol.proj.Projection({
                code: 'EPSG:4326',
                extent:[113.36672963700005,23.125302196000064, 113.36790226200003, 23.12607775300006],
                units: 'degrees',
                axisOrientation: 'neu'
          });   
          var map = new ol.Map({
             target: 'map',
             controls: ol.control.defaults({
                attribution: false,
                rotate: false,
                zoom: false
                           }),
            view: new ol.View({
              projection:proj,
              //projection:'EPSG:4326',
              center: [113.36733018908569, 23.125607531477872],
              zoom: 4
            })
          });
          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 (113.36733018908569 23.125607531477872)";
          var wkt2="POINT (113.36734010607498 23.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(0.00001);
          var buffer2=jstsgeo2.buffer(0.00001);
          //相交
          //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]
                })    
          });
          map.addLayer(pg_vector);
          map.addLayer(intersect_vector);
          map.addLayer(pt_vector);
        </script>
      </body>
    </html>
    

    项目的源码,可以去GitHub上找到我的源代码。附上链接:https://github.com/mzlan/jsts/tree/master ,成果展示链接 https://mzlan.github.io/jsts/jsts.html

    相关文章

      网友评论

          本文标题:openlayers3之jsts空间分析完整例子

          本文链接:https://www.haomeiwen.com/subject/gekhpctx.html