ogr2ogr †
ライセンス ...
簡単な使用方法 †
ogr2ogr -f '出力形式' 出力ファイル 入力ファイル
使用方法 †
ogr2ogr [--help-general] [-skipfailures] [-append] [-update]
[-select field_list] [-where restricted_where]
[-sql <sql statement>]
[-spat xmin ymin xmax ymax] [-preserve_fid] [-fid FID]
[-a_srs srs_def] [-t_srs srs_def] [-s_srs srs_def]
[-f format_name] [-overwrite] [[-dsco NAME=VALUE] ...]
dst_datasource_name src_datasource_name
[-lco NAME=VALUE] [-nln name] [-nlt type] [layer [layer ...]]
dst_datasource_nameに出力ファイル名,src_datasource_nameに入力ファイル名を指定します。
| オプション | 説明 |
|---|---|
| -append | 出力ファイルがすでに存在する場合,そのファイルに値を追加 |
| -overwrite | 出力ファイルを上書き |
| -f format_name | 出力ファイル形式の指定 |
| -a srs_def | 出力ファイルに割り当てるSRS(空間参照系)を指定 |
表未完成
-fオプションで指定する出力形式は,オプションを付けずにogr2ogrを実行すると表示されます。
| -f "ESRI Shapefile" |
| -f "MapInfo? File" |
| -f "TIGER" |
| -f "S57" |
| -f "DGN" |
| -f "Memory" |
| -f "BNA" |
| -f "CSV" |
| -f "GML" |
| -f "GPX" |
| -f "KML" |
| -f "GeoJSON" |
| -f "GMT" |
| -f "Interlis 1" |
| -f "Interlis 2" |
| -f "PostgreSQL" |
--formatsオプションで確認することもできます。
ogr2ogr --formats
ESRI ShapeをKMLへ変換する例 †
ogr2ogr -f KML dist.kml source.shp
-fオプションで"KML"を指定することでKML形式に出力する例です。属性値(.dbfファイルの内容)は<description>タグ内にHTML形式で出力されます。
たとえば上図のような矩形のShapeファイル(1:25,000の図郭範囲)がありテーブル内容が
| FID | Shape* | NUMBER | NAME | REMARK |
|---|---|---|---|---|
| 0 | Polygon | 503033 | 福岡 |
となっている場合には以下の内容のKMLファイルを出力します。
<?xml version="1.0" encoding="utf-8" ?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Document>
<Folder>
<name>Sample</name>
<Placemark>
<description><![CDATA[
<b>NUMBER:</b><i>503033</i><br />
<b>NAME:</b><i>福岡</i><br />
]]></description>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates>
130.372666666666987, 中略 ,33.586611111111097
</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
<Style>
<LineStyle>
<color>ff0000ff</color>
</LineStyle>
<PolyStyle><fill>0</fill></PolyStyle>
</Style>
</Placemark>
</Folder>
</Document>
</kml>
<Folder>の<name>には変換したESRI Shapeファイル名が,<Placemark>の<description>には属性テーブルの内容がセットされています。NULL値の列(この場合はREMARK)は出力しないようです。
実際に出力したKMLファイルを見るにはこちらをクリックしてください。
ogr2ogrはKML出力の文字コードをUTF-8とみなして出力します。Shapeファイルの属性値の日本語は通常Shift-JISコードになっていますので,単に変換しただけではGoogle Earth上で文字化けします。日本語属性値を含むShapeファイルを変換した場合には,別途文字コード変換も行う必要があります。
# nkfを使ってShift-JISをUTF-8に変換する例 nkf -Sw --overwrite Shape2KMLSample.kml
ESRI ShapeをGeoJSONへ変換する例 †
-fオプションで"GeoJSON"を指定することでGeoJSON形式に出力する例です。属性値(.dbfファイルの内容)はproperties要素として出力されます。KML出力とは異なりNULL値の列も出力されます。
以下に見やすいように改行を挿入した出力結果を示します。これをjavascript側でevalすれば,連想配列のオブジェクトが作成されるはずです。
ogr2ogr -f GeoJSON outputfile.gjson FacetGSI25000Fukuoka.shp
// outputfile.gjson
{
"type": "FeatureCollection",
"features":
[
{ "type": "Feature",
"properties":
{
"NUMBER": 503033.000000,
"NAME": "福岡",
"REMARK": ""
},
"geometry":
{ "type": "Polygon",
"coordinates":
[
[
[ 130.372667, 33.586611 ],
[ 130.372667, 33.669944 ],
[ 130.497667, 33.669944 ],
[ 130.497667, 33.586639 ],
[ 130.372667, 33.586611 ]
]
]
}
}
]
}
実際に出力したGeoJSONファイルを見るにはこちらをクリックしてください。
ESRI ShapeをCSVへ変換する例 †
ogr2ogr -f CSV dist.csv source.shp
-fオプションで"CSV"を指定することでCSVのテキスト形式に出力する例です。ただし出力されるのは属性データのみで,座標値その他情報は出力されません。
Global Map(地球地図)をESRI Shapeへ変換する例 †
Global MapにアクセスするにはOGRがOGDIドライバに対応していなければなりません。以下の方法で確認することが出来ます。
ogr2ogr --formats # 出力結果 Supported Formats: -> "ESRI Shapefile" (read/write) -> "MapInfo File" (read/write) ...省略... -> "OGDI" (readonly) <============ OGDIドライバ -> "PostgreSQL" (read/write) -> "GRASS" (readonly)
Global Mapにアクセスするには引数にファイル名ではなくgltpのDNS文字列を渡します。DNSによるアクセスの詳細はこちらをご覧ください。
初めに,ogrinfoを使ってGlobal Mapの情報を確認します。
ディレクトリ名に大文字や"."等が含まれていると問題が発生する場合が多いようです。データを保存するディレクトリ名に注意する必要があります
ogrinfo -ro gltp:/vrf/ディレクトリ名/globalm/area
# 以下出力結果
INFO: Open of `gltp:/vrf/ディレクトリ名/globalm/area'
using driver `OGDI' successful.
1: tileref@tileref(*)_area (Polygon)
2: tilereft@tileref(*)_text (Point)
3: coastl@bnd(*)_line (Line String)
4: polbndl@bnd(*)_line (Line String)
5: polbnda@bnd(*)_area (Polygon)
6: builtupp@pop(*)_point (Point)
7: aerofacp@trans(*)_point (Point)
8: railrdl@trans(*)_line (Line String)
9: roadl@trans(*)_line (Line String)
この例では九つのレイヤが存在することが分かります。 レイヤをESRI Shapeファイルに変換するには以下のパラメータを付けます。
ogr2ogr 出力するShapeファイル名 地球地図URL文字列 レイヤ名
先に確認した1番目のレイヤ(tileref@tileref(*)_area)を変換するには以下を実行します。
ogr2ogr output.shp gltp:/vrf/ディレクトリ名/globalm/area 'tileref@tileref(*)_area'
レイヤ名を省略した場合には全てのレイヤが変換の対象となります。この場合ファイル名は自動的にレイヤ名となります。この場合はファイル名に@や()や*が含まれることになります。OSによっては注意する必要があるかもしれません。
投影情報(拡張子.prj)の無いESRI shapeファイルに情報をつける †
ogr2ogrの_a_srsオプションでSRIDを指定することで,ESRI shapeファイルに投影情報(shapeファイルと同名で.prjの拡張子を持つファイル)を作成することが出来ます。
ogr2ogr -a_srs SRS情報 出力先ディレクトリ 元のESRIShapファイル
以下は旧公共座標II系のfoo.shpファイルに投影情報を付加し,dis_dirディレクトリに出力する例です。
$ ls -1 ./src_dir foo.dbf foo.shp foo.shx $ mkdir dst_dir # 出力先ディレクトリを作成 $ ogr2ogr -a_srs EPSG:30162 ./dst_dir ./src_dir/foo.shp $ ls -1 ./dst_dir foo.dbf foo.prj # 投影情報ファイルが作成される foo.shp foo.shx
参考資料 †
Last-modified: Wed, 20 May 2009 19:23:17 JST (470d)

