マップを含む大きなPDFファイルがあります。PDFファイルはおそらくAutoCADで生成されました。
この画像は、色付きのラスターマップと、マップの上に線が引かれたベクトルで構成されています。 (街路など)
ラスターとベクトルを別々に操作する必要があります。 Photoshopにインポートすると、1つのレイヤーしか表示されません。 Adobe PDF Readerで、レイヤータブを選択すると、1つのレイヤーしか表示されません。ただし、ファイルをレンダリングすると、最初にマップが描画されるため、複数のレイヤーがあると確信しています。背景、そして上にベクターの描画を開始した後でのみ。十分に速い場合は、実際に「print screen」を使用して背景ラスターを保存できます。その画像とベクターを抽出するには、より信頼性の高い方法が必要です。
Ghostscriptのようなオープンソースツールを使用して、PDFをテキスト、ラスター、ベクターデータなどの重要な部分に分割できますか?そして、彼らはそれらすべてをフォルダに入れましたか?
Inkscape を使用した1つの手動ソリューションを見つけました。それを自動化する方法を探しています。
これを行うコマンドラインの方法を見つけました。
inkscape -z -i g2846 -j -D -d 300 test3.pdf -e 3.png
参照ドキュメント: https://inkscape.org/sk/doc/inkscape-man.html
パラメータの説明:
-z
:GUIなし、コマンドラインでのみinkscapeを実行-i g2846
:エクスポートする特定のグループ/レイヤーIDを選択します。 Inkscape guiの上記の手動手順で、このID /ラベルを知ることができました。-j
:エクスポートで他のすべてのレイヤーなどを非表示にします-D
:エクスポート画像の寸法を図面/ドキュメント全体と同じに保ち、抽出されたオブジェクトの位置を維持します。 (これは、元のオブジェクトが回転/ワープされ、元のオブジェクトを出力したくない場合、または複数のレイヤーを実行していて、キャンバス上の位置を維持する必要がある場合に重要です)-d 300
:300 DPI:デフォルトでは、出力pngの損失が大きすぎました。この設定により、すべてが良好に保たれました。test3.pdf
:私の入力pdf-e 3.png
:PNGとしてエクスポートし、ファイル名を指定します。残念ながら、現時点では一度に1つのオブジェクト/レイヤーしか抽出できません。複数のレイヤーを許可するように要求するinkscapeに対してファイルされたバグがあります: 複数の-i(-export-id = ID)オプションを許可します 。
[編集]複数の(すべてではない)レイヤーが必要な場合の別の回避策:上記で共有したinkscape
コマンドを使用して、個々のレイヤーを次のように取り出します。1.png, 2.png, 3.png
次に、次のコマンドを実行します imagemagick :
$ convert -page +0+0 1.png \
-page +0+0 2.png \
-page +0+0 3.png \
-layers merge +repage merged.png
これで、レイヤーがmerged.png
にマージされます。
AutoCADバージョンで作業するか、そこから別のレイヤーとしてエクスポートする必要があります。 PDFにエクスポートされると、個別のレイヤーとして編集できないビットマップ画像になります。
私は2019年9月に投稿されたこの記事に出くわしました: https://north-road.com/2019/09/03/qgis-3-10-loves-geopdf/
どうやらそれが「GeoPDF」なら、それをQGISにインポートして、すべてのベクターレイヤーなどを取得できます。そしてもちろん、QGISではレイヤーで何でもできます。簡単に試す価値があるかもしれません。