3

如何找出 svg 的坐标?我有一个包含地图的 Adob​​e Illustrator 文件,该文件已绘制并划分为美国各州,如何找到每个州的坐标?

我只是以美国地图为例,我可能会将这种技术用于其他几个地图(更本地化!!)。

4

2 回答 2

2

SVG 具有 XML 结构。状态将在<path>标签中,希望在某处带有状态名称作为属性。路径的坐标由d属性定义,但它们可能会变得非常复杂,因为它们可以是相对的或绝对的,并且具有各种类型的曲线。对于曲线,只考虑最后两个值可能是最简单的,也就是曲线结束的地方。

有关详细信息,请参阅:http ://www.w3.org/TR/SVG/paths.html#PathDataGeneralInformation

如果对路径应用进一步的变换,情况可能会更复杂。祝你好运!

于 2011-08-05T10:00:09.237 回答
2

Inkscape 做得很好。它有一个命令界面,在http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html中有描述。(该链接指向其作者Tavmjong Bah 网站上的手册副本。请注意,它警告该手册尚未针对最新版本的 Inkscape 进行更新。但是,当我尝试该命令时,它运行良好。 )

这个命令

inkscape -S some_file.svg

将输出包含元素 id、左上角的 x 和 y 坐标以及元素的宽度和高度的行。SVG 的每个元素都有一行。这是一个例子:

svg2293,26.447175,24,97.105652,92.450851
layer1,26.447175,24,97.105652,92.450851
MyStar,26.447175,24,97.105652,92.450851

此示例来自http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine-Query.html。它从包含星形的 SVG 中提取信息,如我的第一个链接所示。

在我的 Windows 10 系统上,Inkscape 位于c:\Program Files\Inkscape\,并且可执行文件位于其 bin\ 子目录中。如果我cd进入该子目录,Windows 将识别该inkscape命令;同样,如果我从其他地方使用可执行文件的完整路径,例如

"c:\Program Files\Inkscape"\bin\inkscape -S some_file.svg

把它放在我的 PATH 上大概也可以。

Inkscape 有许多其他命令,其中包括用于提取有关对象位置和大小的信息的其他命令。后者称为“查询命令”。可以提取有关指定对象的信息,例如

inkscape --query-id=zoom-in -X /usr/share/inkscape/icons/icons.svg

这是在 Linux 系统的默认图标文件中查找放大图标的 x 位置的示例。

要将输出保存到文件,请使用>. 例如

"c:\Program Files\Inkscape"\bin\inkscape -S some_file.svg > coords.txt

看到实际示例令人放心,这里有两个此工作的屏幕截图。

来自 DOS 的 Inkscape -S 命令的屏幕截图

来自 DOS 的 Inkscape -S 命令的屏幕截图

一旦您将数据保存在文件中,您就可以将其读入程序。下面是我在 R 编程语言中使用read_csv函数 ( https://readr.tidyverse.org/reference/read_delim.html ) 执行此操作的屏幕截图。这会将数据放入一个表格中,然后我将其显示出来。

![R 的 read_csv 函数读取此数据的屏幕截图

于 2015-02-03T23:40:59.553 回答