#! ruby -Ku # -*- coding: utf-8 -*- require 'pp' require 'rubygems' require 'sqlite3' require 'date' # SQLite3 のデータベースファイル名を 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 = SQLite3::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