福野泰介の一日一創 - create every day

オープンデータな国土地理院地図でつくる選挙ポスター掲示場所マップ(印刷OK!)

2016/06/20
#IchigoJam #maker 

18歳が選挙権を持つ初の参院選2016(公示22日)。
被選挙権は変わらず30歳、世界一高い供託金300万円も据え置きのようです。

オープンデータ(CC BY 4.0 国際)地理院地図(電子国土Web)を使って、5つ星オープンデータとして公開されている選挙ポスター掲示場所マップを作成。 地理院地図を少しカスタマイズして、HTML内でアイコンをSPARQLで取得、表示するようにしています。


選挙ポスター掲示場所マップ - 国土地理院地図アプリ版

選挙恒例のこの選挙ポスター掲示、他の国でもあるものなのでしょうか? ベトナムの選挙では、なってほしくない候補者に複数☓をつける方式(日本の最高裁裁判官と同様、ただし候補者すべて☓をつけると無効)など、他国との比較が楽しそう。

その他、選挙に関する便利なアプリ
- Let's vote!今日は投票記念日 - 福井県情報システム工業会&福井県連携アプリ
- 選挙ポスターを廻れ! - 候補者や支援者の人向け、色分けできて便利!?(Googleマップは印刷利用NG
- 選挙カー連呼スポット探し - 選挙カーが名前を連呼できる病院・学校など以外のスポットを探せます

HTML内にこのように書くことで、アイコンの設置とSPARQL取得を行っています。

var map_onload = function() { var map = GSI.GLOBALS.map; var params = GSI.GLOBALS.queryParams.params; var markerList = L.layerGroup(); markerList.addTo(map); var makeMarkerItem = function(d) { var icon = L.icon({ iconUrl: "poster-mini-1.png", iconSize: [ 32, 32 ], iconAnchor: [ 16, 16 ] }); var marker = L.marker([ d.lat, d.lng ],{ title : "選挙ポスター掲示場所", icon : icon, }); marker.bindPopup( "<a href=" + d.uri + " target=_blank>" + d.uri + "</a><br>" + d.desc, { maxWidth:5000 } ); markerList.addLayer(marker); }; CONFIG.FUNCMENU.id = "print2"; // 通常の print だとなぜかアイコンでない、要調査 var prefix = "PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>\n" + "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" + "PREFIX ic: <http://imi.ipa.go.jp/ns/core/rdf#>\n"; var q = prefix + "select ?uri ?lat ?lng ?desc { ?uri rdf:type <http://odp.jig.jp/odp/1.0#PosterPlace>; geo:lat ?lat; geo:long ?lng; ic:説明 ?desc. }"; var baseurl = "http://sparql.odp.jig.jp/data/sparql"; var url = baseurl + "?query=" + encodeURIComponent(q); var func = function(data) { var items = data.results.bindings; bounds = new L.LatLngBounds(); for (var i = 0; i < items.length; i++) { var it = items[i]; var d = { // type: it.type.value, // name: it.name ? it.name.value : "", uri: it.uri.value, lat: it.lat.value, lng: it.lng.value, desc: it.desc.value }; makeMarkerItem(d); bounds.extend(new L.latLng(d.lat, d.lng)); } map.fitBounds(bounds); }; url += "&output=json&callback=" + getCallbackMethod(func) jsonp(url); };

選挙とアプリ、よいアイデアあればお寄せください!

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image