# coding: utf-8
#! 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] )
X → Y, dom(X) = (緯度, 経度), dom(Y) = array
#!/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