欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node將geojson轉(zhuǎn)shp返回給前端的實現(xiàn)方法

 更新時間:2019年05月29日 11:32:12   作者:Libre  
這篇文章主要介紹了node將geojson轉(zhuǎn)shp返回給前端的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

node將geojson轉(zhuǎn)shp需要調(diào)用[ogr2ogr][1]庫來實現(xiàn),在調(diào)用ogr2ogr庫時,因為其通過調(diào)用gdal的工具來實現(xiàn)將

geojson轉(zhuǎn)shp,所以需要安裝gdal并配置環(huán)境變量。

參考文章:https://stackoverflow.com/questions/41253450/error-the-specified-module-could-not-be-found

第一:你要確定你的.node 是好的,然后你可以繼續(xù)下一步了

第二:你的.node發(fā)現(xiàn)不了可能是因為缺少了依賴關(guān)系,簡單點說,就是缺少了.dll

第三:下載 Dependency Walker,這個軟件可以幫你確定一下缺少什么.dll,下載地址:http://www.dependencywalker.com/

第四:下載完Dependency Walker 直接打開.node 文件,將提示缺少的重要.dll 放在.node 同一級的目錄下,當(dāng)然你也可以不用下軟件,直接把重要的.dll放在.node目錄下就可以了。

第五:運行,就不會報錯了。

環(huán)境配置完,可以進行代碼實現(xiàn)了。

首先引入ogr2ogr庫

const ogr2ogr = require('ogr2ogr')

生成shp文件壓縮包

  // 聲明一個geojson變量也可以是geojson文件目錄
  var geojson = {
   type: 'FeatureCollection',
   features: [
    {
     type: 'Feature',
     geometry
    }
   ]
  }
  // shp保存目錄
  const zipPath = './export/shpfile.zip'
  // 創(chuàng)建文件寫入流
  var file = fs.createWriteStream(zipPath)
  // 調(diào)用ogr2ogr進行轉(zhuǎn)化
  var ogr = ogr2ogr(geojson).project('EPSG:4326')
   .format('ESRI Shapefile')
   .skipfailures()
   .stream()
  ogr.pipe(file)

然后將shp壓縮文件傳給前端,這里可以通過不同的方法進行傳遞

(1) 通過sendFile直接進行傳遞

var resPath = path.join(__dirname, '..', zipPath)
res.sendFile(resPath)

(2)通過流的方式進行傳遞

  var resPath = path.join(__dirname, '..', zipPath)
  // 文件寫入完成觸發(fā)事件
  file.on('finish', function() {
   res.set({
    'Content-Type': 'application/zip',
    'Content-Disposition':
     'attachment; filename=' + encodeURI(name) + '.zip',
    'Content-Length': fs.statSync(zipPath).size
   })
   let fReadStream = fs.createReadStream(zipPath)
   fReadStream.pipe(res)
   fReadStream.on('end', function() {
    fs.unlinkSync(resPath)
   })
   fReadStream.on('error', function(err) {
    console.log(err)
   })
  })

最后是前端發(fā)送請求接收的代碼

   axios.post('http://localhost:3000/jsontoshp', {
    responseType: 'blob'
   }).then(res => {
    const blobUrl = URL.createObjectURL(res.data)
    const a = document.createElement('a')
    a.style.display = 'none'
    a.download = '文件名稱'
    a.href = blobUrl
    a.click()
    URL.revokeObjectURL(blobUrl)
   })

這里需要注意的地方是前端發(fā)送請求時需要設(shè)置一個參數(shù)responseType: 'blob',這里用到了Blob對象,這里是從服務(wù)器接收到的文件流創(chuàng)建blob對象并使用該blob 創(chuàng)建一個指向類型數(shù)組的URL,將該url作為a標(biāo)簽的鏈接目標(biāo),然后去觸發(fā)a標(biāo)簽的點擊事件從而文件下載。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 了不起的node.js讀書筆記之node.js中的特性

    了不起的node.js讀書筆記之node.js中的特性

    這篇文章主要介紹了了不起的node.js讀書筆記之node.js中的特性,需要的朋友可以參考下
    2014-12-12
  • 淺談express 中間件機制及實現(xiàn)原理

    淺談express 中間件機制及實現(xiàn)原理

    本篇文章主要介紹了淺談express 中間件機制及實現(xiàn)原理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 防止Node.js中錯誤導(dǎo)致進程阻塞的辦法

    防止Node.js中錯誤導(dǎo)致進程阻塞的辦法

    Node.js我們用到非常的多了,如果我們開發(fā)不當(dāng)可能因錯誤導(dǎo)致進程阻塞問題,對于進程阻塞問題一直是個頭痛的事情,今天我們一起來看一篇關(guān)于Node.js防止錯誤導(dǎo)致的進程阻塞示例,下面一起來看看。
    2016-08-08
  • Node.js使用定時器的三種方法

    Node.js使用定時器的三種方法

    在Node.js中使用定時器是一項常見且重要的任務(wù),本文主要介紹了Node.js使用定時器的三種方法,包括setTimeout、setInterval和setImmediate等方法,感興趣的可以了解一下
    2024-02-02
  • nodejs使用async模塊同步執(zhí)行的方法

    nodejs使用async模塊同步執(zhí)行的方法

    今天小編就為大家分享一篇關(guān)于nodejs使用async模塊同步執(zhí)行的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Node.js中用D3.js的方法示例

    Node.js中用D3.js的方法示例

    這篇文章主要給大家介紹了在Node.js中用D3.js的方法,文中分別介紹了如何安裝模塊和一小段簡單的示例代碼,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • node.js+postman實現(xiàn)模擬HTTP服務(wù)器與客戶端交互

    node.js+postman實現(xiàn)模擬HTTP服務(wù)器與客戶端交互

    本文主要介紹了node.js+postman實現(xiàn)模擬HTTP服務(wù)器與客戶端交互,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Node模塊化開發(fā)實例解析

    Node模塊化開發(fā)實例解析

    這篇文章主要為大家介紹了Node模塊化開發(fā)實例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 用NODE.JS中的流編寫工具是要注意的事項

    用NODE.JS中的流編寫工具是要注意的事項

    Nodejs讀寫流流的傳輸過程默認(rèn)是以buffer的形式傳輸?shù)?除非你給他設(shè)置其他編碼形式, 小伙伴可以參考下。
    2016-03-03
  • Node.js 使用流實現(xiàn)讀寫同步邊讀邊寫功能

    Node.js 使用流實現(xiàn)讀寫同步邊讀邊寫功能

    本文通過代碼給大家介紹了Node.js 使用流實現(xiàn)讀寫同步邊讀邊寫功能,非常不錯,具有參考借鑒價值,需要的額朋友參考下吧
    2017-09-09

最新評論