LoginSignup
1
2

More than 5 years have passed since last update.

GeoPDFからデータを抜き出す

Posted at

GeoPDFは、地理情報を交換するためのPDF拡張である。
主にアメリカの一般向け官製地図に使用されていて、以下のサイトからダウンロードできる。

この形式は、一般的なPDFビューアーで表示できるように、基本的な部分はPDFである。
従って、情報を抜き取る際には、PDFの仕様を元に、座標情報を取得し、拡張部分に記載されている投影法や変換パラメータを使って実際の座標に変換すれば良い。

PDFの仕様については、以下を
http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf

また、GeoPDF特有の投影法や測地系などの内容については、Open Geospatial Consortiumの以下を。
http://portal.opengeospatial.org/files/?artifact_id=33332

その情報がどういった地物なのかは、レイヤー情報として入っているので、どのレイヤーかによって一応の判別ができる。

ところが同じレイヤーに含まれていても、異なった表現がされている情報が多々ある。
no1.png

Structures部分を例にとると、郵便局、警察、病院等が実際には区別されている。
点情報については選択可能なので、Acrobatの編集機能で確認すると、ESRI Default Markerという謎のフォントを使った文字列が設定されている。

no2.png

どうやら、点情報については、文字列に対して特殊なフォントを指定して表示させているようだ。
ちなみに消防署(F)や病院(H)は通常のフォントを使っている。

ここまで分かれば、後は文字列と記号のマッピングだけである。

内容 文字コード
墓地 0x232122
郵便局 0x253f253f4f50
警察 0x5c5e
学校 0x253f6e
消防署 0x46
病院 0x48

さてこれで終了。

と、一筋縄で行かないのがアメリカ。
多分と思って別のファイルで検証すると、同じ地物に違った文字列を当てている。

内容 文字コード
墓地 0x2122
郵便局 0x26504f
警察 0x5e
学校 0x253f3f356e, 0x253f3f353f3f405454, 0x253f3f353f40054, 0x253f3f356e
消防署 0x0046
病院 0x0048

しかも文字列の途中に'\0'が入っていたりとかなり曲者。

という訳で、今後もどんなものが出てくるか分からないので、理解不能な文字列をトラップできるようにしておかなければならない。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2