2013年11月13日水曜日

WebGL Globeを利用した可視化実験

WebGL Globeはgoogleが作ったオープンソースの地理情報可視化プラットフォーム

本気で頑張るとこんなものも作れるらしい

とりあえず練習がてら、USGSのGeoJSONを可視化してみる。

ベースはwebgl globeのindex.html。
if(!Detector.webgl){Detector.addGetWebGLMessage();else {var container = document.getElementById('container');var globe = DAT.Globe(document.getElementById(‘container'), function(label) {return new THREE.Color([0x87e7b0,0x87e7b0,0x87e7b0,0x87e7b0,0xcbf299,0xfcd1d1,0xff2800,0x9a0079][label]);});var script = document.createElement('script');
script.src = 'http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.geojsonp';document.getElementsByTagName('head')[0].appendChild(script);var eqfeed_callback = function(results){        var data = new Array();for (var i = 0; i < results.features.length; i++) {data.push(results.features[i].geometry['coordinates'][0]);data.push(results.features[i].geometry['coordinates'][1]);data.push(results.features[i].properties['mag']/30.0);data.push(Math.floor(results.features[i].properties['mag']));}globe.addData(data, {format: 'legend', name: 'earthquakes', animated: false});
globe.createPoints();globe.animate();document.body.style.backgroundImage = 'none'; // remove loading };}
こんな感じ。


いろいろと試してみよう!

2013年11月10日日曜日

RでSPARQL、結果はKML

RでSPARQLが使えないかと検索してみたら、あった。

パッケージ名はそのままのSPARQL。

さっそく、dbpedia.orgのEndpointを使ってテストしてみた。

クエリは以前に使った日本の都道府県の人口を検索するもの。

せっかくなので、検索結果はKMLで出力する。

Google Earthで表示してみると、こんな感じ。


ちょっとデータのウェブを使っている感じがある。

昨今のオープンデータをSPARQLで探してこれるようにすると、面白いかもしれない。(read.csv等で読みこめばいいのだけど、ファイル自体を探してこないといけない)

むかしExcelをRDFに変換して、SPARQLで検索、グラフで表示ということをやっていたけど、あの苦労が嘘のよう。

以下はRのソース。

library(SPARQL)
library("sp")
library("rgdal")
url<-"http://dbpedia.org/sparql"
query<-"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wgs84_pos: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX yago: <http://dbpedia.org/class/yago/>
SELECT DISTINCT ?title ?lat ?lon ?populationTotal where{
?s rdf:type yago:PrefecturesOfJapan .
?s rdfs:label ?title .
? S dbpedia-owl: populationTotal ?populationTotal .
?s wgs84_pos:lat ?lat .
?s wgs84_pos:long ?lon .
filter langMatches(lang(?title),\"en\") .
}"
res<-SPARQL(url,query)
d<-res$result
coordinates(d)<-c('lon','lat')
proj4string(d)<-CRS("+init=epsg:2451")
writeOGR(d, dsn="hoge.kml", layer="sample", driver="KML")