Rでジオコーディング
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
&color(black,#CCFFCC){LINK:[[[GoogleEarthとR]]][[[ShapeFi...
----
目次
#contents
----
&color(black){論文引用・書籍等に引用する場合の著作権につ...
----
*目的 [#zcea8c20]
GoogleMapやGoogleEarthのおかげで、最近ジオコーディングと...
ジオコーディングとは簡単に言えば、住所や郵便番号情報から...
最近になって勢力を拡大してきているのが、WebAPIを利用した...
また、国から「街区レベル位置参照情報ダウンロードサービス...
~
ここでは、ジオコーディングの情報を収集するとともに、Rを用...
基本的には、Rのみでジオコーディングを可能にすることが目標...
GoogleEarthのジオコーディングはすばらしいが、なにしろ変換...
(注意)~
ジオコーディングを業務用に利用するならば、ジオコーディン...
つまり、業務で入力されている住所がきちんとした住所になっ...
そういう意味では、文書としての住所を解析して正規化する文...
*利用するパッケージ [#fe3ac694]
RCurl~
XML~
rjson~
SSOAP~
*ツールとデータ [#ac0bfd88]
&color(black){ジオコーディングツール};~
無償版:~
[GoogleMapAPI] http://www.google.com/apis/maps/documentat...
[CSVアドレスマッチングサービス] http://www.tkl.iis.u-toky...
[gコンテンツ流通推進協議会] http://www.g-contents.jp/~
[geocoder.ja] http://www.postlbs.org/~
[JNS住所認識システム]http://nlftp.mlit.go.jp/isj/jns_agre...
有償版:~
[jasminesoft住所正規化コンバータ] http://anorm.jp/~
[アルプス社] http://www.alpsmap.jp/mapinfo/data/geocoding/
&color(black){ジオコーディング用データ};~
[街区レベル位置参照情報ダウンロードサービス] http://nlftp...
[郵便番号ダウンロード] http://www.post.japanpost.jp/zipco...
&color(black){文字列検索アルゴリズム};~
[1]http://fujimiya.net/?Boyer-Moore%20Fast%20String%20Sea...
[2]http://d.hatena.ne.jp/siokoshou/20060325~
[3]http://www.dbsj.org/Japanese/DBSJLetters/vol1/no1/ronb...
&color(black){日本語形態素解析};~
[1]YahooJapan:http://developer.yahoo.co.jp/jlp/MAService/...
*RCODE [#r5f26321]
**1.街区レベル位置参照情報データを利用した簡易ジオコーデ...
事前に街区レベル位置参照情報ダウンロードサービスから対象...
下記の例は、沖縄県全域データを利用したものです。~
x<- read.csv("c:\\47_2006.csv")
y<- paste(x$都道府県名,x$市区町村名,x$大字.町丁目,x$街区...
target<- "沖縄県島尻郡八重瀬町後原566"
xnum<-pmatch(target,y)
z<-x[xnum,8:9]
print(z)
> print(z)
緯度 経度
95660 26.14762 127.7343
(注)まったく役に立ちませんが、とりあえず住所完全一致で...
options(digits=10)
target<- "浦添市当山二丁目"
xnum<-grep(target,y)
z<-x[xnum,1:9]
mean(z[8:9])
> mean(z[8:9])
緯度 経度
26.2515489 127.7348568
(注)grepだと結構いい感じであいまい検索してくれる。
**2.[[GoogleEarthとR]]のコメント欄にXMLパッケージとGoogle...
***1)GoogleEarthを利用したジオコーディング: [#q61bf0aa]
# hospdは $Addrに住所, $Nameに名前が入っているデータフレ...
library(XML)
makePlacemark <- function(x) {
addr=xmlNode("address", xmlTextNode(hospd$Addr[x]));
name=xmlNode("name", xmlTextNode(hospd$Name[x]));
return(xmlNode("Placemark",addr,name));
}
addrList <- lapply(1:nrow(hospd), makePlacemark)
d<-xmlNode("Document")
for(i in 1:length(addrList)) { d$children[[i]] <- addrLi...
p <- xmlNode("kml", d)
sink(file("hospd.kml",encoding="utf-8",open="w")) #なか...
print(p)
sink()
出力されたhospd.kmlをGoogleEarthに読み込むと、GEが自動的...
***2)GE上で「情報を取得」などを行ってから再びKMLに書き出...
placemark2GeoData <- function(rootNode) {
findDoc <- function(x) {
if(xmlName(x) == "Document") {
return(x)
}
for(m in xmlChildren(x)) {
n <- findDoc(m)
if(!is.null(n)) {
return(n)
}
}
return(NULL)
}
ininode <- findDoc(rootNode)
namev <- vector()
addrv <- vector()
longv <- vector()
lattv <- vector()
for(node in xmlChildren(ininode)) {
if(xmlName(node) == "Placemark") {
n <- NULL
a <- NULL
gd <- NULL
for(i in xmlChildren(node)) {
if(xmlName(i) == "name") {
n <- xmlValue(i$children[[1]])
} else if(xmlName(i) == "address") {
a <- xmlValue(i$children[[1]])
} else if(xmlName(i) == "Point") {
gd <- strsplit(xmlValue(i$children[[1]]$children[[...
}
}
if(!(is.null(gd) | is.null(a) | is.null(n)) ) {
namev <- append(namev, n)
addrv <- append(addrv, a)
longv <- append(longv, gd[1])
lattv <- append(lattv, gd[2])
}
}
}
return(data.frame(Name=namev, Address=addrv, Longitude=l...
}
こんな風に使います
doc <- xmlTreeParse("ih.kml")
hospg <- placemark2GeoData(xmlRoot(doc)) # これでLong, L...
merge(hospg,hospd,by="Name")
**3.GoogleMapAPIのGeoCording(HTTP Request)を利用してジオ...
##GoogleMapAPIを用いたジオコーディング
address<-"沖縄県那覇市久米2丁目4番14号"
returnform<-"xml"#xmlorjson
key<-"ABQIAAAA7Qa-RE_JYtVliR9OTauOexScAlgT1OMB91Iojh4cvn...
text1<-"http://maps.google.com/maps/geo?q="
text2<-"&output="
text3<-"&key="
savefile<-"c:\\geocode.xml"
EncodeAddress<-paste(c("",charToRaw(iconv(address,"CP932...
URLText<-paste(text1,EncodeAddress,text2,returnform,text...
download.file(URLText,savefile)
で、c:直下にgeocode.xmlで落ちてきます。returnform<-"xml"#...
**4.YahooMapAPIを利用してジオコーディング [#ed95ba3b]
##YahooMapAPIを用いたジオコーディング
address<-"沖縄県那覇市久米2丁目4番14号"
#returnform<-"xml"#xmlorjson
appid<-"YahooDemo"
text1<-"http://api.map.yahoo.co.jp/LocalSearchService/V1...
text2<-"&p="
text3<-"appid="
savefile<-"c:\\geocode.xml"
EncodeAddress<-paste(c("",charToRaw(iconv(address,"CP932...
URLText<-paste(text1,text3,appid,text2,EncodeAddress,sep...
download.file(URLText,savefile)
で、c:直下にgeocode.xmlで落ちてきます。xml構造はYahooの方...
**5.RCurlを使う方法( 質問、それって) [#jdabb5f6]
library(RCurl) # <= バイナリは腐ってる事もあります
addr<-"石川県金沢市広坂1丁目1ー1"
encaddr<-paste(c("",charToRaw(iconv(addr,"","UTF8"))),co...
url<-paste("http://maps.google.com/maps?q=",encaddr,"&ou...
kml<-iconv(getURL(url),"UTF8","") # iconvの""はカレント...
といっしょ?
addr<-"石川県金沢市広坂1丁目1ー1"
encaddr<-paste(c("",charToRaw(iconv(addr,"","UTF8"))),co...
url<-paste("http://maps.google.com/maps?q=",encaddr,"&ou...
con<-url(url,encoding="UTF8")
kml<-readLines(con,warn=F)
でもいいか. 保存するなら
con<-file("hoge.kml",open="w",encoding="UTF8")
writeLines(kml,con)
close(con)
(注:okinawa)RCurlはBioConductorからインストールできます。~
**6.RCurlでまとめてジオコーディング(なかまさん) [#jdabb...
# ライセンスはGPL!!
ken<-c("富山市新総曲輪1番7号","金沢市鞍月1丁目1番地","...
library(XML)
library(RCurl)
encaddr<-function(x){sapply(x,function(x)paste(c("",char...
makeurl<-function(x)sapply(x,function(x)paste("http://ma...
kmls<-getURIAsynchronous(makeurl(encaddr(ken)))
# encode強制(utf-8の人は何も考えなくて良い)
kmls<-sapply(kmls,function(x)iconv(x,"UTF-8"))
kmls<-sapply(kmls,function(x)gsub("encoding=\\\"UTF-8\\\...
paste("encoding=\\\"",
localeToCharset(),
"\\\"",
sep=""),x))
#nsが見当たらないのでさくっと消す
kmls<-sapply(kmls,function(x)gsub("<kml xmlns=\\\"http:\...
"<kml>",
x))
docs<-sapply(kmls,function(x)xmlTreeParse(x,useInternalN...
sapply(docs,function(x)xpathApply(x,"//longitude",xmlVal...
sapply(docs,function(x)xpathApply(x,"//latitude",xmlValu...
sapply(docs,function(x)xpathApply(x,"//coordinates",xmlV...
sapply(docs,function(x)iconv(xpathApply(x,"//name",xmlVa...
sapply(docs,free) # 開放
**7.Yahoo日本語形態素解析APIを利用した住所の形態素解析 [#...
library(RCurl)
addr<-"沖縄県那覇市久米2丁目4番14号JB-NAHAビル8階"
encaddr<-paste(c("",charToRaw(iconv(addr,"","UTF-8"))),c...
url<-paste("http://api.jlp.yahoo.co.jp/MAService/V1/pars...
kml<-iconv(getURL(url),"UTF-8","") # iconvの""はカレン...
print(kml)
実行結果(見やすいように整形してあります)
<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
<ResultSet xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-...
<ma_result><total_count>13</total_count>
<filtered_count>13</filtered_count>
<word_list>
<word><surface>沖縄県</surface><reading>おきなわけん</re...
<word><surface>那覇市</surface><reading>なはし</reading>...
<word><surface>久米</surface><reading>くめ</reading><pos...
<word><surface>2</surface><reading>2</reading><pos>名詞...
<word><surface>丁目</surface><reading>ちょうめ</reading>...
<word><surface>4</surface><reading>4</reading><pos>名詞...
<word><surface>番</surface><reading>ばん</reading><pos>...
<word><surface>14</surface><reading>14</reading><pos>...
<word><surface>号</surface><reading>ごう</reading><pos>...
<word><surface>JB-NAHA</surface><reading>JB-NAHA</readin...
<word><surface>ビル</surface><reading>びる</reading><pos...
<word><surface>8</surface><reading>8</reading><pos>名詞...
<word><surface>階</surface><reading>かい</reading><pos>...
</word_list>
</ma_result><uniq_result><total_count>13</total_count>
住所もきちんと分解してくれてるようですね。更に、指定した...
<filtered_count>9</filtered_count>
<word_list>
<word><count>1</count><surface>JB-NAHA</surface><reading...
<word><count>1</count><surface>ビル</surface><reading/><...
<word><count>1</count><surface>久米</surface><reading/><...
<word><count>1</count><surface>沖縄県</surface><reading/...
<word><count>1</count><surface>那覇市</surface><reading/...
<word><count>1</count><surface>14</surface><reading/><...
<word><count>1</count><surface>2</surface><reading/><po...
<word><count>1</count><surface>4</surface><reading/><po...
<word><count>1</count><surface>8</surface><reading/><po...
</word_list></uniq_result></ResultSet>
並びはどうやって決めてるんだろう?
**8.GoogleMapAPIを用いた逆ジオコーディング [#yd828fdc]
##GoogleMapAPIを用いた逆ジオコーディング
URLText<-"http://maps.google.com/maps/geo?oe=utf-8&ll=35...
savefile<-"c:\\geocode.xml"
download.file(URLText,savefile)
*コメント欄 [#g7fc1d05]
#comment(below)
- Yahoo API は有料化 -- &new{2012-12-06 (木) 09:38:20};
- Google Maps の規約変更で、R からの API 利用も問題になる...
- GoogleMapAPIを用いた逆ジオコーディング追加。ひさびさ。 ...
- Yahoo 電話帳は API が公開されているのでしょうか? -- [[...
- Yahoo地図ローカルサーチAPIは、24時間中1IPアドレスにつき...
- Google のサービスは同時アクセス40人ほどでエラーになる...
- GoogleAPIkeyもどこぞのサイトのソースを見ればすぐわかり...
- 確かに、Yahoo は Google よりも太っ腹? -- &new{2007-...
- (たぶん)利用できます。 -- [[okinawa]] &new{2007-08-03...
- YahooMapAPI ですけど、登録IDでなく上にある”YahooDemo”...
- rjsonなるもの発見!jsonをRオブジェクトに変換するものか...
- Yahoo日本語形態素解析APIを用いて住所文字列の分解を行い...
- Yahoo Japanから日本語形態素解析WebAPIが公開されました。...
- JNS住所認識システムのjns2conv.exeの学習辞書を起動すると...
- JNS住所認識システム追加(国が出してました。FREEです) --...
- もうすこし遅い回線(10Mbps)で調べたのですが、件数が60あ...
#10Mbps(GoogleMapAPI)
#10 0.70 0.50 0.58 0.40 0.44
#20 0.55 0.56 0.51 0.56 0.53
#30 0.69 0.66 0.68 0.61 0.61
#40 0.76 0.73 1.08 0.83 0.97
#50 0.86 0.83 0.87 0.89 1.00
#60 1.26 1.21 1.11 1.11 1.26
#70 1.19 1.36 1.52 1.48 1.41
#80 1.47 1.56 4.05 1.66 1.61
#90 4.08 4.25 4.24 4.22 4.31
#100 4.44 4.42 4.54 4.49 4.36
#150 4.83 5.00 4.78 4.80 5.64
#200 7.03 5.69 5.42 5.41 5.43
#300 11.45 13.64 23.22 17.22 11.68
- 上記の街区レベル位置参照情報データから住所データを取り...
[1] 0.597 0.103 4.385 0.000 0.000 #光100M 100件
[1] 0.949 0.222 3.303 0.000 0.000 #光100M 200件
[1] 1.400 0.193 3.712 0.000 0.000 #光100M 300件
[1] 1.833 0.229 3.030 0.000 0.000 #光100M 400件
[1] 2.211 0.182 2.791 0.000 0.000 #光100M 500件
- 速度と言う意味なら, まとめてやんないとダメだろうけど, ...
ken<-c("富山市新総曲輪1番7号","金沢市鞍月1丁目1番地","...
library(RCurl)
encaddr<-
function(x){sapply(x,function(x)paste(c("",charToRaw(ico...
makeurl<-
function(x)sapply(x,function(x)paste("http://maps.google...
kmls<-getURIAsynchronous(makeurl(encaddr(ken)))
- 速度計ってみました。結構速い。 (光100M)-- [[okinawa]] &...
> test<-function(){library(RCurl)
+ addr<-"沖縄県那覇市久米2丁目4番14号"
+ encaddr<-paste(c("",charToRaw(iconv(addr,"","UTF8"))),...
+ url<-paste("http://maps.google.com/maps?q=",encaddr,"&...
+ kml<-iconv(getURL(url),"UTF8","") # iconvの""はカレン...
+ print(kml)
+ }
> system.time(test())
[1] "<?xml version=\"1.0\" encoding=\"UTF-8\"?><kml xmln...
[1] 0.008 0.002 0.292 0.000 0.000
- BioConductorからRCurlインストールできました。IntelMacで...
- RCurlはBioConductorのextraからとれますよ. -- &new{2007...
- Google のジオコーディングって、住所の後にビル名がつくと...
- OmegahatのRCurlを使う方法が追加されました。RCurlは、win...
- GoogleMapAPIとYahooMapAPIのジオコーディングの比較では、...
- YahooMapAPIを利用したジオコーディング追加。 -- [[okinaw...
- GoogleMapAPIのGeoCoding?を利用してジオコーディングを追...
- 文字列検索アルゴリズムリンク追加 -- [[okinawa]] &new{20...
-皆様からのジオコーディングについての情報を募集しておりま...
*アクセス数: [#mb2b3156]
&counter;
人
終了行:
&color(black,#CCFFCC){LINK:[[[GoogleEarthとR]]][[[ShapeFi...
----
目次
#contents
----
&color(black){論文引用・書籍等に引用する場合の著作権につ...
----
*目的 [#zcea8c20]
GoogleMapやGoogleEarthのおかげで、最近ジオコーディングと...
ジオコーディングとは簡単に言えば、住所や郵便番号情報から...
最近になって勢力を拡大してきているのが、WebAPIを利用した...
また、国から「街区レベル位置参照情報ダウンロードサービス...
~
ここでは、ジオコーディングの情報を収集するとともに、Rを用...
基本的には、Rのみでジオコーディングを可能にすることが目標...
GoogleEarthのジオコーディングはすばらしいが、なにしろ変換...
(注意)~
ジオコーディングを業務用に利用するならば、ジオコーディン...
つまり、業務で入力されている住所がきちんとした住所になっ...
そういう意味では、文書としての住所を解析して正規化する文...
*利用するパッケージ [#fe3ac694]
RCurl~
XML~
rjson~
SSOAP~
*ツールとデータ [#ac0bfd88]
&color(black){ジオコーディングツール};~
無償版:~
[GoogleMapAPI] http://www.google.com/apis/maps/documentat...
[CSVアドレスマッチングサービス] http://www.tkl.iis.u-toky...
[gコンテンツ流通推進協議会] http://www.g-contents.jp/~
[geocoder.ja] http://www.postlbs.org/~
[JNS住所認識システム]http://nlftp.mlit.go.jp/isj/jns_agre...
有償版:~
[jasminesoft住所正規化コンバータ] http://anorm.jp/~
[アルプス社] http://www.alpsmap.jp/mapinfo/data/geocoding/
&color(black){ジオコーディング用データ};~
[街区レベル位置参照情報ダウンロードサービス] http://nlftp...
[郵便番号ダウンロード] http://www.post.japanpost.jp/zipco...
&color(black){文字列検索アルゴリズム};~
[1]http://fujimiya.net/?Boyer-Moore%20Fast%20String%20Sea...
[2]http://d.hatena.ne.jp/siokoshou/20060325~
[3]http://www.dbsj.org/Japanese/DBSJLetters/vol1/no1/ronb...
&color(black){日本語形態素解析};~
[1]YahooJapan:http://developer.yahoo.co.jp/jlp/MAService/...
*RCODE [#r5f26321]
**1.街区レベル位置参照情報データを利用した簡易ジオコーデ...
事前に街区レベル位置参照情報ダウンロードサービスから対象...
下記の例は、沖縄県全域データを利用したものです。~
x<- read.csv("c:\\47_2006.csv")
y<- paste(x$都道府県名,x$市区町村名,x$大字.町丁目,x$街区...
target<- "沖縄県島尻郡八重瀬町後原566"
xnum<-pmatch(target,y)
z<-x[xnum,8:9]
print(z)
> print(z)
緯度 経度
95660 26.14762 127.7343
(注)まったく役に立ちませんが、とりあえず住所完全一致で...
options(digits=10)
target<- "浦添市当山二丁目"
xnum<-grep(target,y)
z<-x[xnum,1:9]
mean(z[8:9])
> mean(z[8:9])
緯度 経度
26.2515489 127.7348568
(注)grepだと結構いい感じであいまい検索してくれる。
**2.[[GoogleEarthとR]]のコメント欄にXMLパッケージとGoogle...
***1)GoogleEarthを利用したジオコーディング: [#q61bf0aa]
# hospdは $Addrに住所, $Nameに名前が入っているデータフレ...
library(XML)
makePlacemark <- function(x) {
addr=xmlNode("address", xmlTextNode(hospd$Addr[x]));
name=xmlNode("name", xmlTextNode(hospd$Name[x]));
return(xmlNode("Placemark",addr,name));
}
addrList <- lapply(1:nrow(hospd), makePlacemark)
d<-xmlNode("Document")
for(i in 1:length(addrList)) { d$children[[i]] <- addrLi...
p <- xmlNode("kml", d)
sink(file("hospd.kml",encoding="utf-8",open="w")) #なか...
print(p)
sink()
出力されたhospd.kmlをGoogleEarthに読み込むと、GEが自動的...
***2)GE上で「情報を取得」などを行ってから再びKMLに書き出...
placemark2GeoData <- function(rootNode) {
findDoc <- function(x) {
if(xmlName(x) == "Document") {
return(x)
}
for(m in xmlChildren(x)) {
n <- findDoc(m)
if(!is.null(n)) {
return(n)
}
}
return(NULL)
}
ininode <- findDoc(rootNode)
namev <- vector()
addrv <- vector()
longv <- vector()
lattv <- vector()
for(node in xmlChildren(ininode)) {
if(xmlName(node) == "Placemark") {
n <- NULL
a <- NULL
gd <- NULL
for(i in xmlChildren(node)) {
if(xmlName(i) == "name") {
n <- xmlValue(i$children[[1]])
} else if(xmlName(i) == "address") {
a <- xmlValue(i$children[[1]])
} else if(xmlName(i) == "Point") {
gd <- strsplit(xmlValue(i$children[[1]]$children[[...
}
}
if(!(is.null(gd) | is.null(a) | is.null(n)) ) {
namev <- append(namev, n)
addrv <- append(addrv, a)
longv <- append(longv, gd[1])
lattv <- append(lattv, gd[2])
}
}
}
return(data.frame(Name=namev, Address=addrv, Longitude=l...
}
こんな風に使います
doc <- xmlTreeParse("ih.kml")
hospg <- placemark2GeoData(xmlRoot(doc)) # これでLong, L...
merge(hospg,hospd,by="Name")
**3.GoogleMapAPIのGeoCording(HTTP Request)を利用してジオ...
##GoogleMapAPIを用いたジオコーディング
address<-"沖縄県那覇市久米2丁目4番14号"
returnform<-"xml"#xmlorjson
key<-"ABQIAAAA7Qa-RE_JYtVliR9OTauOexScAlgT1OMB91Iojh4cvn...
text1<-"http://maps.google.com/maps/geo?q="
text2<-"&output="
text3<-"&key="
savefile<-"c:\\geocode.xml"
EncodeAddress<-paste(c("",charToRaw(iconv(address,"CP932...
URLText<-paste(text1,EncodeAddress,text2,returnform,text...
download.file(URLText,savefile)
で、c:直下にgeocode.xmlで落ちてきます。returnform<-"xml"#...
**4.YahooMapAPIを利用してジオコーディング [#ed95ba3b]
##YahooMapAPIを用いたジオコーディング
address<-"沖縄県那覇市久米2丁目4番14号"
#returnform<-"xml"#xmlorjson
appid<-"YahooDemo"
text1<-"http://api.map.yahoo.co.jp/LocalSearchService/V1...
text2<-"&p="
text3<-"appid="
savefile<-"c:\\geocode.xml"
EncodeAddress<-paste(c("",charToRaw(iconv(address,"CP932...
URLText<-paste(text1,text3,appid,text2,EncodeAddress,sep...
download.file(URLText,savefile)
で、c:直下にgeocode.xmlで落ちてきます。xml構造はYahooの方...
**5.RCurlを使う方法( 質問、それって) [#jdabb5f6]
library(RCurl) # <= バイナリは腐ってる事もあります
addr<-"石川県金沢市広坂1丁目1ー1"
encaddr<-paste(c("",charToRaw(iconv(addr,"","UTF8"))),co...
url<-paste("http://maps.google.com/maps?q=",encaddr,"&ou...
kml<-iconv(getURL(url),"UTF8","") # iconvの""はカレント...
といっしょ?
addr<-"石川県金沢市広坂1丁目1ー1"
encaddr<-paste(c("",charToRaw(iconv(addr,"","UTF8"))),co...
url<-paste("http://maps.google.com/maps?q=",encaddr,"&ou...
con<-url(url,encoding="UTF8")
kml<-readLines(con,warn=F)
でもいいか. 保存するなら
con<-file("hoge.kml",open="w",encoding="UTF8")
writeLines(kml,con)
close(con)
(注:okinawa)RCurlはBioConductorからインストールできます。~
**6.RCurlでまとめてジオコーディング(なかまさん) [#jdabb...
# ライセンスはGPL!!
ken<-c("富山市新総曲輪1番7号","金沢市鞍月1丁目1番地","...
library(XML)
library(RCurl)
encaddr<-function(x){sapply(x,function(x)paste(c("",char...
makeurl<-function(x)sapply(x,function(x)paste("http://ma...
kmls<-getURIAsynchronous(makeurl(encaddr(ken)))
# encode強制(utf-8の人は何も考えなくて良い)
kmls<-sapply(kmls,function(x)iconv(x,"UTF-8"))
kmls<-sapply(kmls,function(x)gsub("encoding=\\\"UTF-8\\\...
paste("encoding=\\\"",
localeToCharset(),
"\\\"",
sep=""),x))
#nsが見当たらないのでさくっと消す
kmls<-sapply(kmls,function(x)gsub("<kml xmlns=\\\"http:\...
"<kml>",
x))
docs<-sapply(kmls,function(x)xmlTreeParse(x,useInternalN...
sapply(docs,function(x)xpathApply(x,"//longitude",xmlVal...
sapply(docs,function(x)xpathApply(x,"//latitude",xmlValu...
sapply(docs,function(x)xpathApply(x,"//coordinates",xmlV...
sapply(docs,function(x)iconv(xpathApply(x,"//name",xmlVa...
sapply(docs,free) # 開放
**7.Yahoo日本語形態素解析APIを利用した住所の形態素解析 [#...
library(RCurl)
addr<-"沖縄県那覇市久米2丁目4番14号JB-NAHAビル8階"
encaddr<-paste(c("",charToRaw(iconv(addr,"","UTF-8"))),c...
url<-paste("http://api.jlp.yahoo.co.jp/MAService/V1/pars...
kml<-iconv(getURL(url),"UTF-8","") # iconvの""はカレン...
print(kml)
実行結果(見やすいように整形してあります)
<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
<ResultSet xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-...
<ma_result><total_count>13</total_count>
<filtered_count>13</filtered_count>
<word_list>
<word><surface>沖縄県</surface><reading>おきなわけん</re...
<word><surface>那覇市</surface><reading>なはし</reading>...
<word><surface>久米</surface><reading>くめ</reading><pos...
<word><surface>2</surface><reading>2</reading><pos>名詞...
<word><surface>丁目</surface><reading>ちょうめ</reading>...
<word><surface>4</surface><reading>4</reading><pos>名詞...
<word><surface>番</surface><reading>ばん</reading><pos>...
<word><surface>14</surface><reading>14</reading><pos>...
<word><surface>号</surface><reading>ごう</reading><pos>...
<word><surface>JB-NAHA</surface><reading>JB-NAHA</readin...
<word><surface>ビル</surface><reading>びる</reading><pos...
<word><surface>8</surface><reading>8</reading><pos>名詞...
<word><surface>階</surface><reading>かい</reading><pos>...
</word_list>
</ma_result><uniq_result><total_count>13</total_count>
住所もきちんと分解してくれてるようですね。更に、指定した...
<filtered_count>9</filtered_count>
<word_list>
<word><count>1</count><surface>JB-NAHA</surface><reading...
<word><count>1</count><surface>ビル</surface><reading/><...
<word><count>1</count><surface>久米</surface><reading/><...
<word><count>1</count><surface>沖縄県</surface><reading/...
<word><count>1</count><surface>那覇市</surface><reading/...
<word><count>1</count><surface>14</surface><reading/><...
<word><count>1</count><surface>2</surface><reading/><po...
<word><count>1</count><surface>4</surface><reading/><po...
<word><count>1</count><surface>8</surface><reading/><po...
</word_list></uniq_result></ResultSet>
並びはどうやって決めてるんだろう?
**8.GoogleMapAPIを用いた逆ジオコーディング [#yd828fdc]
##GoogleMapAPIを用いた逆ジオコーディング
URLText<-"http://maps.google.com/maps/geo?oe=utf-8&ll=35...
savefile<-"c:\\geocode.xml"
download.file(URLText,savefile)
*コメント欄 [#g7fc1d05]
#comment(below)
- Yahoo API は有料化 -- &new{2012-12-06 (木) 09:38:20};
- Google Maps の規約変更で、R からの API 利用も問題になる...
- GoogleMapAPIを用いた逆ジオコーディング追加。ひさびさ。 ...
- Yahoo 電話帳は API が公開されているのでしょうか? -- [[...
- Yahoo地図ローカルサーチAPIは、24時間中1IPアドレスにつき...
- Google のサービスは同時アクセス40人ほどでエラーになる...
- GoogleAPIkeyもどこぞのサイトのソースを見ればすぐわかり...
- 確かに、Yahoo は Google よりも太っ腹? -- &new{2007-...
- (たぶん)利用できます。 -- [[okinawa]] &new{2007-08-03...
- YahooMapAPI ですけど、登録IDでなく上にある”YahooDemo”...
- rjsonなるもの発見!jsonをRオブジェクトに変換するものか...
- Yahoo日本語形態素解析APIを用いて住所文字列の分解を行い...
- Yahoo Japanから日本語形態素解析WebAPIが公開されました。...
- JNS住所認識システムのjns2conv.exeの学習辞書を起動すると...
- JNS住所認識システム追加(国が出してました。FREEです) --...
- もうすこし遅い回線(10Mbps)で調べたのですが、件数が60あ...
#10Mbps(GoogleMapAPI)
#10 0.70 0.50 0.58 0.40 0.44
#20 0.55 0.56 0.51 0.56 0.53
#30 0.69 0.66 0.68 0.61 0.61
#40 0.76 0.73 1.08 0.83 0.97
#50 0.86 0.83 0.87 0.89 1.00
#60 1.26 1.21 1.11 1.11 1.26
#70 1.19 1.36 1.52 1.48 1.41
#80 1.47 1.56 4.05 1.66 1.61
#90 4.08 4.25 4.24 4.22 4.31
#100 4.44 4.42 4.54 4.49 4.36
#150 4.83 5.00 4.78 4.80 5.64
#200 7.03 5.69 5.42 5.41 5.43
#300 11.45 13.64 23.22 17.22 11.68
- 上記の街区レベル位置参照情報データから住所データを取り...
[1] 0.597 0.103 4.385 0.000 0.000 #光100M 100件
[1] 0.949 0.222 3.303 0.000 0.000 #光100M 200件
[1] 1.400 0.193 3.712 0.000 0.000 #光100M 300件
[1] 1.833 0.229 3.030 0.000 0.000 #光100M 400件
[1] 2.211 0.182 2.791 0.000 0.000 #光100M 500件
- 速度と言う意味なら, まとめてやんないとダメだろうけど, ...
ken<-c("富山市新総曲輪1番7号","金沢市鞍月1丁目1番地","...
library(RCurl)
encaddr<-
function(x){sapply(x,function(x)paste(c("",charToRaw(ico...
makeurl<-
function(x)sapply(x,function(x)paste("http://maps.google...
kmls<-getURIAsynchronous(makeurl(encaddr(ken)))
- 速度計ってみました。結構速い。 (光100M)-- [[okinawa]] &...
> test<-function(){library(RCurl)
+ addr<-"沖縄県那覇市久米2丁目4番14号"
+ encaddr<-paste(c("",charToRaw(iconv(addr,"","UTF8"))),...
+ url<-paste("http://maps.google.com/maps?q=",encaddr,"&...
+ kml<-iconv(getURL(url),"UTF8","") # iconvの""はカレン...
+ print(kml)
+ }
> system.time(test())
[1] "<?xml version=\"1.0\" encoding=\"UTF-8\"?><kml xmln...
[1] 0.008 0.002 0.292 0.000 0.000
- BioConductorからRCurlインストールできました。IntelMacで...
- RCurlはBioConductorのextraからとれますよ. -- &new{2007...
- Google のジオコーディングって、住所の後にビル名がつくと...
- OmegahatのRCurlを使う方法が追加されました。RCurlは、win...
- GoogleMapAPIとYahooMapAPIのジオコーディングの比較では、...
- YahooMapAPIを利用したジオコーディング追加。 -- [[okinaw...
- GoogleMapAPIのGeoCoding?を利用してジオコーディングを追...
- 文字列検索アルゴリズムリンク追加 -- [[okinawa]] &new{20...
-皆様からのジオコーディングについての情報を募集しておりま...
*アクセス数: [#mb2b3156]
&counter;
人
ページ名: