首页 > 编程知识 正文

栅格数据可以做缓冲区吗,gis道路缓冲区分析

时间:2023-05-04 09:36:54 阅读:120151 作者:1064

效果是点缓冲区和点数据分析的15000点

代码添加缓冲区/* * * @说明:初始化点缓冲区* @param centerPoint缓冲区中心点* @ param数据点缓冲区分析的数据* @ param缓冲区距离缓冲区@return ptsWithin缓冲区分析结果*/initpointbuffer(centerpoint,数据点,buffer distance (this.removebufferpolygon ) ); let point=centerPoint? 中心点: [ ]; let center points=数据点? 数据点: [ ]; let viewer=this.viewer; this.addpoint(point,viewer ); 添加turf对象并加载缓冲区面letpointf=turf.point(point ); letbuffered=Turf.buffer(pointf,bufferDistance,{ units: 'meters' }; letbufferedgeometry=buffered.geometry.coordinates [0]; let coordinates=buffered.geometry.coordinates; let points=coordinates[0]; letdegreesarray=this.pointstodegreesarray (points ); let deg1=cesium.cartesian3. fromdegreesarray (degrees array ); this.addbufferpolygon(deg1; //turf面let searchWithin=[]; search within.push (缓冲几何; letsearchwithinentity=cesium.turf.polygon (search within ); 几何图形点let Towerspoints=[]; for(letI=0; i centerPoints.length; I ) { let feature=new对象(; feature.type='Feature '; feature.properties={ name : center points [ I ].id }; //feature.collection=center points [ I ]._ collection; ea ture.geometry={ type : ' point ',coordinates : [ center points [ I ].lat,centerPoints[i].lon]; Towerspoints.push(feature ); } lettowerscollection={ type : ' feature collection ',features: Towerspoints,}; //turf判断电气面交叉,返回结果值letptswithin=cesium.turf.pointswithinpolygon (towers collection,searchWithinEntity )。 返回pts within; }/* * * @描述:缓冲区中心点* @param point坐标点* @param viewer地图视图*@return*/addpoint(point,viewer (viewer. ) point: { pixelSize: 10,color: Cesium.Color.AQUA,outlineWidth: 3,

outlineColor: Cesium.Color.CHARTREUSE.withAlpha(0.4), } }); }/** * @Description: 添加缓冲面 * @param positions 笛卡尔坐标系位置 * @return */ addBufferPolygon(positions) { this.viewer.entities.add({ id:"bufferPolygon", polygon: { hierarchy: new Cesium.PolygonHierarchy(positions), material: Cesium.Color.RED.withAlpha(0.6), classificationType: Cesium.ClassificationType.BOTH }, }); } /** * @Description: 格式转换 * @param points 点坐标 * @return degreesArray 坐标系 */ pointsToDegreesArray(points) { let degreesArray = []; points.map(item => { degreesArray.push(item[0]); degreesArray.push(item[1]); }); return degreesArray; }

调用

class CesiumUtile { //初始化地图 static initCesium(divMapId) { let options = { selectionIndicator: false, homeButton: false,//主页按钮,默认true // scene3DOnly: true, // 每个几何实例仅以3D渲染以节省GPU内存 animation: false, //动画控制,默认true baseLayerPicker: false, //是否显示图层选择控件 geocoder: false,//地名查找,默认true timeline: false,//时间线,默认true navigationHelpButton: false,//导航帮助说明,默认true sceneModePicker: false,//是否显示投影方式控件 infoBox: false,//点击要素之后显示的信息,默认true fullscreenButton: false,//全屏按钮,默认显示true navigationInstructionsInitiallyVisible: false, mapMode2D: Cesium.MapMode2D.INFINITE_SCROLL, imageryProvider: new Cesium.WebMapTileServiceImageryProvider({ url: "地图地址", layer: "tdtBasicLayer", style: "default", maximumLevel: 18, format: "image/jpeg", tileMatrixSetID: "GoogleMapsCompatible", show: true, subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"] }), } let viewer = new Cesium.Viewer(divMapId, options); window.selfDefine.viewer = viewer; this.viewer = viewer; viewer.scene.globe.depthTestAgainstTerrain = false; viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(105.973421, 38.757527, 7000000.0), duration: 4 }) let _this = this; this.jsonDatas = []; //保存json對象 for (let i = 0;i < 15000; i ++){ let ran1 = 118.81 + parseInt(Math.random() * 100000).toString(); let ran2 = 32.01 + parseInt(Math.random() * 10000).toString(); let point1 = Number(ran1); let point2 = Number(ran2); _this.jsonDatas.push({ id:"bufferPoint" + i, lat: ran1, lon: ran2, }) _this.addPoint(i,point1,point2); } this._personInfo(); } static addPoint(index, point1, point2){ this.viewer.entities.add({ id: "bufferPoint"+ index, position: Cesium.Cartesian3.fromDegrees(point1, point2, 0), point: { pixelSize: 10, color: Cesium.Color.YELLOW, outlineWidth: 3, outlineColor: Cesium.Color.YELLOW.withAlpha(0.4), } }); } // region添加缓冲区 static _personInfo() { let viewer = window.selfDefine.viewer; this.bufferAn = new bufferAnalysis(viewer); let centerPoint = [118.809666, 32.0145666]; let arrayData = []; //globalVar.pollutionData; let dataPoint = this.jsonDatas; // for(let item in arrayData){ // dataPoint = dataPoint.concat((arrayData[item][0])); // } let bufferResult = this.bufferAn.initPointBuffer(centerPoint, dataPoint, 3000); console.log("bufferResultData:", bufferResult); // store.commit("setBufferResult", bufferResult); // bufferRe.methods.updateBufferData(); } // 删除缓冲区 static _removeBuffer(){ this.bufferAn && this.bufferAn.removeBufferPolygon(); } // endregion}

参考turf官网

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。