操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    JavaScript 網(wǎng)頁(yè)異常捕獲

    一、異常大概分類

    一般我們想要捕獲的異常大概分類:

    • 語(yǔ)法錯(cuò)誤
      • onerror 事件代碼塊與語(yǔ)法錯(cuò)誤代碼塊不在一起,例如trycatche
      • 或者同在一個(gè)代碼塊,但是語(yǔ)法錯(cuò)誤代碼塊異步執(zhí)行
    • 以上情況都可以用onerror捕獲語(yǔ)法錯(cuò)誤
    • setTimeout(() => { eval('function()') }, 1000); // Uncaught SyntaxError: Function statements require a function name 復(fù)制代碼
    • 引用錯(cuò)誤,類型錯(cuò)誤,uri 錯(cuò)誤,范圍錯(cuò)誤等等
    • 非try catch包裹情況下,可以使用 onerror 捕獲同步錯(cuò)誤、異步錯(cuò)誤
    • console.log(a) // Uncaught ReferenceError: a is not defined Array.test() // 調(diào)用了 Array 上不存在的 test,值為 undefined,作為函數(shù)執(zhí)行,則會(huì)拋出類型錯(cuò)誤 // Uncaught TypeError: Array.test is not a function new Array(12221312312) // Uncaught RangeError: Invalid array length decodeURI('%') // Uncaught URIError: URI malformed 復(fù)制代碼
    • try{} catch{}
    • 若 try 代碼塊報(bào)錯(cuò),只能在 catch 中捕獲。但是 try 代碼塊中若有異步錯(cuò)誤代碼,catch 無(wú)法捕獲,會(huì)被 onerror 捕獲
    • try { setTimeout(() => { console.log('a', a) // 可以被 onerror 捕獲 }, 1000) } catch(e) { console.log('e', e) } // Uncaught ReferenceError: a is not defined 復(fù)制代碼
    • Promise 拋出錯(cuò)誤
      • 沒(méi)有設(shè)置 catch 捕獲
    • let p = new Promise((resolve, reject) => { reject(1) } ) // 這里沒(méi)有做 catch 處理 // Uncaught (in promise) 1 復(fù)制代碼
      • 在 catch 中報(bào)錯(cuò)沒(méi)有捕獲
    • ;(async function xx() { try { throw 1 } catch(e) { console.log('a', a) // 這里出錯(cuò)可以使用 unhandledrejection 來(lái)捕獲 } })() // Uncaught ReferenceError: a is not defined 復(fù)制代碼
    • 上面兩種情況可以監(jiān)聽(tīng) unhandledrejection 捕獲錯(cuò)誤
    • window.addEventListener('unhandledrejection', function(e) { // e.preventDefault(); // 阻止異常向上拋出 console.log('捕獲到異常 unhandledrejection :', e) }) 復(fù)制代碼
    • 靜態(tài)資源加載失敗
      • 在資源上添加 onerror 事件
    • // html // <img src="" alt="" id="imgID"> // js let imgID = document.getElementById('imgID') imgID.onerror = function(e) { console.log('img load error :>> ', e); } // 注意:onerror 需要定義之后,再設(shè)置圖片路徑,才能捕獲到加載失敗 imgID.src = 'http://xxx.png' 復(fù)制代碼
      • 靜態(tài)資源網(wǎng)絡(luò)請(qǐng)求失敗事件不會(huì)冒泡,需要在捕獲階段捕獲
    • chrome、FF 中可以通過(guò)冒泡方式監(jiān)聽(tīng) error 事件捕獲資源加載失敗
    • // 注意:此處會(huì)與上面的 onerror 事件一起觸發(fā),將導(dǎo)致日志重復(fù)上報(bào) // 可以只使用 addEventListener 捕獲模式統(tǒng)一監(jiān)聽(tīng), 就不需要注冊(cè) window.onerror 了 window.addEventListener( 'error', error => { console.log('addEventListener 捕獲到異常:', error) }, true ) 復(fù)制代碼
    • 網(wǎng)頁(yè)崩潰
      • 網(wǎng)頁(yè)加載后,埋入一個(gè)標(biāo)志,表示正在加載
    • // 初次進(jìn)來(lái),將埋入一個(gè)標(biāo)志,值為 pending ,正常退出后,會(huì)設(shè)置為 true // 若網(wǎng)頁(yè)崩潰,第二次回來(lái)頁(yè)面后,讀取當(dāng)前標(biāo)志,如果值存在且為 true 則表示正常退出 // 如果不是 true ,則表示上次可能是崩潰了,需要上報(bào)之前定時(shí)更新的時(shí)間值 if(localStorage.getItem('good_exit') && localStorage.getItem('good_exit') !== 'true') { localStorage.getItem('time_before_crash') // 日志上報(bào),將崩潰之前的時(shí)間一起上報(bào) } window.addEventListener('load', function () { localStorage.setItem('good_exit', 'pending'); // 定時(shí)更新崩潰之前的網(wǎng)頁(yè)時(shí)間 setInterval(function () { localStorage.setItem('time_before_crash', new Date().toString()); }, 10000); }) window.addEventListener('beforeunload', function () { // 網(wǎng)頁(yè)正常退出后,將埋入標(biāo)志,設(shè)置成 true,表示正常退出 localStorage.setItem('good_exit', 'true'); }) 復(fù)制代碼
    • 上面是在 第二次 進(jìn)入頁(yè)面才知道網(wǎng)頁(yè)崩潰,那么有什么方法可以在網(wǎng)頁(yè)崩潰之后就可以上報(bào)呢
      • 可以使用 Service Worker 來(lái)進(jìn)行監(jiān)控
    • 其生命周期與頁(yè)面無(wú)關(guān)(關(guān)聯(lián)頁(yè)面未關(guān)閉時(shí),它也可以退出,沒(méi)有關(guān)聯(lián)頁(yè)面時(shí),它也可以啟動(dòng))
    • 1、注冊(cè) service worker js 2、 每間隔 10 秒,就向 worker 發(fā)送消息 消息中包含: { type 字段:active 表示正常活躍,exit 表示正常退出 time 字段:表示當(dāng)前時(shí)間 } 在頁(yè)面要退出后,發(fā)送 type: exit,表示正常退出 3、 worker 內(nèi)部注冊(cè)有消息接收事件,接收頁(yè)面發(fā)送過(guò)來(lái)的消息 接收到 type 為 active,表示正常活躍,更新內(nèi)部 time 的值 接收到 type 為 exit,表示正常退出,更新內(nèi)部 time 值為 0 worker 內(nèi)部維護(hù)一個(gè)狀態(tài)對(duì)象,包含時(shí)間,值為頁(yè)面發(fā)送過(guò)來(lái) 每隔 15 秒檢查一次,若時(shí)間與上一次沒(méi)有改變,則說(shuō)明頁(yè)面可能崩潰(注意區(qū)分 time 為 0 的情況) 復(fù)制代碼
    • Script Error
    • 跨域腳本的錯(cuò)誤信息,因?yàn)樘幱诒Wo(hù)信息的原因,只會(huì)展示 Script Error, 通過(guò)以下方式解決
    • 1、外鏈腳本增加 crossorigin 屬性:<script crossorigin src="http://other-domain.js"></script> 2、同時(shí)腳本的 Access-Control-Allow-Origin: 設(shè)置為 * 或者 當(dāng)前域名 復(fù)制代碼
    • iframe Error
    • <iframe src="./test.html"></iframe> <script> window.frames[0].onerror = function(msg, source, lineno, colno,error) { console.log('frames onerror :>> ', msg,source,lineno,colno,error) } </script> 復(fù)制代碼
    • vue 自身 try catch 處理了錯(cuò)誤,導(dǎo)致我們無(wú)法捕獲
    • 使用 Vue 提供的 errorHandler 方法捕獲
    • Vue.config.errorHandler = function(err, vm, info) { let { message, // 異常信息 name, // 異常名稱 script, // 異常腳本url line, // 異常行號(hào) column, // 異常列號(hào) stack // 異常堆棧信息 } = err // vm 為拋出異常的 Vue 實(shí)例 // info 為 Vue 特定的錯(cuò)誤信息,比如錯(cuò)誤所在的生命周期鉤子 console.log('vue err,vm,info :>> ', err, vm, info) } 復(fù)制代碼

    所以捕獲錯(cuò)誤總結(jié)下來(lái):

    // 1、try catch 中的 catch 錯(cuò)誤捕獲 
    可以在 webpack 打包時(shí)候,使用 AST 方式解析并在 catch 中插入日志上報(bào)代碼
    // 2、error 事件
    window.addEventListener( 'error', error => { 
        let data = {} // 此處與上面的 onerror 會(huì)重復(fù)事件 
        let { colno, lineno, message, filename, error, stack } = error //不一定所有瀏覽器都支持 colno 參數(shù) 
        let col = colno || (window.event && window.event.errorCharacter) || 0 
        data.url = url 
        data.line = line 
        data.col = col 
        if (!!stack){ 
            //如果瀏覽器有堆棧信息 
            //直接使用 
            data.msg = stack.toString() 
        }else if (!!arguments.callee){ 
            //嘗試通過(guò)callee拿堆棧信息 
            let ext = [] 
            let f = arguments.callee.caller, c = 3 //這里只拿三層堆棧信息 
            while (f && (--c>0)) { 
                ext.push(f.toString()) 
                if (f === f.caller) { 
                    break //如果有環(huán) 
                } 
                f = f.caller 
            } 
            ext = ext.join(",") data.msg = ext 
        } 
        console.log('3、addEventListener error 捕獲階段>>>異常:', data) 
    }, true )
    // 3、unhandledrejection 
    window.addEventListener('unhandledrejection', function(e) { 
        // e.preventDefault(); 
        // 阻止異常向上拋出 
        console.log('4、promise 異常 unhandledrejection :', e) 
    })
    // 4、errorHandler 
    Vue.config.errorHandler = function(err, vm, info) { 
    // vm 為拋出異常的 Vue 實(shí)例 
    // info 為 Vue 特定的錯(cuò)誤信息,比如錯(cuò)誤所在的生命周期鉤子 
    let { 
        message, // 異常信息 
        name, // 異常名稱 
        script, // 異常腳本url 
        line, // 異常行號(hào) 
        column, // 異常列號(hào)
        stack // 異常堆棧信息 
    } = err 
    console.log('2、vue errorHandler :>> ', err, vm, info) }
    復(fù)制代碼

    二、錯(cuò)誤日志上報(bào)

    既然異常已經(jīng)捕獲到了,那我們?cè)趺刺幚砟兀绾紊蠄?bào),需要上報(bào)哪些內(nèi)容?

    日志分類

    1、一般日志分類等級(jí)

    log、debug、info、warn、error
    復(fù)制代碼

    2、分場(chǎng)景使用日志上報(bào)類型

    log: 記錄流程信息 
    debug: 記錄調(diào)試關(guān)鍵信息 
    info: 記錄業(yè)務(wù)功能點(diǎn),是否觸發(fā)成功或者失敗
    warn: 頁(yè)面警告信息 
    error: 頁(yè)面錯(cuò)誤或者業(yè)務(wù)異常信息
    復(fù)制代碼

    3、日志上報(bào)信息附帶信息

    1、用戶id、session、用戶名 
    2、當(dāng)前錯(cuò)誤信息 
    3、可以用來(lái)重現(xiàn)、推斷當(dāng)前錯(cuò)誤發(fā)生的信息 
    4、上報(bào)時(shí)間 
    5、日志等級(jí)等等
    復(fù)制代碼

    4、日志上報(bào)策略

    1、達(dá)量上傳,設(shè)置一個(gè)緩存數(shù)量,到達(dá)即上報(bào)。因?yàn)椴荒芤话l(fā)生錯(cuò)誤就要上報(bào),會(huì)影響用戶的網(wǎng)絡(luò)。 2、日志埋點(diǎn)處各自有各自的上報(bào)等級(jí)。 需要有一個(gè)總配置地方,配置當(dāng)前的上報(bào)等級(jí) 這樣各處埋點(diǎn)可以判斷當(dāng)前需要上報(bào)的日志等級(jí),等級(jí)小于設(shè)置值的話,不可上報(bào)。 
    3、本地緩存若暫存過(guò)多,需要?jiǎng)h除前面的數(shù)據(jù) 
    4、抽樣上報(bào) 
    5、設(shè)置緩存有效時(shí)間 等等
    復(fù)制代碼

    上報(bào)之后,接下來(lái)的步驟就是在服務(wù)端收集分析歸類展示,基于badjs我們搭建一整套日志解析系統(tǒng)

    三、日志上報(bào)

    badjs 服務(wù)安裝

    1、前期預(yù)備工作

    為了快速搭建,我們統(tǒng)一使用 docker 安裝

    備注:windows 環(huán)境使用 docker,需要安裝 Docker Desktop

    • mysql 安裝 docker 安裝 mysql
    • 備注:mysql 安裝好后,需要從 badjs-web (需要先把項(xiàng)目下載下來(lái))項(xiàng)目中的 db 目錄下。 使用 create.sql 初始化 web 相關(guān)的數(shù)據(jù)庫(kù)
    • mongodb 安裝(不可設(shè)置密碼) docker 安裝 mongo

    2、項(xiàng)目安裝

    github 克隆項(xiàng)目到本地

    git clone https://github.com/BetterJS/badjs-installer
    復(fù)制代碼

    子項(xiàng)目下載以及依賴安裝

    // 克隆下載 badjs-acceptor、badjs-mq、badjs-storage、badjs-web 項(xiàng)目 
    yarn clone 
    // 安裝各項(xiàng)目的依賴 
    yarn install
    復(fù)制代碼

    3、修改配置項(xiàng)

    • 修改 badjs-acceptor 項(xiàng)目的 project.debug.json/project.json
    • 注意:這里是日志上報(bào)的地方,客戶端初始化 badjs-report 時(shí)候需要設(shè)置的 url 屬性即是這里的服務(wù)地址
    • http://{badjs-acceptor:port}/badjs
    • // 修改 port 屬性: 從 80 改為 8083; // 因?yàn)?node 默認(rèn)沒(méi)有 80 端口的權(quán)限,需要你使用管理員權(quán)限才可以使用 { "port": 8083 } 復(fù)制代碼
    • 修改 badjs-web 項(xiàng)目的 project.debug.json/project.json
    • // 修改 mysql 屬性,配置我們 docker 安裝好的 mysql 用戶密碼與端口 { "mysql" : { "url" : "mysql://root:123456@localhost:3306/badjs" } } 復(fù)制代碼

    4、啟動(dòng)項(xiàng)目

    yarn start

    查看 badjs-web 的啟動(dòng)端口,訪問(wèn) http://localhost:port 可以看到日志后臺(tái)管理服務(wù)頁(yè)面

    四、badjs各模塊

    1、badjs-acceptor 接受客戶端上報(bào)的日志

    badjs-acceptor 收到日志上報(bào),發(fā)送到 badjs-mq
    package.json 中配置 dispatcher 分發(fā)屬性, 表示向 badjs-mq 請(qǐng)求的信息:如請(qǐng)求端口(10001)
    復(fù)制代碼

    2、badjs-mq 消息隊(duì)列,保證消息有序穩(wěn)定被接受

    badjs-mq 接收 badjs-acceptor 的請(qǐng)求
    package.json 中配置 acceptor 接收屬性, 表示用來(lái)接收信息所配置的接口信息:如端口(10001)。
    
    badjs-mq 再分發(fā)到 badjs-storage
    package.json 中配置 dispatcher 分發(fā)屬性, 表示向 badjs-storage 請(qǐng)求的信息:如端口(10000)
    復(fù)制代碼

    3、badjs-storage 存儲(chǔ)模塊

    badjs-storage: 接收來(lái)自 badjs-mq 的請(qǐng)求,再寫入到 mongodb
    package.json 中配置 acceptor 接收屬性, 表示用來(lái)接收信息所配置的接口信息:如端口(10000)
    復(fù)制代碼

    4、badjs-web 日志后臺(tái)管理系統(tǒng)

    badjs-web 查詢?nèi)罩敬鎯?chǔ),分類查看日志信息,解析日志內(nèi)容
    package.json 中配置 acceptor 接收屬性, badjs-acceptor 可請(qǐng)求的端口
    package.json 中配置 storage 存儲(chǔ)屬性, 查詢 mongodb 數(shù)據(jù)
    package.json 中配置 mysql 數(shù)據(jù)庫(kù)屬性, 查詢 mysql 數(shù)據(jù)等等
    復(fù)制代碼

    五、上報(bào)日志插件 badjs-report

    badjs-report 重寫了 window.onerror 來(lái)捕獲錯(cuò)誤

    1、安裝

    yarn add badjs-report
    復(fù)制代碼

    2、初始化

    import badjs from 'badjs-report'
    
    badjs.init({
        // 必須配置項(xiàng)
        id: 1 // 此 id 為 badjs-web 啟動(dòng)后,申請(qǐng)的項(xiàng)目的 id,上報(bào)的日志根據(jù)該 id 區(qū)分業(yè)務(wù)模塊
        url: 'http://badjs-acceptor啟動(dòng)后的地址', // 日志上報(bào)到的地方
    
        // 選擇配置
        uin: 123, // 指定用戶的 id (該插件默認(rèn)讀取 qq uin)
        delay: 1000, // 延遲多少毫秒,合并緩沖區(qū)中的上報(bào)(默認(rèn) 1000)
        ignore: [/Script error/i], // 忽略某個(gè)錯(cuò)誤,遇到該錯(cuò)誤不進(jìn)行上報(bào)
        random: 1, // 抽樣上報(bào), 值可以設(shè)置 0-1 之間。1 表示 100% 上報(bào)(默認(rèn)為 1)
        repeat: 5, // 重復(fù)上報(bào)次數(shù)(對(duì)于同一個(gè)錯(cuò)誤超過(guò)多少次不上報(bào);避免單個(gè)用戶同一錯(cuò)誤上報(bào)過(guò)多的情況)
        onReport: function(id, errObj) {}, // 上報(bào)日志之后的回調(diào)。id 為上報(bào)的 id,errorObj 為上報(bào)的錯(cuò)誤對(duì)象
        submit: function(url) {}, // 覆蓋原來(lái)的上報(bào)方式,原來(lái)是使用 new Image() 形式上報(bào),可以修改成自己想要上報(bào)的方式,比如使用 post 內(nèi)部構(gòu)造好的 url
        ext: {}, // 擴(kuò)展屬性,后端做擴(kuò)展處理屬性。設(shè)置了 ext 的值,就會(huì)作為 'ext=設(shè)置的值' 合并到構(gòu)造好的上報(bào) url 中
        offlineLog: false, // 是否開(kāi)啟離線日志(默認(rèn)不開(kāi)啟為 false)
        offlineLogExp: 5 // 離線有效時(shí)間(默認(rèn)最近5天)
    })
    復(fù)制代碼

    3、手動(dòng)上報(bào)

    a、badjs.report('error msg')
    b、badjs.report({
        msg: 'error msg', // 需要上報(bào)的錯(cuò)誤信息
        target: 'error.js', // 發(fā)生錯(cuò)誤的 js 文件
        rowNum: 1, // 發(fā)生錯(cuò)誤的行數(shù)
        colNum: 2 // 發(fā)生錯(cuò)誤的列數(shù)
    })
    復(fù)制代碼

    4、延遲上報(bào)

    暫存

    badjs.push('error msg')
    badjs.push({
        msg: 'error msg', // 需要上報(bào)的錯(cuò)誤信息
        target: 'error.js', // 發(fā)生錯(cuò)誤的 js 文件
        rowNum: 1, // 發(fā)生錯(cuò)誤的行數(shù)
        colNum: 2 // 發(fā)生錯(cuò)誤的列數(shù)
    })
    復(fù)制代碼

    立即上報(bào)

    badjs.report({
        msg: 'error msg', // 需要上報(bào)的錯(cuò)誤信息
        target: 'error.js', // 發(fā)生錯(cuò)誤的 js 文件
        rowNum: 1, // 發(fā)生錯(cuò)誤的行數(shù)
        colNum: 2 // 發(fā)生錯(cuò)誤的列數(shù)
    })
    復(fù)制代碼

    5、上報(bào)離線日志

    badjs.reportOfflineLog()
    復(fù)制代碼

    六、項(xiàng)目應(yīng)用


    1. 概述

    眾所周知,水經(jīng)注可以提供全國(guó)7137GB海量谷歌地球離線影像數(shù)據(jù),該數(shù)據(jù)存儲(chǔ)在一塊8TB硬盤中。為了方便大家構(gòu)建離線三維地球,于是將全國(guó)高程數(shù)據(jù)和全國(guó)地名數(shù)據(jù)整合存儲(chǔ)在一起,但由于8T硬盤可用空間已不足以存儲(chǔ)所有數(shù)據(jù),因此將8TB移動(dòng)硬盤升級(jí)到了10TB移動(dòng)硬盤。為了便于區(qū)分,我們將這塊10TB數(shù)據(jù)硬盤命名為"水經(jīng)注全國(guó)離線地圖3.0",下面我們將對(duì)硬盤中的離線地圖數(shù)據(jù)作一個(gè)簡(jiǎn)要說(shuō)明。

    希捷10TB硬盤


    2. 水經(jīng)注全國(guó)離線地圖都有哪些地圖數(shù)據(jù)?

    最開(kāi)始,在一塊8TB移動(dòng)硬盤中,水經(jīng)注全國(guó)離線地圖數(shù)據(jù)只存儲(chǔ)了全國(guó)7137GB谷歌衛(wèi)星影像,我們姑且把它稱為"水經(jīng)注全國(guó)離線地圖1.0"。當(dāng)時(shí),由于還有剩余空間,還順便存儲(chǔ)了要交付給客戶的韓國(guó)數(shù)據(jù),如下圖所示。

    水經(jīng)注全國(guó)離線地圖1.0


    為了滿足用戶對(duì)構(gòu)建離線三維系統(tǒng)的需求,后來(lái)在8TB硬盤中新增了全國(guó)離線DEM數(shù)據(jù),這里可以算作是"水經(jīng)注全國(guó)離線地圖2.0",如下圖所示。

    水經(jīng)注全國(guó)離線地圖2.0


    鑒于有的用戶不只是需要衛(wèi)星影像和高程數(shù)據(jù),特將全國(guó)地名標(biāo)簽數(shù)據(jù)也整合到了一起,由于8TB硬盤不足以存儲(chǔ),于是將硬盤升級(jí)到10TB,即為"水經(jīng)注全國(guó)離線地圖3.0",如下圖所示。

    水經(jīng)注全國(guó)離線地圖3.0


    水經(jīng)注全國(guó)離線地圖數(shù)據(jù)的每一次更新內(nèi)容,將會(huì)記錄在附帶的"更新日志"文件中,如下圖所示。

    水經(jīng)注全國(guó)離線地圖更新日志


    3. 水經(jīng)注全國(guó)離線地圖之衛(wèi)星地圖數(shù)據(jù)

    全國(guó)離線谷歌衛(wèi)星地圖數(shù)據(jù)大小為7.01TB,包含1-19級(jí),其中第19級(jí)分辨率為0.6米。該數(shù)據(jù)一共包含5834個(gè)文件,即共2917個(gè)金字塔文件塊,如下圖所示。

    全國(guó)離線谷歌衛(wèi)星地圖文件


    全國(guó)離線谷歌衛(wèi)星地圖數(shù)據(jù)包括中國(guó)范圍所有海域和島嶼,接圖表如下圖所示。

    全國(guó)谷歌衛(wèi)星離線地圖接圖表


    4. 水經(jīng)注全國(guó)離線地圖之地名標(biāo)簽數(shù)據(jù)

    全國(guó)離線地名標(biāo)簽數(shù)據(jù)一共259GB,包含1-19級(jí),其中第19級(jí)地名路網(wǎng)相當(dāng)于1:2000比例尺。該數(shù)據(jù)一共包含4626個(gè)文件,即共2313個(gè)金字塔文件塊,如下圖所示。

    全國(guó)離線地名標(biāo)簽文件


    按理說(shuō),地名標(biāo)簽的個(gè)數(shù)應(yīng)該與衛(wèi)星地圖數(shù)據(jù)的個(gè)數(shù)是完全相同的,但由于在海洋區(qū)域無(wú)任何地名標(biāo)注,因此海洋區(qū)域只下載了有島嶼的區(qū)域,這就是文件總數(shù)比衛(wèi)星地圖文件少的原因,這一點(diǎn)從接圖表就可以看出來(lái),如下圖所示。

    全國(guó)離線地名標(biāo)簽接圖表


    5. 水經(jīng)注全國(guó)離線地圖之高程DEM數(shù)據(jù)

    全國(guó)高程DEM一共33.7GB,包含6到15級(jí),由于數(shù)據(jù)源來(lái)自谷歌地球,因此精度與谷歌地球的高程數(shù)據(jù)完全一致。該數(shù)據(jù)一花包含70個(gè)文件,即35個(gè)金字塔分塊文件,如下圖所示。

    全國(guó)離線高程DEM文件


    由于高程數(shù)據(jù)是從第6級(jí)開(kāi)始下載,金字塔文件塊數(shù)相對(duì)較少,因此提供的高程DEM數(shù)據(jù)范圍為矩形范圍,完全包含了整個(gè)中國(guó)疆域范圍,如下圖所示。

    全國(guó)離線高程DEM接圖表


    6.總結(jié)

    以上就是關(guān)于水經(jīng)注全國(guó)離線地圖的全部說(shuō)明,主要包括了全國(guó)離線衛(wèi)星地圖、全國(guó)離線地名標(biāo)簽和全國(guó)離線高程DEM等相關(guān)說(shuō)明。

網(wǎng)站首頁(yè)   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有