GIS開發(fā):geojson數(shù)據(jù)導(dǎo)入mysql數(shù)據(jù)庫
使用nodejs,實現(xiàn)將geojson空間圖層數(shù)據(jù),導(dǎo)入到mysql數(shù)據(jù)庫中。
具體的實現(xiàn)代碼://引用fs、mysql和Geojson2Wkt的類庫
var?fs?=?require("fs");
var?mysql?=?require('mysql');
? ? ?//Geojson2Wkt是將geojson中的坐標(biāo)轉(zhuǎn)換成wkt的形式
var?Geojson2wkt?=?require('Geojson2Wkt');
? ? //設(shè)置mysql的連接信息
var?connection?=?mysql.createConnection({?
??host:?'localhost',?
??user:?'root',?
??password:?'123456',?
??database:?'databasename'
});
//打開數(shù)據(jù)庫連接
connection.connect();
var?sql?=?[];
fs.readFile('geojson圖層文件',?{
??encoding:?"utf-8"
},?(err,?data)?=>?{
??let?jsonobj?=?JSON.parse(data);
??var?arr?=?jsonobj.features;
??var?brr?=?[];
??var?crr?=?[];
??var?drr?=?[];
??var?data?=?[];
??var?k?=?0;
??var?sqla;
//將geojson坐標(biāo)轉(zhuǎn)換成wkt形式
??for?(var?i?=?0;?i?<?arr.length;?i++)?{
????brr[i]?=?arr[i].geometry;
????drr[i]?=?arr[i].properties;?
????crr[i]?=?Geojson2wkt.convert(brr[i]);
??}
??for?(var?j?in?drr[0])?{
????k++;
????data[k]?=?j;
??}
?//獲得geojson數(shù)據(jù)的空間類型,mysql需要根據(jù)不同的空間類型設(shè)置字段
??var?tdata?=?arr[0].geometry.type;
??tdata?=?tdata.toLowerCase();
?//創(chuàng)建mysql數(shù)據(jù)表的sql語句
??sqla?=?"CREATE?TABLE?IF?NOT?EXISTS?`tablename`(?`"?+?data[1]?+?"`??VARCHAR(100)?NOT?NULL,?`"?+?data[2]?+?"`?VARCHAR(100)?NOT?NULL,?`"?+?data[3]?+?"`?VARCHAR(100)?NOT?NULL,?`"?+?data[4]?+?"`?VARCHAR(100)?NOT?NULL,?`"?+?data[5]?+?"`?VARCHAR(100)?NOT?NULL,`geometry`??"?+?tdata?+?"?NOT?NULL)";
??connection.query(sqla);
//拼接sql語句,循環(huán)寫入到圖層中的數(shù)據(jù)
??for?(var?t?=?0;?t?<?arr.length;?t++)?{
????sql[t]?=
?"insert?into?tablename("?+?data[1]?+?","?+?data[2]?+?","?+?data[3]?+?","?+?data[4]?+?","?+?data[5]?+?",?geometry)?values('"?+?drr[t][data[1]]?+?"','"?+?drr[t][data[2]]?+?"',"?+?"'"?+?drr[t][data[3]]?+?"','"?+?drr[t][data[4]]?+?"',"?+?"'"?+?drr[t][data[5]]?+?"'"?+?",GeomFromText('"?+?crr[t]?+?"'))";?
????connection.query(sql[t]);
??}
});