Java 到KML多边形的SVG路径
我想用Java创建一个svg到kml的转换器。我为这项任务创建了一种转换器,它接收svg格式的文本,并以kml格式打印文本。到目前为止,我能够处理圆形和矩形标记。我无法处理路径 如何读取svg路径(d属性)并在kml中重建它们 主要问题源于这样一个事实,即svg路径不是简单的坐标序列,其中包含曲线。下面是我需要处理的svg路径输入示例:Java 到KML多边形的SVG路径,java,svg,kml,converters,Java,Svg,Kml,Converters,我想用Java创建一个svg到kml的转换器。我为这项任务创建了一种转换器,它接收svg格式的文本,并以kml格式打印文本。到目前为止,我能够处理圆形和矩形标记。我无法处理路径 如何读取svg路径(d属性)并在kml中重建它们 主要问题源于这样一个事实,即svg路径不是简单的坐标序列,其中包含曲线。下面是我需要处理的svg路径输入示例: <html> <body> <svg width="10000" height="1000"> <path id="
<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.2
c0.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属性中的字符串中提取的值创建曲线
这种路径格式不是常见的在线路径格式;它是由其他人使用adobe illustrator创建的,现在我无法访问该软件。由于没有空格或常规逗号,我无法理解如何正确读取字符串。我找到了一种在JavaScript中将SVG路径转换为SVG多边形的简单方法。SVG多边形可以很容易地转换为KML placemarks,因为两者都使用坐标列表。此脚本可以放置在HTML文件中,并将直接在浏览器上运行。它将从您的计算机中获取一个SVG文件,并将修改后的文件保存为文本文件。我建议使用Chrome,因为SVG在其上保持固定大小,这确保坐标系保持完全相同
读取器
到多边形的SVG路径
document.getElementById(“文件阅读器”).addEventListener('change',function(){
var fr=new FileReader();
fr.onload=函数(){;
var d=new DOMParser().parseFromString(this.result.toString(),“image/svg+xml”);
var nodelist=d.querySelectorAll('path');
log(“路径数:“+nodelist.length”);
forEach(function(path){//这将使用多边形替换每个路径,保持相同的id。
var polygon=d.createElements(“http://www.w3.org/2000/svg“,”多边形“);
polygon.setAttribute(“id”,path.getAttribute(“id”);
log(“转换”+path.getAttribute(“id”);
var length=path.getTotalLength();
var p=path.getPointAtLength(0);
var stp=p.x+“,”+p.y;
对于(var i=1;iI无法使用现有转换器,因为我正在处理的某些事情是我的项目所独有的。有人可以再次激活此问题吗?我已经完全更改了它,包括输入的详细信息和一个特定问题。我只需要帮助评估路径的d属性中的值。KML不支持曲线,它只有y直线几何。但这可以通过在曲线上有很多点来解决,这样它看起来像一条曲线,而实际上它是许多直线段。我对圆做过这项工作,我使用64个点均匀地分布在圆周上,以获得一个非常好看的圆。我不太确定如何对贝塞尔c做这项工作这就是我对圆所做的(我传递一个点,它是一个具有x和y双值的对象;它是我创建的一个类;在本例中它是圆的中心):for(int I=0;I<64;I++){output.println((center.x+r*Math.cos)(Math.toRadians(5.625*I))+,“+(center.y+r*Math.sin(Math.toRadians(5.625*I)))} /Cord>这是C++中的解析器。Mozilla在某个地方也有一个生锈,如果你在Batik找到它,java中会有一个。