使用Node.js和PostGis加载数据

时间:2014-05-23 19:21:43

标签: javascript jquery node.js

我有一个巨大的数据点文件,我想加载它们。我正在使用Leaflet(前端)/Node.Js(后端)

我想加载边框内的数据。 我有两个选择:

  • 使用Node.Js
  • 使用Leaflet(这是个坏主意,'因为文件是两个巨大的 处理)

现在我想在移动浏览器时加载数据,对我来说令人困惑的部分是,如何从前端的每次移动中每次加载文件

移动/缩放页面(前端)---->获得边界 - >在Node.JS Side(后端) - >通过使用ORM查询PostGis加载数据 - >把它写在geojson文件上--->使用前端部分绘制数据

main.js

1-检测移动/放大     ...     map.on(' dragend',getPins);     map.on(' zoomend',getPins);     ......

function getPins(e){
    bounds = map.getBounds();
    var latMax = map.getBounds().getNorthEast().lat();
    var lngMax = map.getBounds().getNorthEast().lng();
    var latMin = map.getBounds().getSouthWest().lat();
    var lngMin = map.getBounds().getSouthWest().lng();
    var centerLATT = map.getCenter().lat();
    var centerLON = map.getCenter().lng();
    var centerZOOM = map.getZoom();
}

Node.Js / Express

var express = require('express');
var app = new express();
app.use(express.json());
app.use(express.static(__dirname + '/public'));
var port = Number(process.env.PORT || 5000);
app.listen(port);

2-节点模块,用于从此thread

返回PostGIS查询

我想通过从Postgis加载来更新这一点

var postgeo = require("postgeo");

postgeo.connect("postgres://user@host:port/database");

postgeo.query(
    'SELECT gid,name,ST_X(the_geom) as longitude,ST_Y(the_geom) as latitude FROM  GeoDataTable WHERE ST_Intersects( ST_MakeEnvelope('+latMax+", "+lngMax+", "+latMin+", "+lngMin" ', function(data) {

    for(i=0; i<data.rows.length; i++){
        var feature = new Feature();
        feature.geometry = JSON.parse(result.rows[i].locale);
        feature.properties = {"TTL", result.rows[i].ttl};
        featureCollection.features.push(feature);
    }
});

问题是如何将latMax,lngMax,latMin,lngMin从前端传递到后端,并自动将从数据库加载的json文件从后端传递到前端。

1 个答案:

答案 0 :(得分:-2)

您可以使用socket.io与node.js服务器实时与浏览器进行通信。

你的问题很通用,所以这里需要很多编码来解决你的问题,但基本上你可以使用socket.io库中的socket.emit函数将数据从浏览器发送到服务器,并将服务器返回浏览器。