小編給大家分享一下node怎么將geojson轉shp返回給前端,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
創新互聯建站-專業網站定制、快速模板網站建設、高性價比雙牌網站開發、企業建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式雙牌網站制作公司更省心,省錢,快速模板網站建設找我們,業務覆蓋雙牌地區。費用合理售后完善,十載實體公司更值得信賴。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返回給前端”有了一定的了解,如果想了解更多相關知識,歡迎關注創新互聯成都網站設計公司行業資訊頻道,感謝各位的閱讀!
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網站欄目:node怎么將geojson轉shp返回給前端-創新互聯
文章來源:http://m.newbst.com/article48/coschp.html
成都網站建設公司_創新互聯,為您提供移動網站建設、做網站、網站設計、小程序開發、外貿建站、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯