二维矢量数据转火星坐标

2022-10-08,,,

本文基于supermap平台实现二维矢量数据的84转火星

步骤:

  1. 在idesktop中把数据转换成wgs84的地理坐标
  2. 在idesktop中,把数据转成geojson。

    注意格式要选择utf-8,不然中文字段会乱码。

  3. 在nodejs下,使用projzh包把wgs84坐标转成火星坐标。
    //index.js文件

    var projzh = require('projzh'); const fs = require('fs'); function ll2gcj(input) { return projzh.datum.gcj02.fromwgs84(input); } var testpath = './region.txt'; var res = json.parse(fs.readfilesync(testpath).tostring()); if(res){ for(var i = 0;i<res.features.length;i++){ let feature = res.features[i]; if(feature.geometry.type === 'polygon'){ for(var j=0;j<feature.geometry.coordinates.length;j++){ for(var k=0;k<feature.geometry.coordinates[j].length;k++){ let lng = feature.geometry.coordinates[j][k][0]; let lat = feature.geometry.coordinates[j][k][1]; var obj = ll2gcj([lng,lat]); feature.geometry.coordinates[j][k][0] = obj[0]; feature.geometry.coordinates[j][k][1] = obj[1]; console.log('i:'+i+';j:'+j+";k:"+k); } } }else if(feature.geometry.type === 'multipolygon'){ for(var j=0;j<feature.geometry.coordinates.length;j++){ for(var k=0;k<feature.geometry.coordinates[j].length;k++){ for(var m=0;m<feature.geometry.coordinates[j][k].length;m++){ let lng = feature.geometry.coordinates[j][k][m][0]; let lat = feature.geometry.coordinates[j][k][m][1]; var obj = ll2gcj([lng,lat]); feature.geometry.coordinates[j][k][m][0] = obj[0]; feature.geometry.coordinates[j][k][m][1] = obj[1]; console.log('i:'+i+';j:'+j+";k:"+k+';m:'+m); } } } }else if(feature.geometry.type === 'linestring'){ for(var j=0;j<feature.geometry.coordinates.length;j++){ let lng = feature.geometry.coordinates[j][0]; let lat = feature.geometry.coordinates[j][1]; var obj = ll2gcj([lng,lat]); feature.geometry.coordinates[j][0] = obj[0]; feature.geometry.coordinates[j][1] = obj[1]; console.log('i:'+i+';j:'+j+";k:"+k); } } } // for(var i =0;i<resdata.length;i++){ // var item= resdata[i]; // var obj = ll2gcj([item.lng,item.lat]); // item.lng = obj[0]; // item.lat = obj[1]; // } console.log('end'); var testpath2 = './regionpolygongcj.txt'; fs.writefilesync(testpath2, json.stringify(res)); }
    先装nodejs环境,在geojson文件所在文件夹下运行node index.js。(region.txt是源文件,regionpolygongcj.txt是转换后的文件,目前支持polygon、multipolygon、linestring)
  4. 在idesktop中,导入geojson格式的火星地理坐标数据。
  5. 在idesktop中,把数据转成自己想要的格式,如3857之类的。

《二维矢量数据转火星坐标.doc》

下载本文的Word格式文档,以方便收藏与打印。