#! ruby -Ku # -*- coding: utf-8 -*- require 'pp' require 'rubygems' require 'sqlite3' require 'date' # SQLite 3 のデータベースファイル名を DBNAME に設定してください. # Windows の場合. 「C:」のようなドライブ名を付ける #DBNAME = "C:/SQLite/mydb" # Linux の場合 DBNAME = "/var/SQLite/mydb" DBDIR = File.dirname( DBNAME ) DBBASENAME = File.basename( DBNAME ) # データベースオープン Dir.chdir( File.dirname( File.expand_path( DBNAME ) ) ) db = SQLite 3::Database.new( DBNAME ) # # 乱数の発生、分布は引数で指定 # def symbol_set(s, d) # 実行例 symbol_set( ["平日", "土曜", "日曜"], [5, 1, 1] ) # 累積分布 c = [0, 5, 6, 7] c = Array.new(d.size + 1) c[0] = 0 for i in 1..d.size do c[i] = c[i-1] + d[i-1] end # 変換表 t = [-1, 0, 0, 0, 0, 0, 1, 2], m = 7 m = c[ d.size ] t = Array.new(m + 1) t[0] = -1 for i in 1..d.size do for j in (c[i - 1])..(c[i] - 1) do t[j + 1] = i - 1 end end # a = Array.new(2) a[0] = t a[1] = m p a[0][(a[1] * rand) + 1] end def date_set(yy1, mm1, dd1, yy2, mm2, dd2) date1 = Date::new(yy1, mm1, dd1) date2 = Date::new(yy2, mm2, dd2) len = date2.jd - date1.jd + 1 # len は date1 から date2 までの日数+1 a = Array.new(2) a[0] = date1 a[1] = len d = a[0] + (a[1] * rand) p DateTime.new(d.year, d.month ,d.day, (24 * rand).truncate, (60 * rand).truncate, (60 * rand).truncate, 0.375) end date_set(2012, 4, 1, 2013, 3, 31) # symbol_set( ["平日", "土曜", "日曜"], [5, 1, 1] )
#!/bin/bash # Windows の場合. 「C:」のようなドライブ名を付ける #DBNAME="C:/SQLite/mydb" # Linux の場合 DBNAME="/var/SQLite/mydb" # # # rm -f /tmp/1.$$.sql cat > /tmp/1.$$.sql <<-COMMAND cat /tmp/1.$$.sql | sqlite3 ${DBNAME}
#!/bin/bash # <前準備> # 駅データ.jp からダウンロード #都道府県 pref.csv #事業者 company20130120.csv #接続駅 join20130404.csv #路線 line20130617free.csv #駅 station20130529free.csv # Windows の場合. 「C:」のようなドライブ名を付ける #DBNAME="C:/SQLite/mydb" # Linux の場合 DBNAME="/var/SQLite/mydb" # # # rm -f /tmp/1.$$.sql cat > /tmp/1.$$.sql <<-COMMAND COMMAND cat /tmp/1.$$.sql | sqlite3 ${DBNAME}
#!/bin/bash # Windows の場合. 「C:」のようなドライブ名を付ける #DBNAME="C:/SQLite/mydb" # Linux の場合 DBNAME="/var/SQLite/mydb" # # # rm -f /tmp/1.$$.sql cat > /tmp/1.$$.sql <<-COMMAND COMMAND cat /tmp/1.$$.sql | sqlite3 ${DBNAME}
#!/bin/bash # # # rm -f /tmp/1.$$.r cat > /tmp/1.$$.r <<-COMMAND library(cluster) library(KernSmooth) library(MASS) library(RSQLite) driver=dbDriver("SQLite") con=dbConnect(driver, "/var/SQLite/mydb") R = dbGetQuery(con,"SELECT 駅名称 as name, 経度 as lat, 緯度 as lon from A駅 where 事業者名一般 = '名古屋鉄道';") png("/tmp/1.png") plot(R\$lat, R\$lon) library(EBImage) im <- Image(1, c(300,200)) im[100,100] = 0 dm <- distmap(im) png("/tmp/2.png") image(normalize(dm@.Data)) a <- min(R\$lat) b <- max(R\$lat) - min(R\$lat) c <- min(R\$lon) d <- max(R\$lon) - min(R\$lon) X <- ( R\$lat - a ) / b Y <- ( R\$lon - c ) / d print(X) print(Y) library(EBImage) im <- Image(1, c(512,512)) for (i in 1:length(X) ) { im[floor(512.0 * X[i]), floor(512.0 * Y[i])] = 0 } dm <- distmap(im) png("/tmp/3.png") image(normalize(dm@.Data)) density <- kde2d(X, Y, c(bandwidth.nrd(X), bandwidth.nrd(Y)), n=251, lims=c(0,1,0,1) ) png("/tmp/4.png") image(density) COMMAND cat /tmp/1.$$.r | R --vanilla # display /tmp/1.png & # display /tmp/2.png & exit echo install RSQLite echo install EBImage