二维矢量数据转火星坐标
程序员文章站
2022-03-25 16:26:06
本文基于Supermap平台实现二维矢量数据的84转火星。 步骤: 在iDesktop中把数据转换成wgs84的地理坐标系 在iDesktop中,把数据转成geojson。 注意格式要选择utf-8,不然中文字段会乱码。 在nodejs下,使用projzh包把wgs84坐标转成火星坐标。 //ind ......
本文基于supermap平台实现二维矢量数据的84转火星。
步骤:
- 在idesktop中把数据转换成wgs84的地理坐标系
- 在idesktop中,把数据转成geojson。
注意格式要选择utf-8,不然中文字段会乱码。
- 在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)
- 在idesktop中,导入geojson格式的火星地理坐标数据。
- 在idesktop中,把数据转成自己想要的格式,如3857之类的。
下一篇: JVM系列十二(类加载机制).