第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

KML 多邊形的 SVG 路徑

KML 多邊形的 SVG 路徑

幕布斯7119047 2023-05-10 13:37:28
我想用 Java 創(chuàng)建一個 svg 到 kml 轉(zhuǎn)換器。我為此任務(wù)創(chuàng)建了一種翻譯器,它接收 svg 格式的文本并打印出 kml 格式的文本。到目前為止,我能夠處理圓形和矩形標(biāo)簽。我無法處理路徑。如何讀取 svg 路徑(d 屬性)并在 kml 中重建它們?主要問題源于這樣一個事實,即 svg 路徑不是簡單的坐標(biāo)序列,它們中有曲線。這是我需要處理的 svg 路徑輸入示例:<html><body><svg width="10000" height="1000"><path id="square" fill="#0000FF" d="M351.3,251 l-3.1-2.2c-0.3-0.2-0.3-0.5-0.1-0.8l2.2-3.1c0.2-0.3,0.5-0.3,0.8-0.1l3.1,2.2c0.3,0.2,0.3,0.5,0.1,0.8l-2.2,3.1C355,251.1,354.6,251.2,354.3,251z"/></body></html>如果我能弄清楚如何評估 d 屬性中的字符串,唯一的另一個問題是如何使用從 d 屬性中的字符串中提取的值來創(chuàng)建曲線。這種路徑格式不是網(wǎng)上常見的格式;它是由其他人使用 adobe illustrator 創(chuàng)建的,現(xiàn)在我無法訪問該軟件。由于沒有空格或常規(guī)逗號,我無法理解如何正確讀取字符串。
查看完整描述

1 回答

?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗 獲得超8個贊

我找到了一種在 JavaScript 中將 SVG 路徑轉(zhuǎn)換為 SVG 多邊形的簡單方法。SVG 多邊形可以輕松轉(zhuǎn)換為 KML 地標(biāo),因為兩者都使用坐標(biāo)列表。這個腳本可以放在一個 HTML 文件中,并且可以直接在瀏覽器上運行。它將從您的計算機獲取 SVG 文件并將修改后的文件保存為文本文件。我建議使用 Chrome,因為 SVG 在其上保持固定大小,從而確保坐標(biāo)系保持完全相同。


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<title>Reader</title>

</head>

<body>

<h1>SVG paths to polygons</h1>

<input type="file" id="fileReader" />

<br>

<p id="Content"></p>

<script>

document.getElementById("fileReader").addEventListener('change',function(){

var fr = new FileReader();

fr.onload = function(){;

var d = new DOMParser().parseFromString( this.result.toString(), "image/svg+xml" );

var nodelist = d.querySelectorAll('path');

console.log("Number of paths: " + nodelist.length);

nodelist.forEach(function(path){//This replaces each path with a polygon, keeping the same id.

var polygon = d.createElementNS("http://www.w3.org/2000/svg", "polygon");

polygon.setAttribute("id", path.getAttribute("id"));

console.log("Converting " + path.getAttribute("id"));

var length = path.getTotalLength();

var p=path.getPointAtLength(0);

var stp=p.x+","+p.y;

for(var i=1; i<length; i++){

    p=path.getPointAtLength(i);

    stp=stp+" "+p.x+","+p.y;

    //This places points along the path at one unit distance apart.

}

polygon.setAttribute("points", stp);

path.replaceWith(polygon);

});

var text1 = new XMLSerializer().serializeToString(d);

document.write(text1);

function download(filename, text) {

  var element = document.createElement('a');

  element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));

  element.setAttribute('download', filename);


  element.style.display = 'none';

  document.body.appendChild(element);


  element.click();


  document.body.removeChild(element);

}


// Starting file download.

download("output.txt", text1);

}

fr.readAsText(this.files[0]);

})

</script>

</body>

</html>


然后您可以直接獲取該points屬性并將其放置在 KML 中的坐標(biāo)標(biāo)記中。您只需要用新行替換空格。


查看完整回答
反對 回復(fù) 2023-05-10
  • 1 回答
  • 0 關(guān)注
  • 250 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號