zy上云api


高层数据

<h1>高程数据导入</h1> <h2>接口描述</h2> <p>支持用户导入zip或.tif文件,gcs服务自行解析数据,进行高层数据切片Quantized Mesh(.terrain).导入成功后返回terrain url访问路径.</p> <h2>请求示例</h2> <pre><code class="language-json">{ &amp;quot;tid&amp;quot;: &amp;quot;1234567890&amp;quot;, &amp;quot;bid&amp;quot;: &amp;quot;9876543210&amp;quot;, &amp;quot;method&amp;quot;: &amp;quot;importGem&amp;quot;, &amp;quot;data&amp;quot;: { &amp;quot;custom&amp;quot;: { &amp;quot;gemFileName&amp;quot;: &amp;quot;高程&amp;quot;, &amp;quot;fileType&amp;quot;: &amp;quot;zip&amp;quot;, &amp;quot;totalSize&amp;quot;:12312434, &amp;quot;option&amp;quot;: 1,//开始上传,2上传完毕, 0取消上传. } } }</code></pre> <pre><code class="language-json">{ &amp;quot;tid&amp;quot;: &amp;quot;saveGem&amp;quot;, &amp;quot;bid&amp;quot;: &amp;quot;12123123123&amp;quot;, &amp;quot;data&amp;quot;: { &amp;quot;custom&amp;quot;: { &amp;quot;currentSaveTotal&amp;quot;:12312434, &amp;quot;totaltotalSize&amp;quot;:121212124, &amp;quot;option&amp;quot;: 1,//开始上传. } } }</code></pre> <h2>文件上传buf切片样例</h2> <pre><code class="language-javaScript">function waitForBufferLow(ws, threshold = 16 * 1024 * 1024) { return new Promise((resolve) =&amp;gt; { if (ws.bufferedAmount &amp;lt; threshold) return resolve() const check = () =&amp;gt; { if (ws.bufferedAmount &amp;lt; threshold) { resolve() } else { setTimeout(check, 10) } } setTimeout(check, 10) }) } async function upload() { if (!isConnected.value || !socket.value || socket.value.readyState !== WebSocket.OPEN) { addLog(&amp;#039;请先连接 WebSocket&amp;#039;) return } if (!selectedFile.value) { addLog(&amp;#039;请先选择文件&amp;#039;) return } if (isUploading.value) { addLog(&amp;#039;正在上传中,请稍候&amp;#039;) return } try { isUploading.value = true // 1) 发送 option=1 的 JSON sendJsonOption(1) // 2) 分片发送文件二进制 const file = selectedFile.value const size = file.size const step = chunkSize.value let offset = 0 let index = 0 addLog(`开始分片上传,总大小 ${size} 字节,分片大小 ${step} 字节`) while (offset &amp;lt; size) { const end = Math.min(offset + step, size) const blob = file.slice(offset, end) const buffer = await blob.arrayBuffer() await waitForBufferLow(socket.value) socket.value.send(buffer) index += 1 addLog(`发送分片 #${index} [${offset}-${end}) (${end - offset} 字节)`) offset = end } // 3) 发送 option=2 的 JSON sendJsonOption(2) addLog(&amp;#039;文件发送完毕,已发送完成标记(option=2)&amp;#039;) } catch (err) { addLog(`上传失败: ${err?.message || err}`) } finally { isUploading.value = false } }</code></pre> <h2>返回示例</h2> <p>当上传完毕,会针对上传文件进行处理,并返回当前进度.</p> <pre><code class="language-json">{ &amp;quot;tid&amp;quot;: &amp;quot;importGemProgress&amp;quot;, &amp;quot;bid&amp;quot;: &amp;quot;9876543210&amp;quot;, &amp;quot;code&amp;quot;:0 &amp;quot;data&amp;quot;: { &amp;quot;progress&amp;quot;:&amp;quot;11&amp;quot;,//0-100 &amp;quot;path&amp;quot;:&amp;quot;&amp;quot;,//导入成功后返回文件访问路径 &amp;quot;msg&amp;quot;:&amp;quot;&amp;quot;,//信息 &amp;quot;status&amp;quot;:1//0成功 1 进行中 2失败 } }</code></pre> <h1>高程数据获取</h1> <p>获取gcs目前已经导入的,高层文件数据.</p> <h2>请求示例</h2> <pre><code class="language-json">{ &amp;quot;tid&amp;quot;: &amp;quot;1234567890&amp;quot;, &amp;quot;bid&amp;quot;: &amp;quot;9876543210&amp;quot;, &amp;quot;method&amp;quot;: &amp;quot;getGem&amp;quot;, &amp;quot;data&amp;quot;: {} }</code></pre> <h2>返回示例</h2> <pre><code class="language-json">{ &amp;quot;tid&amp;quot;: &amp;quot;1234567890&amp;quot;, &amp;quot;bid&amp;quot;: &amp;quot;9876543210&amp;quot;, &amp;quot;method&amp;quot;: &amp;quot;getGem&amp;quot;, &amp;quot;data&amp;quot;: [ { &amp;quot;fileName&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;uploadTime&amp;quot;: 1254234534, &amp;quot;path&amp;quot;: &amp;quot;/data/gem/ddd&amp;quot; }, { &amp;quot;filename&amp;quot;: &amp;quot;2&amp;quot;, &amp;quot;uploadTime&amp;quot;: 1254234534, &amp;quot;path&amp;quot;: &amp;quot;/data/gem/ddd&amp;quot; }, ] }</code></pre> <h1>高程文件删除</h1> <p>删除高程文件</p> <h2>请求示例</h2> <pre><code class="language-json">{ &amp;quot;tid&amp;quot;: &amp;quot;1234567890&amp;quot;, &amp;quot;bid&amp;quot;: &amp;quot;9876543210&amp;quot;, &amp;quot;method&amp;quot;: &amp;quot;deleteGem&amp;quot;, &amp;quot;data&amp;quot;: [&amp;quot;fileName1&amp;quot;,&amp;quot;fileName2&amp;quot;] }</code></pre> <h2>返回示例</h2> <pre><code class="language-json">{ &amp;quot;tid&amp;quot;: &amp;quot;1234567890&amp;quot;, &amp;quot;bid&amp;quot;: &amp;quot;9876543210&amp;quot;, &amp;quot;method&amp;quot;: &amp;quot;deleteGem&amp;quot;, &amp;quot;data&amp;quot;: {}, &amp;quot;code&amp;quot;:0 }</code></pre> <h1>高层文件重命名</h1> <h2>请求示例</h2> <pre><code class="language-json">{ &amp;quot;tid&amp;quot;: &amp;quot;1234567890&amp;quot;, &amp;quot;bid&amp;quot;: &amp;quot;9876543210&amp;quot;, &amp;quot;method&amp;quot;: &amp;quot;renameGem&amp;quot;, &amp;quot;data&amp;quot;:{ &amp;quot;oldName&amp;quot;:&amp;quot;1212&amp;quot;, &amp;quot;newName&amp;quot;:&amp;quot;&amp;quot; } }</code></pre> <h2>返回示例</h2> <pre><code class="language-json">{ &amp;quot;tid&amp;quot;: &amp;quot;1234567890&amp;quot;, &amp;quot;bid&amp;quot;: &amp;quot;9876543210&amp;quot;, &amp;quot;data&amp;quot;:{ &amp;quot;newPath&amp;quot;:&amp;quot;/data/dadats/sdta&amp;quot; } &amp;quot;code&amp;quot;:0 }</code></pre>

页面列表

ITEM_HTML