2009年1月12日月曜日

geotoolsをjythonで利用する はてなブックマークに追加

国土地理院が出している基盤地図情報を見てみようと思ったのですが、自分の環境では、JPGIS形式の変換ツールが使えない。。。仕方ないのでGML版をGDAL/OGLで変換しようと思ったのですが、どうもうまくいかない。。。しゃあないので他の調べてみたらgeotoolsというJAVAのGIS Tool kitを発見した。
結構おもしろそうなツールですが、Javaはダメなんでjython経由で使って見ました。


shape fileにアクセスするサンプル

こちらの世界の人口データから、国名と人口を取り出す。

shape.py



"""
Usage:
CLASSPATH="/home/nishioka/src/geotools-2.5.1/gt-epsg-hsql-2.5.1.jar" jython shape.py

"""
import java.net.URL as uri
import java.io.File
import org.geotools.data.shapefile.ShapefileDataStore as shp


src = uri("file:////home/nishioka/data/TM_WORLD_BORDERS_SIMPL-0.3.shp")
data = shp(src)

name = data.getTypeNames()
#s = data.getSchema()
s = data.getSchema(name[0])

src = data.getFeatureSource(name[0])

ft = src.getSchema()
coll = src.getFeatures()
print coll.size()

it = coll.features()

while (it.hasNext() ):
f = it.next()
print str(f.getAttribute(5))+" "+ str(f.getAttribute(7))





実行結果




CLASSPATH="/home/nishioka/src/geotools-2.5.1/gt-shapefile-2.5.1.jar" ¥
jython
shape.py
246
Antigua and Barbuda 83039
Algeria 32854159
Azerbaijan 8352021
Albania 3153731
Armenia 3017661
Angola 16095214
American Samoa 64051
Argentina 38747148
Australia 20310208
Bahrain 724788
Barbados 291933
Bermuda 64174
Bahamas 323295
Bangladesh 15328112
Belize 275546
Bosnia and Herzegovina 3915238
Bolivia 9182015
Burma 47967266
Benin 8490301


今日はここまで。
どうも、GMLは非公式サポートでうまく読み込むことができなさそう。。。
結局windowsの変換ツールを使うのがFAっぽいのですが、もう少し調査します。


今日の参考リンク
SHPファイルへGeoToolsを使用してJavaからアクセスする為の基本コード - Blue blue glass moon
Technical Ramblings > Blog Archive > Using Jython + GeoTools

http://thematicmapping.org/downloads/world_borders.php

0 件のコメント: