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
その情報がどういった地物なのかは、レイヤー情報として入っているので、どのレイヤーかによって一応の判別ができる。
ところが同じレイヤーに含まれていても、異なった表現がされている情報が多々ある。
Structures部分を例にとると、郵便局、警察、病院等が実際には区別されている。
点情報については選択可能なので、Acrobatの編集機能で確認すると、ESRI Default Markerという謎のフォントを使った文字列が設定されている。
どうやら、点情報については、文字列に対して特殊なフォントを指定して表示させているようだ。
ちなみに消防署(F)や病院(H)は通常のフォントを使っている。
ここまで分かれば、後は文字列と記号のマッピングだけである。
内容 | 文字コード |
---|---|
墓地 | 0x232122 |
郵便局 | 0x253f253f4f50 |
警察 | 0x5c5e |
学校 | 0x253f6e |
消防署 | 0x46 |
病院 | 0x48 |
さてこれで終了。
と、一筋縄で行かないのがアメリカ。
多分と思って別のファイルで検証すると、同じ地物に違った文字列を当てている。
内容 | 文字コード |
---|---|
墓地 | 0x2122 |
郵便局 | 0x26504f |
警察 | 0x5e |
学校 | 0x253f3f356e, 0x253f3f353f3f405454, 0x253f3f353f40054, 0x253f3f356e |
消防署 | 0x0046 |
病院 | 0x0048 |
しかも文字列の途中に'\0'が入っていたりとかなり曲者。
という訳で、今後もどんなものが出てくるか分からないので、理解不能な文字列をトラップできるようにしておかなければならない。