CADのDXFファイルをラスタファイルに変換する方法

土木関係に関わる生物調査だと、地図はCADデータで作られていて、それを使う必要があります。
高価なCADソフトやGISソフトがあれば、CADデータをそのまま読み込んで、ラスタデータに変換できます。
それをタダで、もしくはフリーで、さもなければ無料でできないか?ということで調べました。
結論は、地図の線は変換できるけど、テキストラベルは変換できなませんでした。以下、その方法です。

フリーな方法(テキストラベルは変換できない)

以下、OSGeo4Wからgdal 1.8preをインストールして利用します。

1.dxfファイルをmapinfoファイルに変換します。
ogr2ogr -f "MapInfo File" -a_srs epsg:2452 -spat 28000 -180000 31000 -177000 -sql "select * from entities where OGR_GEOMETRY != 'POLYGON'" out map.dxf
  • dxfファイルには、ポイント、ラインが混ざっているので、そのまま扱えるMapInfoに変換します。shpファイルでも、ポイント、ラインを別々に管理すればよいと思うかもしれませんが、dxfにはGEOMETRYCOLLECTION(複合パスのようなもの?)というのがあって、それがshpでは扱えないので、だめです。
  • a_srsで投影法を指定します。
  • spatで余分な範囲をなくします。
  • sqlで必要なオブジェクトだけ取り出します。
2.MapInfoからラスターに変換します。
gdal_rasterize -init 255 -burn 0 -tr 1 1 -l entities -ot Byte out map.tif

dxfから直接gdal_rasterizeすれば良いように思いますが、現在のところエラー(バグ?)でできません。

有料な方法

以下の、ソフトを使えば変換できます。多分。

自分用メモ

dxfからポイント、ライン、ポリゴンを分けてshpに変換する方法

ogrinfo Yoshida01.dxf -sql "select DISTINCT OGR_GEOMETRY from entities"
ogr2ogr point.shp Yoshida01.dxf -sql "select * from entities where OGR_GEOMETRY = 'POINT'"
ogr2ogr line.shp Yoshida01.dxf -sql "select * from entities where OGR_GEOMETRY = 'LINESTRING'"
ogr2ogr polygon.shp Yoshida01.dxf -sql "select * from entities where OGR_GEOMETRY = 'POLYGON'"