2009年11月19日木曜日

Shapeファイル読んだ

なかなかすすまない、というか
100%寄り道なのでやる気がいつもの1/5ぐらいしか無いため
1/25の開発速度でお送りしております。

あいつもこいつもそいつもどいつも Shape ファイルにしまくる!と思い立ったものの
Shapeファイルについてよく知ってるわけでもないし
そもそもビューワーも持ってない。開ける環境ゼロ。
バイナリエディタで目視キャストもできるけど、
リトルエンディアンのdouble (64bit)を千点とか人間業じゃないですから!

これじゃあ変換したファイルがうまく動かなくても何が原因だかわからない。
ファイル形式だって、わかりやすく書いてあるものを見たことが無い。
がんばって読んだら解析できそうなファイル (PDF)があるだけ。
shapeファイルをイラストレーターに変換するプラグインって言葉に引き寄せられたらこの値段!
魔法を学ぼうとでもしている気分。

C言語以外でバイナリを読む方法も知ってるとは言えないので
とりあえず適当にshpファイルを開いて
printしまくるスクリプトを書いてみた。
読んだのはくらうどめいどさんのosmの日本shapefile。


Array
(
[fc] => 9994
[pad] =>
[filelength] => 3692306
[version] => 1000
[type] => 3
[xmin] => 122.9385801
[ymin] => 24.2198898
[xmax] => 145.81825
[ymax] => 45.5230457
[zmin] => 0
[zmax] => 0
[mmin] => 0
[mmax] => 0
)
num:1 len:184
shapetype:3
PolyLine Shape
Array
(
[xmin] => 122.9385801
[ymin] => 24.4479649
[xmax] => 122.944963
[ymax] => 24.4540844
[nparts] => 1
[npoints] => 20
)

partsArray
(
[] => 0
)

points:20
x:122.9392139 y:24.4506847
x:122.9409341 y:24.4512616
x:122.9414547 y:24.452333
x:122.9406398 y:24.4520446
x:122.9400513 y:24.452642
x:122.9416131 y:24.4540844
x:122.9419526 y:24.4538165
x:122.9417489 y:24.4534869
x:122.9424506 y:24.4531366
x:122.9424958 y:24.4525803
x:122.9434012 y:24.4521476
x:122.9440077 y:24.4519885
x:122.9441481 y:24.4519828
x:122.944963 y:24.4512204
x:122.944895 y:24.4503344
x:122.9432201 y:24.4504169
x:122.9408662 y:24.4479649
x:122.940811 y:24.4479953
x:122.9390328 y:24.4489744
x:122.9385801 y:24.4498193


以下略。
PolyLine以外の存在は考慮してない。
とりあえず読めたってことで。
数値はそれっぽいし!

インデックスのファイルは無視。
なんかDBついてるからこれも読むの作ってみるか。

0 件のコメント:

コメントを投稿