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に読み込ませることができました.

ちょっと見にくいけど,地震の発生箇所に目印が表示されています.


うーん.こんなことが簡単にできてしまうなんてよい世の中になったものです.

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")

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の雲行きが怪しいことが気になるけど.