您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)如何進(jìn)行g(shù)eojson圖層批量坐標(biāo)轉(zhuǎn)換,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
//引入fs和coordtransform庫(kù) const fs = require('fs'); const coordtransform = require('coordtransform'); //geojson矢量對(duì)象處理 function dataByfeaturetype(_feature) { this.datafeature = _feature; this.featuretype = _feature.geometry.type; this.coords = _feature.geometry.coordinates; this.newcoords = []; } //點(diǎn)、線、面中數(shù)據(jù)坐標(biāo)遍歷處理 dataByfeaturetype.prototype.handlePoint = function () { this.newcoords = coordtransform.wgs84togcj02(this.coords[0], this.coords[1]); } dataByfeaturetype.prototype.handleMultipointOrLinestring = function () { let _tempCoords = []; for (let _udx = 0; _udx < this.coords.length; _udx++) { //這個(gè)根據(jù)自己的需要,選擇坐標(biāo)的偏移處理函數(shù) _tempCoords.push(coordtransform.wgs84togcj02(this.coords[_udx][0], this.coords[_udx][1])); } this.newcoords = _tempCoords; } dataByfeaturetype.prototype.handleMultiLineStringOrPolygon = function () { let _tempCoords = []; for (let _udx = 0; _udx < this.coords.length; _udx++) { let _evCoords = []; for (let _ndx = 0; _ndx < this.coords[_udx].length; _ndx++) { //這個(gè)根據(jù)自己的需要,選擇坐標(biāo)的偏移處理函數(shù) _evCoords.push(coordtransform.wgs84togcj02(this.coords[_udx][_ndx][0], this.coords[_udx][_ndx][1])); } _tempCoords.push(_evCoords); } this.newcoords = _tempCoords; } dataByfeaturetype.prototype.handleMultiPolygon = function () { let _tempCoords = []; for (let _udx = 0; _udx < this.coords.length; _udx++) { let _polygons = []; for (let _ndx = 0; _ndx < this.coords[_udx].length; _ndx++) { let _polygon = []; for (let _tdx = 0; _tdx < this.coords[_udx][_ndx].length; _tdx++) { _polygon.push(coordtransform.wgs84togcj02(this.coords[_udx][_ndx][_tdx][0], this.coords[_udx][_ndx][_tdx][1])); } _polygons.push(_polygon); } _tempCoords.push(_polygons); } this.newcoords = _tempCoords; } //根據(jù)圖層的不同類型,選擇處理方法 dataByfeaturetype.prototype.handleByType = function () { switch (this.featuretype) { case "Point": this.handlePoint(); break; case "MultiPoint": case "LineString": this.handleMultipointOrLinestring(); break; case "MultiLineString": case "Polygon": this.handleMultiLineStringOrPolygon(); break; case "MultiPolygon": this.handleMultiPolygon(); break; } } //獲取數(shù)據(jù)處理結(jié)果 dataByfeaturetype.prototype.getResult = function () { this.datafeature.geometry.coordinates = this.newcoords; return this.datafeature; }; //輸入文件 fs.readFile('輸入geojson文件', { encoding: 'utf-8' }, (err, res) => { if (err) return; let _geojsondata = JSON.parse(res); let _newfeatures = []; let _features = _geojsondata.features; for (let _fdx = 0; _fdx < _features.length; _fdx++) { let _feature = _features[_fdx]; let _featurehandle = new dataByfeaturetype(_feature); _featurehandle.handleByType(); _newfeatures.push(_featurehandle.getResult()); } _geojsondata.features = _newfeatures; //輸出處理結(jié)果 fs.writeFile("輸出geojson", JSON.stringify(_geojsondata), (err) => { console.log(err); }); });
看完上述內(nèi)容,你們對(duì)如何進(jìn)行g(shù)eojson圖層批量坐標(biāo)轉(zhuǎn)換有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。