91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

node怎么將geojson轉shp返回給前端

發布時間:2021-07-07 11:35:48 來源:億速云 閱讀:211 作者:小新 欄目:web開發

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

node將geojson轉shp需要調用[ogr2ogr][1]庫來實現,在調用ogr2ogr庫時,因為其通過調用gdal的工具來實現將

geojson轉shp,所以需要安裝gdal并配置環境變量。

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

第二:你的.node發現不了可能是因為缺少了依賴關系,簡單點說,就是缺少了.dll

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

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

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

環境配置完,可以進行代碼實現了。

首先引入ogr2ogr庫

const ogr2ogr = require('ogr2ogr')

生成shp文件壓縮包

  // 聲明一個geojson變量也可以是geojson文件目錄
  var geojson = {
   type: 'FeatureCollection',
   features: [
    {
     type: 'Feature',
     geometry
    }
   ]
  }
  // shp保存目錄
  const zipPath = './export/shpfile.zip'
  // 創建文件寫入流
  var file = fs.createWriteStream(zipPath)
  // 調用ogr2ogr進行轉化
  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)
  // 文件寫入完成觸發事件
  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)
   })
  })

最后是前端發送請求接收的代碼

   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)
   })

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

看完了這篇文章,相信你對“node怎么將geojson轉shp返回給前端”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

龙门县| 武义县| 大埔区| 屏东县| 西宁市| 长丰县| 万山特区| 洛南县| 若尔盖县| 老河口市| 巴彦县| 赫章县| 上栗县| 思南县| 开鲁县| 阿坝县| 察隅县| 灵丘县| 睢宁县| 安阳县| 汉川市| 石首市| 新蔡县| 禹城市| 芜湖市| 舒兰市| 涿鹿县| 聂拉木县| 和政县| 色达县| 嘉禾县| 泗水县| 闸北区| 秀山| 武陟县| 沽源县| 凤冈县| 阳高县| 越西县| 佛教| 铁岭市|