欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

二维矢量数据转火星坐标

程序员文章站 2022-03-25 16:26:06
本文基于Supermap平台实现二维矢量数据的84转火星。 步骤: 在iDesktop中把数据转换成wgs84的地理坐标系 在iDesktop中,把数据转成geojson。 注意格式要选择utf-8,不然中文字段会乱码。 在nodejs下,使用projzh包把wgs84坐标转成火星坐标。 //ind ......

本文基于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之类的。