3

svg の座標を調べるにはどうすればよいですか? 地図を含む Adob​​e Illustrator ファイルがあります。これは描画され、米国の州に分けられています。各州の座標を見つけるにはどうすればよいですか?

例として米国のマップを使用しているだけです。この手法を他のいくつかのマップに使用する可能性があります (はるかにローカルです!!)。

4

2 に答える 2

2

SVG は XML 構造を持っています。州は<path>タグに含まれ、できれば州の名前が属性としてどこかに含まれます。パスの座標はd属性によって定義されますが、相対または絶対であり、さまざまな種類の曲線があるため、非常に複雑になる可能性があります。曲線では、曲線が終了する最後の 2 つの値だけを考慮するのがおそらく最も簡単です。

詳細については、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 の Web サイトにあるマニュアルのコピーへのリンクです。マニュアルが Inkscape の最新バージョン用に更新されていないことを警告していることに注意してください。ただし、試してみると、コマンドは正常に機能しました。 )

このコマンド

inkscape -S some_file.svg

要素 ID、左上隅の x 座標と y 座標、および要素の幅と高さを含む行を出力します。SVG の要素ごとに 1 行あります。次に例を示します。

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\ サブディレクトリにあります。そのサブディレクトリに移動すると、Windows はコマンドcdを認識します。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

実際の例を見ると心強いので、この作業の 2 つのスクリーンショットを次に示します。

DOS からの Inkscape -S コマンドのスクリーンショット

DOS からの Inkscape -S コマンドのスクリーンショット

ファイルにデータがあれば、それをプログラムに読み込むことができます。read_csv以下は、関数 ( https://readr.tidyverse.org/reference/read_delim.html )を使用して、R プログラミング言語でこれを行っているスクリーンショットです。これにより、データがテーブルに配置され、それが表示されます。

![このデータを読み取る R の read_csv 関数のスクリーンショット

于 2015-02-03T23:40:59.553 に答える