欢迎光临散文网 会员登陆 & 注册

GIS开发:mysql空间数据导出geojson

2022-07-06 09:07 作者:地理信息技术杂谈  | 我要投稿

使用nodejs,实现将mysql数据库中的空间数据表,导出成geojson的矢量图层文件,保存。

安装fs、wellknow和mysql三个nodejs类库:

let fs = require("fs");

let parset = require('wellknown');

let mysql = require('mysql'); 

//创建mysql的数据库连接

let connection = mysql.createConnection({

 //主机地址 (

host     : 'localhost',

//用户名

user     : 'root',

//密码

password : '******',

//在mysql中创建的数据库名

database : 'database'

});

//连接到数据库

connection.connect();

// var tabletype;

let tabledata = [];

//查询空间坐标的数据,并保存

 const sqlb="select st_ASTEXT(geometry) AS geo from dbname";

connection.query(sqlb, function (error, results, fields) {

    for(let k=0;k<results.length;k++){

      let tst={};

      tst =parset(results[k].geo);

      tabledata.push(tst);

    } 

});

//查询空间数据表中的其他属性字段数据,并保存

let sql="select * from dbname";

connection.query(sql , function (error, results, fields) {

    let dataJson  = results;

    let features=[];

    let name =[];

    let n =0; 

    for(let t in dataJson[0] ) {

        n++;

        name[n] =t;

    }

    //将数据库中的数据,拼接成geojson的格式

    for(let i=0;i<dataJson.length;i++){

        let fdata = {};

        let pdata = {};

        fdata["type"]="Feature";

        fdata["properties"] =pdata;

        for(let j=1;j<name.length-1;j++){

         pdata[name[j]] =dataJson[i][name[j]];

        }

        fdata["geometry"] =tabledata[i];

        features.push(fdata);

    }

 //添加geojson的数据头信息

   var road = [] ;

   var roaddata ={};

   roaddata["type"] ="FeatureCollection";

   roaddata["name"] ="roadcenter";

   roaddata["crs"] = { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } };

   roaddata["features"] =features;

   road.push(roaddata);

//保存geojson文件

   var roadjson =JSON.stringify(roaddata);

   fs.writeFileSync('filepath',roadjson);

});


GIS开发:mysql空间数据导出geojson的评论 (共 条)

分享到微博请遵守国家法律