2014-03-31 30 views
0

我正在努力阅读Node.js/express.js中的geojson文件。我读“output.geojson” 我不想使用JSON.parse.But我想用express.js加载(或至少JSON呈现此函数内)如何在expresss.js中加载geojson文件

var o = require('output.geojson'); 

app.get('/points.geojson', function(req, res) { 
     res.json(o); 
     console.log(res) 
}); 

但我得到这个错误:

Users/macbook/leaflet-geojson-stream/output.geojson:1 
(function (exports, require, module, __filename, __dirname) { "type":"FeatureC 

                   ^
SyntaxError: Unexpected token : 
    at Module._compile (module.js:439:25) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (/Users/macbook/leaflet-geojson-stream/example/server.js:15:9) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 

geojson文件看起来像。

{ 
"type": "FeatureCollection", 
"features": [{ 
    "geometry": { 
     "type": "MultiPolygon", 
     "coordinates": [ 
      [ 
       [ 
        [-73.8283219965448, 40.8446061654002], 
        [-73.828397789942, 40.844583182304], 
        [-73.8285477331865, 40.8448132168025], 
        [-73.8284744943625, 40.8448401137412], 
        [-73.8283219965448, 40.8446061654002] 
       ] 
      ] 
     ] 
    }, 
    "type": "Feature", 
, { 
    "geometry": { 
     "type": "MultiPolygon", 
     "coordinates": [ 
      [ 
       [ 
        [-73.832361912256, 40.8488019205992], 
        [-73.832369554769, 40.8487286684528], 
        [-73.8327312374341, 40.8487518102579], 
        [-73.8327304815978, 40.8487590590352], 
        [-73.8327235953166, 40.8488250624279], 
        [-73.832361912256, 40.8488019205992] 
       ] 
      ] 
     ] 
    }, 
    "type": "Feature" 
} 
.... 
.... 
} 

如何加载geojson文件?

回答

1

您当前正在通过'需要'将整个JSON文件加载到内存中。

而是要传输的文件,因为它大,所以使用fs.createReadStream功能:

var fs = require('fs'); 

app.get('/points.geojson', function(req, res) { 
    res.setHeader('Content-Type', 'application/json'); 
    fs.createReadStream(__dirname + '/output.geojson').pipe(res); 
}); 

还要确保的/output.geojson内容实际上是有效的JSON。您可以使用JSONLint来检查 - 文件应该带有'{'或'[',并且没有Javascript功能。