Cussiumオフライン応用を快速に構築する

2361 ワード

CussiumはGISアプリケーションを構築するためのJavascriptオープンソースライブラリであり、Cussiumに基づいてオフラインを迅速に構築するGISアプリケーションdemoを実現します.このアプリケーションはオフラインで地図画像と地形の起伏情報を見ることができます.つまり、オフラインデータセットの2つの部分が含まれています.
  • map imagry
  • terran dataset
  • 地図の映像はたくさんのルートがあります.地図のダウンロード機を使ってダウンロードできます.自分で作るのがおっくうなら、これは全世界の0-7級の地図のテスト映像です.
    地形データセットはSRTMオープンデータに基づいて作成され、dockerのこのイメージ:tumgis/ctb-quantizd-meshを使ってQuantized-Mesh形式のデータセットを作成し、SRTMのデータsrtm_56_05(嘉峪関市空港近く)を例に、地形データ集を作成する手順は私のこの文章を参考にしてください.
    オフラインの地図と地形データ集があったら、コードを書いてもいいです.下にnodeに基づいて簡単なサーバーdemoを作ります.
    ディレクトリ構造は以下の通りです.
    .
    ├── node_modules
    │   ├── .....
    ├── package-lock.json
    ├── package.json
    ├── public
    │   ├── js
    │   ├── map
    │   ├── terrain
    ├── server.js
    └── views
        └── index.html
    
    server.jsのコード例は以下の通りです.
    let express = require("express")
    let url = require('url')
    let path = require('path')
    
    let app = express()
    
    let options = {
        maxAge: 3600000
    };
    
    //       
    app.use(function(req, res, next) {
        res.header('Access-Control-Allow-Origin', '*');
        res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
        next();
    });
    
    //       
    app.use(function (req, res, next) {
        //       ,  heightMap Quantized-Mesh
        let filePath = path.join(__dirname, url.parse(req.url).pathname);
        let pathTmep = path.extname(filePath)
        if (pathTmep === '.terrain') {
            res.set({
                'Content-Type': 'application/octet-stream',
                'Content-Encoding': 'gzip',
            });
            // Content-Disposition: attachment;filename=2948.terrain
            res.set('Content-Disposition', 'attachment;filename='+path.basename(filePath))
        }
        next();
    })
    
    app.get("/", function (req, res, next) {
        res.sendFile(path.join(__dirname + '/views/index.html'));
    })
    
    //            ,             http    
    app.use(express.static(__dirname + "/node_modules/cesium/Build", options));
    app.use(express.static(__dirname + "/public", options));
     
    //        
    app.use(function (req, res, next) {
        res.status(404).send('So sorry, we cannot find that!');
    })
    
    app.listen("8080", "localhost")
    
    これは完全なデモです.ダウンロードしてnpm install & node server.js have fun.