天天看點

GIS開發:geojson資料導入mysql資料庫

使用nodejs,實作将geojson空間圖層資料,導入到mysql資料庫中。

具體的實作代碼:

//引用fs、mysql和Geojson2Wkt的類庫
var fs = require("fs");
var mysql = require('mysql');
     //Geojson2Wkt是将geojson中的坐标轉換成wkt的形式
var Geojson2wkt = require('Geojson2Wkt');
    //設定mysql的連接配接資訊
var connection = mysql.createConnection({ 
  host: 'localhost', 
  user: 'root', 
  password: '123456', 
  database: 'databasename'
});
//打開資料庫連接配接
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坐标轉換成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資料的空間類型,mysql需要根據不同的空間類型設定字段
  var tdata = arr[0].geometry.type;
  tdata = tdata.toLowerCase();
 //建立mysql資料表的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語句,循環寫入到圖層中的資料
  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]);
  }
});
           

更多文章請關注公衆号檢視!

GIS開發:geojson資料導入mysql資料庫