RでSPARQLが使えないかと検索してみたら、あった。
パッケージ名はそのままのSPARQL。
さっそく、dbpedia.orgのEndpointを使ってテストしてみた。
クエリは以前に使った日本の都道府県の人口を検索するもの。
せっかくなので、検索結果はKMLで出力する。
Google Earthで表示してみると、こんな感じ。
ちょっとデータのウェブを使っている感じがある。
昨今のオープンデータをSPARQLで探してこれるようにすると、面白いかもしれない。(read.csv等で読みこめばいいのだけど、ファイル自体を探してこないといけない)
むかしExcelをRDFに変換して、SPARQLで検索、グラフで表示ということをやっていたけど、あの苦労が嘘のよう。
以下はRのソース。
library(SPARQL)
library("sp")
library("rgdal")
url<-"http://dbpedia.org/sparql"
query<-"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wgs84_pos: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX yago: <http://dbpedia.org/class/yago/>
SELECT DISTINCT ?title ?lat ?lon ?populationTotal where{
?s rdf:type yago:PrefecturesOfJapan .
?s rdfs:label ?title .
? S dbpedia-owl: populationTotal ?populationTotal .
?s wgs84_pos:lat ?lat .
?s wgs84_pos:long ?lon .
filter langMatches(lang(?title),\"en\") .
}"
res<-SPARQL(url,query)
d<-res$result
coordinates(d)<-c('lon','lat')
proj4string(d)<-CRS("+init=epsg:2451")
writeOGR(d, dsn="hoge.kml", layer="sample", driver="KML")
2013年11月10日日曜日
2013年9月29日日曜日
ESXiでゲストOSのスナップショットを利用する
VMWare ESXではゲストOSのスナップショットを作成したり、復帰させたりが簡単にできる。
大きなシステム変更をする場合は、スナップショットを作成しておくと、安心して作業することができる。
以下、スナップショットの利用方法。
バージョンは以下のとおり。
まずは、ゲストOSのvmidを確認する。
vim-cmd vmsvc/snapshot.create
コマンドではsnapshotNameはオプションだけど省略すると失敗する。
大きなシステム変更をする場合は、スナップショットを作成しておくと、安心して作業することができる。
以下、スナップショットの利用方法。
バージョンは以下のとおり。
~ # esxcli system version get
Product: VMware ESXi
Version: 5.1.0
Build: Releasebuild-799733
Update: 0
まずは、ゲストOSのvmidを確認する。
~ # vim-cmd vmsvc/getallvmsVmid Name File Guest OS Version AnnotationゲストOSのスナップショットを作成するコマンド。
16 ssh [datastore1] ssh/ssh.vmx rhel6Guest vmx-07
32 www [datastore1] www/www.vmx rhel6_64Guest vmx-07
48 db [datastore1] db/db.vmx rhel6_64Guest vmx-07
64 rdfstore [datastore1] rdfstore/rdfstore.vmx rhel6_64Guest vmx-07
80 ubuntu [datastore1] ubuntu/ubuntu.vmx ubuntuGuest vmx-07
81 db2 [datastore1] db2/db2.vmx centos64Guest vmx-09
vim-cmd vmsvc/snapshot.create
~ # vim-cmd vmsvc/snapshot.create
Insufficient arguments.
Usage: snapshot.create vmid [snapshotName] [snapshotDescription] [includeMemory] [quiesced]
Creates a snapshot for the vm.
コマンドではsnapshotNameはオプションだけど省略すると失敗する。
~ # vim-cmd vmsvc/snapshot.create 16なのでsnapshotNameを付けてスナップショットを作成する。
Create Snapshot:
Create snapshot failed
~ # vim-cmd vmsvc/snapshot.create 16 "ssh"作成したスナップショットを確認する。
Create Snapshot:
~ # vim-cmd vmsvc/snapshot.get 16スナップショットで復元する場合は以下のコマンドを使う。
Get Snapshot:
|-ROOT
--Snapshot Name : ssh
--Snapshot Id : 1
--Snapshot Desciption :
--Snapshot Created On : 9/25/2013 5:4:59
--Snapshot State : powered off
~ # vim-cmd vmsvc/snapshot.revertスナップショットは差分だけとはいえディスク容量は食う。不要になったスナップショットは削除していったほうがいい。
Insufficient arguments.
Usage: snapshot.revert vmid snapshotId suppressPowerOff
Revert to a snapshot on the vm.
~ # vim-cmd vmsvc/snapshot.removeスナップショットは階層状に管理される。ツリーにできるかどうかはまだ未確認。
Insufficient arguments.
Usage: snapshot.remove vmid snapshotId [removeChildren]
Remove a snapshot on the vm.
~ # vim-cmd vmsvc/snapshot.create 16 "ssh"
Create Snapshot:
~ # vim-cmd vmsvc/snapshot.get 16
Get Snapshot:
|-ROOT
--Snapshot Name : ssh
--Snapshot Id : 1
--Snapshot Desciption :
--Snapshot Created On : 9/25/2013 5:4:59
--Snapshot State : powered off
--|-CHILD
----Snapshot Name : ssh
----Snapshot Id : 2
----Snapshot Desciption :
----Snapshot Created On : 9/27/2013 23:22:10
----Snapshot State : powered off
とりあえず便利な機能なので使ったほうがいい(反省も込めて)。
2013年8月29日木曜日
【Eclipse】XMLスキーマを利用したXMLデータの作成
EclipseのWeb Tools Platformに付いているXML編集機能を使うと、XMLスキーマを利用したXMLファイルの作成が相当楽になる。
まずは、ワークスペースに適当なXMLスキーマを読み込んでおく。今回はLIDO XML Schema(http://www.lido-schema.org/schema/v1.0/lido-v1.0.xsd)を利用した。
次に新規XMLファイルの作成を始める。
メニューからNew>Other...を選択して、
XML>XML Fileを選択し、Next>をクリックする。
作成するXMLファイルの名前を決めてNext>をクリック
ここではXMLファイルの作成方法Create XML file from an XML schema fileを選択し、Next>をクリック
ここではワークスペースからXML schema fileを選択し、Next>をクリックする。
ルート要素を選択し(LIDOの場合はlidoWrap)、Finishをクリック。
するとrequiredな要素を含んだXMLファイルが作られる。あとは必要な箇所を追記・変更していくようにすればよい。
超簡単。
このようにEclipse+WTPを使えば簡単にXMLデータを作ることができる。
2013年6月22日土曜日
Rでアニメーション
Rのanimationライブラリを使ってみた.
plotで出力した画像をくつけてアニメーションにする.
こんな感じ,
library(animation)
f<-4
wave<-function(n){w<-0;t<-seq(0,1,0.01);for(k in 1:n){w<-w+sin((2*k-1)*2*pi*f*t)/(2*k-1)};w<-4/pi*w}
wave2<-function(x){for(n in 1:x){plot(x=seq(0,1,0.01),y=wave(n),type="l",main=paste("Square wave(n=",n,")"),xlab="Time(sec)",ylab="Amplitude")}}
saveMovie(wave2(30),interval=0.5,moviename="wave",movietype="gif",outdir=getwd(),width=640,height=480)
で,できたアニメーションはこちら.
グラフの変化をみせるにはいいツールだね.
2013年5月31日金曜日
RでKMLファイルを出力する
RとGoogle Earthを連携させることができるらしい.
検索してみると,縫村氏の「RとGoogle Earth を使った空間情報の可視化」と題したスライド資料を発見.
スライド資料ではRを使ってアメリカ地質調査所(USGS)の地震動データ(CSV)からKMLファイルを作成するやり方が紹介されていた.
こりゃ面白そうということで早速トライ.
DataFrameをSpatialPointsDataFrameに変換するところでハマったけど,proj4string(qk)<-CRS("+init=epsg:4326")とすることで解決.
無事,作成したKMLファイルをGoogle Earthに読み込ませることができました.
ちょっと見にくいけど,地震の発生箇所に目印が表示されています.
検索してみると,縫村氏の「RとGoogle Earth を使った空間情報の可視化」と題したスライド資料を発見.
スライド資料ではRを使ってアメリカ地質調査所(USGS)の地震動データ(CSV)からKMLファイルを作成するやり方が紹介されていた.
こりゃ面白そうということで早速トライ.
DataFrameをSpatialPointsDataFrameに変換するところでハマったけど,proj4string(qk)<-CRS("+init=epsg:4326")とすることで解決.
無事,作成したKMLファイルをGoogle Earthに読み込ませることができました.
ちょっと見にくいけど,地震の発生箇所に目印が表示されています.
うーん.こんなことが簡単にできてしまうなんてよい世の中になったものです.
Google Earthの使い方がわかってきました.こりゃ迫力あるわー.
Rのコンソール出力は以下のとおり.
Google Earthの使い方がわかってきました.こりゃ迫力あるわー.
Rのコンソール出力は以下のとおり.
> library(sp)
> library(rgdal)
> qk<-read.csv("http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.csv")
> head(qk)
time latitude longitude depth mag magType nst gap
1 2013-05-31T13:40:41.000Z 60.6428 -147.5946 3.60 3.4 Ml NA NA
2 2013-05-31T13:40:28.000Z 61.5455 -148.6714 28.50 2.9 Ml NA NA
3 2013-05-31T13:25:55.190Z -28.2755 -178.6027 262.93 5.2 mb 46 66.0
4 2013-05-31T13:24:51.800Z 33.6878 -119.1308 0.40 3.1 Ml 24 75.6
5 2013-05-31T13:06:50.150Z -20.3071 169.0243 34.03 5.1 mb 57 53.0
6 2013-05-31T11:32:41.100Z 40.1692 -121.1097 0.00 3.1 Md NA 46.8
dmin rms net id updated
1 NA 1.02 ak ak10727802 2013-05-31T13:49:58.971Z
2 NA 1.12 ak ak10727799 2013-05-31T13:48:21.339Z
3 1.1300000 0.94 us usb000hacp 2013-05-31T13:50:51.623Z
4 0.2245788 0.23 ci ci15352009 2013-05-31T13:32:07.619Z
5 2.7200000 1.25 us usb000hacc 2013-05-31T13:42:49.516Z
6 0.2155957 0.38 nc nc72003416 2013-05-31T13:15:16.232Z
> coordinates(qk)<-c("latitude","longitude")
> class(qk)
[1] "SpatialPointsDataFrame"
attr(,"package")
[1] "sp"
> summary(qk)
Object of class SpatialPointsDataFrame
Coordinates:
min max
longitude -178.6027 169.0243
latitude -28.2755 66.2616
Is projected: NA
proj4string : [NA]
Number of points: 33
Data attributes:
time depth mag
2013-05-30T14:09:44.000Z: 1 Min. : 0.00 Min. :2.500
2013-05-30T14:38:25.650Z: 1 1st Qu.: 10.00 1st Qu.:3.000
2013-05-30T14:54:01.000Z: 1 Median : 28.50 Median :3.300
2013-05-30T17:46:40.000Z: 1 Mean : 46.29 Mean :3.739
2013-05-30T18:37:00.620Z: 1 3rd Qu.: 67.70 3rd Qu.:4.600
2013-05-30T20:41:29.000Z: 1 Max. :262.93 Max. :5.300
(Other) :27
magType nst gap dmin
mb :13 Min. : 5.00 Min. : 33.0 Min. : 0.01797
mb_Lg: 1 1st Qu.: 16.00 1st Qu.: 75.6 1st Qu.: 0.73033
Md : 6 Median : 28.00 Median :109.0 Median : 1.21000
Ml :12 Mean : 36.15 Mean :136.1 Mean : 3.43408
Mw : 1 3rd Qu.: 46.50 3rd Qu.:174.1 3rd Qu.: 2.47250
Max. :109.00 Max. :324.0 Max. :32.25000
NA's :13 NA's :9 NA's :9
rms net id updated
Min. :0.1200 ak: 9 ak10726951: 1 2013-05-30T14:22:58.908Z: 1
1st Qu.:0.3100 ci: 1 ak10727009: 1 2013-05-30T16:41:03.895Z: 1
Median :0.8200 hv: 1 ak10727095: 1 2013-05-30T16:56:39.447Z: 1
Mean :0.7391 nc: 3 ak10727182: 1 2013-05-30T18:00:03.809Z: 1
3rd Qu.:1.0200 pr: 5 ak10727211: 1 2013-05-30T20:39:31.117Z: 1
Max. :1.2900 us:14 ak10727538: 1 2013-05-30T22:47:39.888Z: 1
(Other) :27 (Other) :27
> proj4string(qk)<-CRS("+init=epsg:4326")
> summary(qk)
Object of class SpatialPointsDataFrame
Coordinates:
min max
longitude -178.6027 169.0243
latitude -28.2755 66.2616
Is projected: FALSE
proj4string :
[+init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84
+towgs84=0,0,0]
Number of points: 33
Data attributes:
time depth mag
2013-05-30T14:09:44.000Z: 1 Min. : 0.00 Min. :2.500
2013-05-30T14:38:25.650Z: 1 1st Qu.: 10.00 1st Qu.:3.000
2013-05-30T14:54:01.000Z: 1 Median : 28.50 Median :3.300
2013-05-30T17:46:40.000Z: 1 Mean : 46.29 Mean :3.739
2013-05-30T18:37:00.620Z: 1 3rd Qu.: 67.70 3rd Qu.:4.600
2013-05-30T20:41:29.000Z: 1 Max. :262.93 Max. :5.300
(Other) :27
magType nst gap dmin
mb :13 Min. : 5.00 Min. : 33.0 Min. : 0.01797
mb_Lg: 1 1st Qu.: 16.00 1st Qu.: 75.6 1st Qu.: 0.73033
Md : 6 Median : 28.00 Median :109.0 Median : 1.21000
Ml :12 Mean : 36.15 Mean :136.1 Mean : 3.43408
Mw : 1 3rd Qu.: 46.50 3rd Qu.:174.1 3rd Qu.: 2.47250
Max. :109.00 Max. :324.0 Max. :32.25000
NA's :13 NA's :9 NA's :9
rms net id updated
Min. :0.1200 ak: 9 ak10726951: 1 2013-05-30T14:22:58.908Z: 1
1st Qu.:0.3100 ci: 1 ak10727009: 1 2013-05-30T16:41:03.895Z: 1
Median :0.8200 hv: 1 ak10727095: 1 2013-05-30T16:56:39.447Z: 1
Mean :0.7391 nc: 3 ak10727182: 1 2013-05-30T18:00:03.809Z: 1
3rd Qu.:1.0200 pr: 5 ak10727211: 1 2013-05-30T20:39:31.117Z: 1
Max. :1.2900 us:14 ak10727538: 1 2013-05-30T22:47:39.888Z: 1
(Other) :27 (Other) :27
> writeOGR(qk, dsn="qk.kml", layer="sample", driver="KML")
ラベル:
google earth,
KML,
R
2013年5月3日金曜日
Javaアプリを.Appとする
JavaアプリをMac OS Xの.appにする方法が解ったのでメモ.
結論から書くと,附属ツールの「Jar Bundler.app」を使えばよい.
ツールのインストール場所は以下のとおり.
$ open /usr/share/java/Tools/Jar\ Bundler.app
[Build Information]タブ
main classを選択する.アイコンの変更もここ.
[Classpath and Files]タブ
Classpathの設定を行う.アプリ起動に必要なライブラリはここで追加する.
なお,jarファイル内のMETA-INF/MANIFEST.MFにあるClass-pathは参照しないようなのでライブラリバンドルなjarは展開して,ここのClasspathに追加する.
[Properties]タブ
Heap memoryやvmオプションの指定はここ.
最後に[Create Application...]ボタンをクリックして,.appファイルを生成する.
以上でJavaアプリを.appとすることができる.
Launchpadにも登録できるはずだ.
最近javaの雲行きが怪しいことが気になるけど.
結論から書くと,附属ツールの「Jar Bundler.app」を使えばよい.
ツールのインストール場所は以下のとおり.
$ open /usr/share/java/Tools/Jar\ Bundler.app
[Build Information]タブ
main classを選択する.アイコンの変更もここ.
[Classpath and Files]タブ
Classpathの設定を行う.アプリ起動に必要なライブラリはここで追加する.
なお,jarファイル内のMETA-INF/MANIFEST.MFにあるClass-pathは参照しないようなのでライブラリバンドルなjarは展開して,ここのClasspathに追加する.
[Properties]タブ
Heap memoryやvmオプションの指定はここ.
最後に[Create Application...]ボタンをクリックして,.appファイルを生成する.
以上でJavaアプリを.appとすることができる.
Launchpadにも登録できるはずだ.
最近javaの雲行きが怪しいことが気になるけど.
2013年4月29日月曜日
Processing + OpenCV
Mac OS XのProcessingでOpenCVを使おうとしてちょっと手間取ったのでメモ.
以下,インストール方法.
インストール方法
OSのバージョンは以下のとおり.
$ uname -a Darwin macserver.local 11.4.2 Darwin Kernel Version 11.4.2: Thu Aug 23 16:25:48 PDT 2012; root:xnu-1699.32.7~1/RELEASE_X86_64 x86_64
opencvはportでインストール.バージョンは2.4.5.
$ sudo port install opencv $ sudo port list | grep opencv Password: opencv @2.4.5 graphics/opencv
processingにjavacvproライブラリをインストールする.
ダウンロードは下記URLから
最新バージョンは0.5.
インストールはシンプル.
展開したファイルをprocessingのlibrariesディレクトリにコピーする.
$ wget http://www.mon-club-elec.fr/mes_downloads/javacvPro-0.5.zip $ unzip javacvPro-0.5.zip $ mv javacvPro ~/Document/Processing/libraries/ $ cd ~/Documents/Processing/libraries/
ライブラリのインストールはこれで完了だが,このままではopencvのバージョン違いによりエラーとなるので,javacvを入れ替える.
javacvライブラリ(https://code.google.com/p/javacv/)をコンパイルする.
$ wget --no-check-certificate https://javacv.googlecode.com/files/javacv-0.5-src.zip $ unzip javacv-0.5-src.zip $ cd javacv $ sudo mvn -X instal
javacvproのライブラリと入れ替える.
$ cd ~/.m2/repository/com/googlecode/javacv/javacv/0.5 $ cp javacv-0.5-macosx-x86_64.jar ~/Documents/Processing/libraries/javacvPro/library/javacv-macosx-x86_64.jar $ cp javacv-0.5.jar ~/Documents/Processing/libraries/javacvPro/library/javacv.jar
javacppも入れ替える.
$ cd ~/.m2/repository/com/googlecode/javacpp/javacpp/0.5 $ cp javacpp-0.5.jar ~/Documents/Processing/libraries/javacvPro/library/javacpp.jar
これでjavacvProが動くようになる.
試しにサンプルを動かしてみる.
processingを起動し,[File]>[Examples]の順にメニューを開く.
[Contributed Librarires]の項目に[javacvPro]の項目が表示されるので,適当なものをダブルクリックし,スケッチを実行する.
ちなみに顔認識用学習データは「/opt/local/share/OpenCV」になるので,顔認識系のサンプルでは学習データのパスを書き換える.
トラブルシューティング
今回,遭遇したエラー.まずは,processingを64bit modeにしなかった場合のエラー.opencvは64bitライブラリとしてコンパイルされるのでprocessingを32bitモードから64bitモードへと変更しておくこと.
Exception in thread "Animation Thread" java.lang.UnsatisfiedLinkError: no jniopencv_core in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758) at java.lang.Runtime.loadLibrary0(Runtime.java:823) at java.lang.System.loadLibrary(System.java:1045) at com.googlecode.javacpp.Loader.load(Loader.java:358) at com.googlecode.javacpp.Loader.load(Loader.java:285) at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:129) at monclubelec.javacvPro.OpenCV.<clinit>(Unknown Source) at javacvpro_exemple_cascade_detect.setup(javacvpro_exemple_cascade_detect.java:45) at processing.core.PApplet.handleDraw(PApplet.java:2241) at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:243) at processing.core.PApplet.run(PApplet.java:2140) at java.lang.Thread.run(Thread.java:680)
つぎはjavacvライブラリを入れ替えない場合のエラー.「libopencv_core.2.3.dylib」が見つからないといっている.シンボリックリンクを用意するだけでもエラーは回避できたが,今回はライブラリをコンパイルし直した.
Exception in thread "Animation Thread" java.lang.UnsatisfiedLinkError: /private/var/folders/yv/dgfgdbv51slf_rmgt8w497gm0000gn/T/libjniopencv_core395287537304450378.dylib: Library not loaded: /opt/local/lib/libopencv_core.2.3.dylib Referenced from: /private/var/folders/yv/dgfgdbv51slf_rmgt8w497gm0000gn/T/libjniopencv_core395287537304450378.dylib Reason: image not found at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1827) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703) at java.lang.Runtime.load0(Runtime.java:770) at java.lang.System.load(System.java:1020) at com.googlecode.javacpp.Loader.load(Loader.java:352) at com.googlecode.javacpp.Loader.load(Loader.java:285) at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:129) at monclubelec.javacvPro.OpenCV.<clinit>(Unknown Source) at sketch_130428a.setup(sketch_130428a.java:25) at processing.core.PApplet.handleDraw(PApplet.java:2117) at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:193) at processing.core.PApplet.run(PApplet.java:2020) at java.lang.Thread.run(Thread.java:680)
登録:
投稿 (Atom)
















