[繧オ繧、繝医・繝・・縺ク] |
縺薙・ Web 繝壹・繧ク縺ァ縺ッ・・Open Street Map 縺ョ繝・・繧ソ繧剃スソ縺・ESQLite 3 縺ョ繝・・繝悶Ν繧堤函謌舌@縺セ縺吶E
笳・菴懈・縺吶kSQLite 3 繝・・繧ソ繝吶・繧ケ: osmdb
谺。縺ョ繧ウ繝槭Φ繝峨r菴ソ逕ィ縺吶k
Ubuntu縺ァ縺ョ繧、繝ウ繧ケ繝医・繝ォ謇矩焉Eセ・
sudo apt -y update sudo apt -y install osmosis
Ubuntu縺ァ縺ョ繧、繝ウ繧ケ繝医・繝ォ謇矩焉Eセ・
cd /tmp wget http://www.gaia-gis.it/gaia-sins/readosm-1.0.0b.tar.gz tar -xvzof readosm-1.0.0b.tar.gz cd readosm-1.0.0b ./configure make sudo make install
Ubuntu縺ァ縺ョ繧、繝ウ繧ケ繝医・繝ォ謇矩焉Eセ・
sudo apt -y update sudo apt -y install xalan
窶サ "c:\Program Files\7-Zip\7z.exe" xalan-c-1.11 繧剃スソ縺・◆縺・犇蜷・
Ubuntu縺ァ縺ョ繧、繝ウ繧ケ繝医・繝ォ謇矩焉Eセ・
sudo apt -y update sudo apt -y install libxerces-c2-dev cd /tmp tar -xvzof /tmp/xalan_c-1.11-src.tar.gz export XALANCROOT=/tmp/xalan-c-1.11/c cd $XALANCROOT ./runConfigure -p linux -c gcc -x g++ make clean make
Ubuntu縺ァ縺ョ繧、繝ウ繧ケ繝医・繝ォ謇矩焉Eセ・
sudo apt -y update sudo apt -y install r-base sudo apt -y install r-base-core sudo apt -y install r-base-dev sudo apt -y install r-recommended sudo apt -y install r-mathlib
Ubuntu縺ァ縺ョ繧、繝ウ繧ケ繝医・繝ォ謇矩焉Eセ・
echo 'options(repos="http://cran.md.tsukuba.ac.jp"); update.packages(checkBuilt=TRUE, ask=FALSE)' | sudo R --vanilla # sudo rm /tmp/a.$$.r echo 'source("http://bioconductor.org/biocLite.R")' > /tmp/a.$$.r echo 'biocLite("Rgraphviz") ' >> /tmp/a.$$.r # zoo echo 'install.packages("zoo") ' >> /tmp/a.$$.r # base echo 'install.packages("abind") ' >> /tmp/a.$$.r echo 'install.packages("boot") ' >> /tmp/a.$$.r echo 'install.packages("car") ' >> /tmp/a.$$.r echo 'install.packages("chron") ' >> /tmp/a.$$.r echo 'install.packages("cluster") ' >> /tmp/a.$$.r echo 'install.packages("codetools") ' >> /tmp/a.$$.r echo 'install.packages("colorspace") ' >> /tmp/a.$$.r echo 'install.packages("effects") ' >> /tmp/a.$$.r echo 'install.packages("foreign") ' >> /tmp/a.$$.r echo 'install.packages("lattice") ' >> /tmp/a.$$.r echo 'install.packages("lmtest") ' >> /tmp/a.$$.r echo 'install.packages("mgcv") ' >> /tmp/a.$$.r echo 'install.packages("multcomp") ' >> /tmp/a.$$.r echo 'install.packages("mvtnorm") ' >> /tmp/a.$$.r echo 'install.packages("relimp") ' >> /tmp/a.$$.r echo 'install.packages("rpart") ' >> /tmp/a.$$.r echo 'install.packages("sandwich") ' >> /tmp/a.$$.r echo 'install.packages("sm") ' >> /tmp/a.$$.r echo 'install.packages("spatial") ' >> /tmp/a.$$.r echo 'install.packages("strucchange") ' >> /tmp/a.$$.r echo 'install.packages("survival") ' >> /tmp/a.$$.r # additional echo 'install.packages("catspec") ' >> /tmp/a.$$.r echo 'install.packages("cluster") ' >> /tmp/a.$$.r echo 'install.packages("deldir") ' >> /tmp/a.$$.r echo 'install.packages("diagram") ' >> /tmp/a.$$.r echo 'install.packages("fields") ' >> /tmp/a.$$.r echo 'install.packages("fftw") ' >> /tmp/a.$$.r echo 'install.packages("gregmisc") ' >> /tmp/a.$$.r echo 'install.packages("igraph") ' >> /tmp/a.$$.r echo 'install.packages("nnclust") ' >> /tmp/a.$$.r echo 'install.packages("png") ' >> /tmp/a.$$.r echo 'install.packages("pvclust") ' >> /tmp/a.$$.r echo 'install.packages("rgl") ' >> /tmp/a.$$.r echo 'install.packages("scatterplot3d") ' >> /tmp/a.$$.r echo 'install.packages("som") ' >> /tmp/a.$$.r echo 'install.packages("Hmisc") ' >> /tmp/a.$$.r echo 'install.packages("Rcmdr") ' >> /tmp/a.$$.r echo 'install.packages("RSQLite") ' >> /tmp/a.$$.r echo 'install.packages("CCA") ' >> /tmp/a.$$.r echo 'install.packages("KernSmooth") ' >> /tmp/a.$$.r echo 'install.packages("MASS") ' >> /tmp/a.$$.r echo 'install.packages("Matrix") ' >> /tmp/a.$$.r echo 'install.packages("Rcmdr") ' >> /tmp/a.$$.r # more echo 'install.packages("moments") ' >> /tmp/a.$$.r echo 'install.packages("spatstat") ' >> /tmp/a.$$.r echo 'install.packages("png") ' >> /tmp/a.$$.r echo 'install.packages("biOps") ' >> /tmp/a.$$.r echo 'install.packages("biOpsGUI") ' >> /tmp/a.$$.r echo 'install.packages("maptools") ' >> /tmp/a.$$.r echo 'install.packages("caTools") ' >> /tmp/a.$$.r echo 'install.packages("classs") ' >> /tmp/a.$$.r echo 'install.packages("evd") ' >> /tmp/a.$$.r echo 'install.packages("its") ' >> /tmp/a.$$.r echo 'install.packages("mapproj") ' >> /tmp/a.$$.r echo 'install.packages("mnormt") ' >> /tmp/a.$$.r echo 'install.packages("sm") ' >> /tmp/a.$$.r echo 'install.packages("sp") ' >> /tmp/a.$$.r echo 'install.packages("stabledist") ' >> /tmp/a.$$.r echo 'install.packages("timeSeries") ' >> /tmp/a.$$.r echo 'install.packages("tseries") ' >> /tmp/a.$$.r echo 'install.packages("bayesm") ' >> /tmp/a.$$.r echo 'install.packages("gdata") ' >> /tmp/a.$$.r echo 'install.packages("gmodels") ' >> /tmp/a.$$.r echo 'install.packages("rpart") ' >> /tmp/a.$$.r echo 'install.packages("Zelig") ' >> /tmp/a.$$.r # cat /tmp/a.$$.r | sudo R --vanilla
Ubuntu縺ァ縺ョ繧、繝ウ繧ケ繝医・繝ォ謇矩焉Eセ・
sudo apt -y update sudo apt -y install libsqlite3-0 sudo apt -y install libsqlite0-dev sudo apt -y install libsqlite3-dev sudo apt -y install sqlite3 sudo apt -y install sqliteman
Ubuntu縺ァ縺ョ繧、繝ウ繧ケ繝医・繝ォ謇矩焉Eセ・
sudo apt -y update sudo apt -y install littler
邱ッ蠎を縲∫オ悟コを繧呈欠螳壹@縺を蠢・を・Κ蛻・・蛻・j蜃コ縺励r陦後≧
窶サ japan.osm.bz2 縺ッ /tmp 縺ォ縺ゅk繧ゅ・縺ィ縺吶k・・
笳・bash 繝励Ο繧ー繝ゥ繝/strong>
数刁E°縺九k
#!/bin/bash
bzip2 -d /tmp/japan.osm.bz2
cat /tmp/japan.osm | osmosis --rx - --bb left=130.2037 bottom=33.4308 right=130.5053 top=33.7147 --wx fukuoka-city.osm
cat /tmp/japan.osm | osmosis --rx - --bb left=130.0355 bottom=33.4643 right=130.2938 top=33.6690 --wx itoshima-city.osm
#!/bin/sh
cat > /tmp/1.xslt <<-XSLT
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8" />
<xsl:template match="/osm/node">
/node, <xsl:value-of select="./@id"/>, <xsl:value-of select="./@lat"/>, <xsl:value-of select="./@lon"/>, <xsl:value-of select="./@version"/>, <xsl:value-of select="./@changeset"/>, <xsl:value-of select="./@timestamp"/>
</xsl:template>
<xsl:template match="/osm/way">
/way, <xsl:value-of select="./@id"/>, <xsl:value-of select="./@version"/>, <xsl:value-of select="./@changeset"/>, <xsl:value-of select="./@user"/>, <xsl:value-of select="./@uid"/>, <xsl:value-of select="./@timestamp"/>
</xsl:template>
<xsl:template match="/osm/relation">
/relation, <xsl:value-of select="./@id"/>, <xsl:value-of select="./@version"/>, <xsl:value-of select="./@changeset"/>, <xsl:value-of select="./@user"/>, <xsl:value-of select="./@uid"/>, <xsl:value-of select="./@timestamp"/>
</xsl:template>
</xsl:stylesheet>
XSLT
xalan -in itoshima-city.osm -xsl /tmp/1.xslt > /tmp/itoshima-city.csv
grep '^/node' /tmp/itoshima-city.csv | sed 's/^\/node, //g' > /tmp/itoshima-city_node.csv
grep '^/way' /tmp/itoshima-city.csv | sed 's/^\/way, //g' > /tmp/itoshima-city_way.csv
grep '^/relation' /tmp/itoshima-city.csv | sed 's/^\/relation, //g' > /tmp/itoshima-city_relation.csv
xalan -in fukuoka-city.osm -xsl /tmp/1.xslt > /tmp/fukuoka-city.csv
grep '^/node' /tmp/fukuoka-city.csv | sed 's/^\/node, //g' > /tmp/fukuoka-city_node.csv
grep '^/way' /tmp/fukuoka-city.csv | sed 's/^\/way, //g' > /tmp/fukuoka-city_way.csv
grep '^/relation' /tmp/fukuoka-city.csv | sed 's/^\/relation, //g' > /tmp/fukuoka-city_relation.csv
# 繧ェ繝励す繝ァ繝ウ
# xalan -in japan.osm -xsl /tmp/1.xslt > /tmp/japan.csv
# grep '^/node' /tmp/japan.csv | sed 's/^\/node, //g' > /tmp/japan_node.csv
# grep '^/way' /tmp/japan.csv | sed 's/^\/way, //g' > /tmp/japan_way.csv
# grep '^/relation' /tmp/japan.csv | sed 's/^\/relation, //g' > /tmp/japan_relation.csv
#!/bin/sh
cat > /tmp/1.xslt <<-XSLT
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8" />
<xsl:template match="/osm/node/tag">
/node/tag, <xsl:value-of select="../@id"/>, <xsl:value-of select="../@lat"/>, <xsl:value-of select="../@lon"/>, <xsl:value-of select="../@version"/>, <xsl:value-of select="../@changeset"/>, <xsl:value-of select="../@timestamp"/>, <xsl:value-of select="./@k"/>, "<xsl:value-of select="./@v"/>"
</xsl:template>
<xsl:template match="/osm/way/nd">
/way/nd, <xsl:value-of select="../@id"/>, <xsl:value-of select="../@version"/>, <xsl:value-of select="../@changeset"/>, "<xsl:value-of select="../@user"/>", <xsl:value-of select="../@uid"/>, <xsl:value-of select="../@timestamp"/>, <xsl:value-of select="./@ref"/>
</xsl:template>
<xsl:template match="/osm/way/tag">
/way/tag, <xsl:value-of select="../@id"/>, <xsl:value-of select="../@version"/>, <xsl:value-of select="../@changeset"/>, "<xsl:value-of select="../@user"/>", <xsl:value-of select="../@uid"/>, <xsl:value-of select="../@timestamp"/>, <xsl:value-of select="./@k"/>, "<xsl:value-of select="./@v"/>"
</xsl:template>
<xsl:template match="/osm/relation/member">
/relation/member, <xsl:value-of select="../@id"/>, <xsl:value-of select="../@version"/>, <xsl:value-of select="../@changeset"/>, "<xsl:value-of select="../@user"/>", <xsl:value-of select="../@uid"/>, <xsl:value-of select="../@timestamp"/>, "<xsl:value-of select="./@type"/>", <xsl:value-of select="./@ref"/>, "<xsl:value-of select="./@role"/>"
</xsl:template>
<xsl:template match="/osm/relation/tag">
/relation/tag, <xsl:value-of select="../@id"/>, <xsl:value-of select="../@version"/>, <xsl:value-of select="../@changeset"/>, "<xsl:value-of select="../@user"/>", <xsl:value-of select="../@uid"/>, <xsl:value-of select="../@timestamp"/>, <xsl:value-of select="./@k"/>, "<xsl:value-of select="./@v"/>"
</xsl:template>
</xsl:stylesheet>
XSLT
xalan -in itoshima-city.osm -xsl /tmp/1.xslt > /tmp/itoshima-city-tag.csv
grep '^/node/tag' /tmp/itoshima-city-tag.csv | sed 's/^\/node\/tag, //g' > /tmp/itoshima-city_node_tag.csv
grep '^/way/nd' /tmp/itoshima-city-tag.csv | sed 's/^\/way\/nd, //g' > /tmp/itoshima-city_way_nd.csv
grep '^/way/tag' /tmp/itoshima-city-tag.csv | sed 's/^\/way\/tag, //g' > /tmp/itoshima-city_way_tag.csv
grep '^/relation/member' /tmp/itoshima-city-tag.csv | sed 's/^\/relation\/member, //g' > /tmp/itoshima-city_relation_member.csv
grep '^/relation/tag' /tmp/itoshima-city-tag.csv | sed 's/^\/relation\/tag, //g' > /tmp/itoshima-city_relation_tag.csv
xalan -in fukuoka-city.osm -xsl /tmp/1.xslt > /tmp/fukuoka-city-tag.csv
grep '^/node/tag' /tmp/fukuoka-city-tag.csv | sed 's/^\/node\/tag, //g' > /tmp/fukuoka-city_node_tag.csv
grep '^/way/nd' /tmp/fukuoka-city-tag.csv | sed 's/^\/way\/nd, //g' > /tmp/fukuoka-city_way_nd.csv
grep '^/way/tag' /tmp/fukuoka-city-tag.csv | sed 's/^\/way\/tag, //g' > /tmp/fukuoka-city_way_tag.csv
grep '^/relation/member' /tmp/fukuoka-city-tag.csv | sed 's/^\/relation\/member, //g' > /tmp/fukuoka-city_relation_member.csv
grep '^/relation/tag' /tmp/fukuoka-city-tag.csv | sed 's/^\/relation\/tag, //g' > /tmp/fukuoka-city_relation_tag.csv
# 繧ェ繝励す繝ァ繝ウ
# xalan -in japan.osm -xsl /tmp/1.xslt > /tmp/japan-tag.csv
# grep '^/node/tag' /tmp/japan-tag.csv | sed 's/^\/node\/tag, //g' > /tmp/japan_node_tag.csv
# grep '^/way/nd' /tmp/japan-tag.csv | sed 's/^\/way\/nd, //g' > /tmp/japan_way_nd.csv
# grep '^/way/tag' /tmp/japan-tag.csv | sed 's/^\/way\/tag, //g' > /tmp/japan_way_tag.csv
# grep '^/relation/member' /tmp/japan-tag.csv | sed 's/^\/relation\/member, //g' > /tmp/japan_relation_member.csv
# grep '^/relation/tag' /tmp/japan-tag.csv | sed 's/^\/relation\/tag, //g' > /tmp/japan_relation_tag.csv
こ Web 繝壹・繧ク縺ァ縺ッ・後ョ繝シ繧ソ繝吶・繧ケ縺ョ菴懈・繧定。後>縺セ縺吶・縺ァ・・菴懈・縺吶k繝・・繧ソ繝吶・繧ケ縺ョ繝・・繧ソ繝吶・繧ケ隲也炊蜷・/STRONG>繧呈アコ繧√※縺翫¥縺薙→・・縺薙・ Web 繝壹・繧ク縺ァ縺ッ・梧ャ。縺ョ繧医≧縺ォ譖ク縺阪∪縺呻シ・
菴ソ逕ィ縺吶k繝・・繧ソ繝吶・繧ケ縺ョ蜷榊燕縺ョ縺薙→繧抵シ後データベス論理名」と呼ぶことにする!EチE・繧ソ繝吶・繧ケ隲也炊蜷阪・・瑚・逕ア縺ォ豎コ繧√※縺・>縺ァ縺吶′・悟濠隗呈枚蟄暦シ医▽縺セ繧願恭蟄励→闍ア險伜捷・峨r菴ソ縺・シ後せ繝壹・繧ケ繧貞性縺セ縺ェ縺・%縺ィ・・
笳・bash 繝励Ο繧ー繝ゥ繝/strong>
笳・bash 繝励Ο繧ー繝ゥ繝/strong>
笳・bash 繝励Ο繧ー繝ゥ繝/strong>
繝・・繝悶Ν縺ョ菴懈・
#!/bin/bash
rm -f /tmp/osmdb
#
cat >/tmp/a.$$.sql <<-SQL
drop table osmnode;
SQL
cat /tmp/a.$$.sql | sqlite3 /tmp/osmdb
#
cat >/tmp/a.$$.sql <<-SQL
drop table osmway;
SQL
cat /tmp/a.$$.sql | sqlite3 /tmp/osmdb
#
cat >/tmp/a.$$.sql <<-SQL
drop table osmrelation;
SQL
cat /tmp/a.$$.sql | sqlite3 /tmp/osmdb
#
cat >/tmp/a.$$.sql <<-SQL
create table osmnode (
id integer not null,
lat real not null,
lon real not null,
version integer not null,
changeset integer,
timestamp datetime );
create table osmway (
id integer not null,
version integer not null,
changeset integer,
user text,
uid integer,
timestamp datetime );
create table osmrelation (
id integer not null,
version integer not null,
changeset integer,
user text,
uid integer,
timestamp datetime );
SQL
cat /tmp/a.$$.sql | sqlite3 /tmp/osmdb
#!/bin/bash
cat >/tmp/a.$$.sql <<-SQL
.mode csv
.import /tmp/itoshima-city_node.csv osmnode
.import /tmp/itoshima-city_way.csv osmway
.import /tmp/itoshima-city_relation.csv osmrelation
.import /tmp/fukuoka-city_node.csv osmnode
.import /tmp/fukuoka-city_way.csv osmway
.import /tmp/fukuoka-city_relation.csv osmrelation
SQL
cat /tmp/a.$$.sql | sqlite3 /tmp/osmdb
#
echo 'select * from osmnode limit 10;' | sqlite3 /tmp/osmdb
echo 'select * from osmway limit 10;' | sqlite3 /tmp/osmdb
echo 'select * from osmrelation limit 10;' | sqlite3 /tmp/osmdb
#!/bin/bash
cd /tmp
ls -la osmdb
# dump
cat >/tmp/a.$$.sql <<-SQL
.output /tmp/osmdb.sql
.dump
.exit
SQL
#
cat /tmp/a.$$.sql | sqlite3 /tmp/osmdb
#
rm /tmp/osmdb
# resutor
cat >/tmp/a.$$.sql <<-SQL
.read /tmp/osmdb.sql
.exit
SQL
#
cat /tmp/a.$$.sql | sqlite3 /tmp/osmdb
#
cd /tmp
ls -la osmdb
#!/bin/bash
cat > /tmp/a.r <<-COMMAND
library("RSQLite")
drv <- dbDriver("SQLite", max.con = 1)
conn <- dbConnect(drv, dbname="/tmp/osmdb")
rs <- dbSendQuery( conn, "SELECT distinct lat, lon from osmnode;" )
R <- fetch(rs, n = -1)
png("/tmp/a.png")
plot(R\$lat, R\$lon)
dev.off()
COMMAND
cat /tmp/a.r | r
display /tmp/a.png
#!/bin/bash
cat > /tmp/a.sql <<-SQL
create table nodetag (
nodeid integer not null,
lat real not null,
lon real not null,
version integer not null,
changeset integer,
timestamp datetime,
k text not null,
v text not null );
create table waynd (
wayid integer not null,
version integer not null,
changeset integer,
user text,
uid integer,
timestamp datetime,
ref integer );
create table waytag (
wayid integer not null,
version integer not null,
changeset integer,
user text,
uid integer,
timestamp datetime,
k text not null,
v text not null );
create table relationmember (
relationid integer not null,
version integer not null,
changeset integer,
user text,
uid integer,
timestamp datetime,
type text,
ref integer,
role text );
create table relationtag (
ralationid integer not null,
version integer not null,
changeset integer,
user text,
uid integer,
timestamp datetime,
k text not null,
v text not null );
SQL
cat /tmp/a.sql | sqlite3 /tmp/osmdb
#!/bin/bash
cat > /tmp/a.sql <<-SQL
.mode csv
.import /tmp/itoshima-city_node_tag.csv nodetag
.import /tmp/itoshima-city_way_nd.csv waynd
.import /tmp/itoshima-city_way_tag.csv waytag
.import /tmp/itoshima-city_relation_member.csv relationmember
.import /tmp/itoshima-city_relation_tag.csv relationtag
.import /tmp/fukuoka-city_node_tag.csv nodetag
.import /tmp/fukuoka-city_way_nd.csv waynd
.import /tmp/fukuoka-city_way_tag.csv waytag
.import /tmp/fukuoka-city_relation_member.csv relationmember
.import /tmp/fukuoka-city_relation_tag.csv relationtag
SQL
cat /tmp/a.sql | sqlite3 /tmp/osmdb
#!/bin/bash
cat > /tmp/a.r <<-COMMAND
library("RSQLite")
drv <- dbDriver("SQLite", max.con = 1)
conn <- dbConnect(drv, dbname="/tmp/osmdb")
rs <- dbSendQuery( conn, "SELECT distinct lat, lon from nodetag;" )
R <- fetch(rs, n = -1)
png("/tmp/a.png")
plot(R\$lat, R\$lon)
dev.off()
COMMAND
cat /tmp/a.r | r
display /tmp/a.png