最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

node將geojson轉(zhuǎn)shp需要調(diào)用[ogr2ogr][1]庫來實(shí)現(xiàn),在調(diào)用ogr2ogr庫時(shí),因?yàn)槠渫ㄟ^調(diào)用gdal的工具來實(shí)現(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)不了可能是因?yàn)槿鄙倭艘蕾囮P(guān)系,簡單點(diǎn)說,就是缺少了.dll

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

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

第五:運(yùn)行,就不會(huì)報(bào)錯(cuò)了。

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

首先引入ogr2ogr庫

const ogr2ogr = require('ogr2ogr')

生成shp文件壓縮包

  // 聲明一個(gè)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進(jìn)行轉(zhuǎn)化
  var ogr = ogr2ogr(geojson).project('EPSG:4326')
   .format('ESRI Shapefile')
   .skipfailures()
   .stream()
  ogr.pipe(file)

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

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

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

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

  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è)置一個(gè)參數(shù)responseType: 'blob',這里用到了Blob對象,這里是從服務(wù)器接收到的文件流創(chuàng)建blob對象并使用該blob 創(chuàng)建一個(gè)指向類型數(shù)組的URL,將該url作為a標(biāo)簽的鏈接目標(biāo),然后去觸發(fā)a標(biāo)簽的點(diǎn)擊事件從而文件下載。

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

相關(guān)文章

  • 基于socket.io+express實(shí)現(xiàn)多房間聊天

    基于socket.io+express實(shí)現(xiàn)多房間聊天

    本文給大家分享的是使用node.js,基于socket.io+express實(shí)現(xiàn)多房間聊天的代碼,非常的實(shí)用,有需要的小伙伴可以來參考下
    2016-03-03
  • NodeJS落地WebSocket實(shí)踐前端架構(gòu)師破局技術(shù)

    NodeJS落地WebSocket實(shí)踐前端架構(gòu)師破局技術(shù)

    這篇文章主要為大家介紹了NodeJS落地WebSocket實(shí)踐前端架構(gòu)師破局技術(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 一文詳解node.js有哪些全局對象呢

    一文詳解node.js有哪些全局對象呢

    這篇文章主要介紹了一文詳解node.js有哪些全局對象呢,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-09-09
  • node模塊機(jī)制與異步處理詳解

    node模塊機(jī)制與異步處理詳解

    這篇文章主要介紹了node模塊機(jī)制與異步處理詳解的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • Node.js?中使用fetch?按JSON格式發(fā)post請求的問題解析

    Node.js?中使用fetch?按JSON格式發(fā)post請求的問題解析

    最近在測試一個(gè)api,可以用curl命令直接訪問,指定header相關(guān)配置,request?body(JSON),成功后返回一個(gè)JSON,這篇文章主要介紹了Node.js?中使用fetch?按JSON格式發(fā)post請求,需要的朋友可以參考下
    2023-04-04
  • 使用express搭建一個(gè)簡單的查詢服務(wù)器的方法

    使用express搭建一個(gè)簡單的查詢服務(wù)器的方法

    本篇文章主要介紹了使用express搭建一個(gè)簡單的查詢服務(wù)器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • Node.js本地搭建簡單頁面小游戲的過程

    Node.js本地搭建簡單頁面小游戲的過程

    Node.js是能夠在服務(wù)器端運(yùn)行 JavaScript 的開放源代碼、跨平臺(tái)運(yùn)行環(huán)境,Node.js 大部分基本模塊都用 JavaScript 語言編寫,下面將介紹如何簡單幾步實(shí)現(xiàn)遠(yuǎn)程公共網(wǎng)絡(luò)下訪問windwos node.js的服務(wù)端
    2024-01-01
  • Node.js?應(yīng)用探索文件解壓縮示例詳解

    Node.js?應(yīng)用探索文件解壓縮示例詳解

    這篇文章主要為大家介紹了Node.js?應(yīng)用探索文件解壓縮示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • node.js下when.js 的異步編程實(shí)踐

    node.js下when.js 的異步編程實(shí)踐

    這篇文章主要介紹了node.js下when.js 的異步編程實(shí)踐,需要的朋友可以參考下
    2014-12-12
  • 深入理解Node.js回調(diào)函數(shù)

    深入理解Node.js回調(diào)函數(shù)

    這篇文章主要介紹了Node.js回調(diào)函數(shù),為了解決回調(diào)函數(shù)的缺點(diǎn),出現(xiàn)了一些替代方案,如Promise、async/await等,這些方案提供了更簡潔、可讀性更高的代碼結(jié)構(gòu),使異步編程更加容易和可維護(hù),需要的朋友可以參考下
    2023-11-11

最新評(píng)論

山阴县| 遂川县| 腾冲县| 金秀| 财经| 仙桃市| 盘锦市| 磴口县| 水城县| 尼勒克县| 桓台县| 建阳市| 乐东| 梅河口市| 许昌县| 祁连县| 珲春市| 塘沽区| 尉犁县| 博乐市| 堆龙德庆县| 阳春市| 金昌市| 酉阳| 习水县| 韶关市| 遵义县| 卫辉市| 青岛市| 青阳县| 无为县| 怀来县| 灵武市| 丹江口市| 黄浦区| 蛟河市| 北川| 乐陵市| 开原市| 巴南区| 双鸭山市|