使用nodejs,实现将mysql数据库中的空间数据表,导出成geojson的矢量图层文件,保存。
安装fs、wellknow和mysql三个nodejs类库:
let fs = require("fs");
letparset = require('wellknown');
letmysql = require('mysql');
//创建mysql的数据库连接
letconnection = mysql.createConnection({
//主机地址 (
host : 'localhost',
//用户名
user : 'root',
//密码
password : '******',
//在mysql中创建的数据库名
database : 'database'
});
//连接到数据库
connection.connect();
// var tabletype;
lettabledata = [];
//查询空间坐标的数据,并保存
constsqlb="select st_ASTEXT(geometry) AS geo from dbname";
connection.query(sqlb, function (error, results, fields) {
for(letk=0;k
lettst={};
tst =parset(results[k].geo);
tabledata.push(tst);
}
});
//查询空间数据表中的其他属性字段数据,并保存
letsql="select * from dbname";
connection.query(sql , function (error, results, fields) {
let dataJson = results;
letfeatures=[];
letname =[];
letn =0;
for(lett in dataJson[0] ) {
n++;
name[n] =t;
}
//将数据库中的数据,拼接成geojson的格式
for(leti=0;i
letfdata = {};
letpdata = {};
fdata["type"]="Feature";
fdata["properties"] =pdata;
for(letj=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);
});