千家信息网

如何进行geojson图层批量坐标转换

发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,今天就跟大家聊聊有关如何进行geojson图层批量坐标转换,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在没有规律的坐标偏移情况下,如国内在线
千家信息网最后更新 2025年02月06日如何进行geojson图层批量坐标转换

今天就跟大家聊聊有关如何进行geojson图层批量坐标转换,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

在没有规律的坐标偏移情况下,如国内在线地图偏移和经纬度转换,可以进行方便进行单个坐标的转换,转换图层就需要自己进行开发了。
这里使用了coordtransform进行偏移坐标的转换。

//引入fs和coordtransform库const fs = require('fs');const coordtransform = require('coordtransform');//geojson矢量对象处理function dataByfeaturetype(_feature) {    this.datafeature = _feature;    this.featuretype = _feature.geometry.type;    this.coords = _feature.geometry.coordinates;    this.newcoords = [];}//点、线、面中数据坐标遍历处理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++) {   //这个根据自己的需要,选择坐标的偏移处理函数        _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++) {//这个根据自己的需要,选择坐标的偏移处理函数            _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;}//根据图层的不同类型,选择处理方法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;    }}//获取数据处理结果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;  //输出处理结果    fs.writeFile("输出geojson", JSON.stringify(_geojsondata), (err) => {        console.log(err);    });});

看完上述内容,你们对如何进行geojson图层批量坐标转换有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

0