node怎么將geojson轉(zhuǎn)shp返回給前端-創(chuàng)新互聯(lián)

小編給大家分享一下node怎么將geojson轉(zhuǎn)shp返回給前端,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

創(chuàng)新互聯(lián)建站-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比雙牌網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式雙牌網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋雙牌地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。

node將geojson轉(zhuǎn)shp需要調(diào)用[ogr2ogr][1]庫(kù)來(lái)實(shí)現(xiàn),在調(diào)用ogr2ogr庫(kù)時(shí),因?yàn)槠渫ㄟ^(guò)調(diào)用gdal的工具來(lái)實(shí)現(xiàn)將

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

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

第二:你的.node發(fā)現(xiàn)不了可能是因?yàn)槿鄙倭艘蕾囮P(guān)系,簡(jiǎn)單點(diǎn)說(shuō),就是缺少了.dll

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

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

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

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

首先引入ogr2ogr庫(kù)

const ogr2ogr = require('ogr2ogr')

生成shp文件壓縮包

  // 聲明一個(gè)geojson變量也可以是geojson文件目錄
  var geojson = {
   type: 'FeatureCollection',
   features: [
    {
     type: 'Feature',
     geometry
    }
   ]
  }
  // shp保存目錄
  const zipPath = './export/shpfile.zip'
  // 創(chuàng)建文件寫(xiě)入流
  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壓縮文件傳給前端,這里可以通過(guò)不同的方法進(jìn)行傳遞

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

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

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

  var resPath = path.join(__dirname, '..', zipPath)
  // 文件寫(xiě)入完成觸發(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ā)送請(qǐng)求接收的代碼

   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 = '文件名稱(chēng)'
    a.href = blobUrl
    a.click()
    URL.revokeObjectURL(blobUrl)
   })

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

看完了這篇文章,相信你對(duì)“node怎么將geojson轉(zhuǎn)shp返回給前端”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝各位的閱讀!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站欄目:node怎么將geojson轉(zhuǎn)shp返回給前端-創(chuàng)新互聯(lián)
文章來(lái)源:http://muchs.cn/article48/coschp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站設(shè)計(jì)、小程序開(kāi)發(fā)、外貿(mào)建站、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司