{"id":3984,"date":"2015-01-06T13:49:14","date_gmt":"2015-01-06T04:49:14","guid":{"rendered":"https:\/\/gunmagisgeek.com\/wordpress\/?p=3984"},"modified":"2018-10-22T11:30:09","modified_gmt":"2018-10-22T02:30:09","slug":"post-3984","status":"publish","type":"post","link":"https:\/\/gunmagisgeek.com\/blog\/d3-js\/3984","title":{"rendered":"\u7fa4\u99ac\u770c\u306e\u5c0f\u5b66\u6821\u533a\u3068\u30dc\u30ed\u30ce\u30a4\u56f3\u3092\u91cd\u306d\u5408\u308f\u305b\u3066\u307f\u305f"},"content":{"rendered":"<p><a href=\"https:\/\/shimz.me\/example\/d3js\/voronoi\/SchoolDistrict\/index.html\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/gunmagisgeek.com\/blog\/wp-content\/uploads\/2015\/01\/SchoolDistrict.jpg\" alt=\"\u7fa4\u99ac\u770c \u5c0f\u5b66\u6821\u533a \u30dc\u30ed\u30ce\u30a4\u56f3 \u91cd\u306d\u5408\u308f\u305b\" width=\"690\" height=\"375\" class=\"aligncenter size-full wp-image-3985\" srcset=\"https:\/\/gunmagisgeek.com\/blog\/wp-content\/uploads\/2015\/01\/SchoolDistrict.jpg 690w, https:\/\/gunmagisgeek.com\/blog\/wp-content\/uploads\/2015\/01\/SchoolDistrict-276x150.jpg 276w\" sizes=\"auto, (max-width: 690px) 100vw, 690px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/shimz.me\/example\/d3js\/voronoi\/SchoolDistrict\/index.html\">example<\/a><\/p>\n<p>\u4ee5\u524d\u7d39\u4ecb\u3057\u305f\u300c<a href=\"https:\/\/gunmagisgeek.com\/blog\/book\/3650\">\u6700\u9069\u914d\u7f6e\u306e\u6570\u7406<\/a>\u300d\u3068\u3044\u3046\u672c\u306e\u4e2d\u3067\u3001\u5b66\u6821\u533a\u306e\u7bc4\u56f2\u3068\u30dc\u30ed\u30ce\u30a4\u5206\u5272\u533a\u57df\u3068\u3092\u6bd4\u8f03\u3057\u3066\u3001\u305d\u306e\u30ba\u30ec\u3092\u691c\u8a0e\u3057\u305f\u7814\u7a76\u4e8b\u4f8b\u3068\u3044\u3046\u306e\u304c\u8f09\u3063\u3066\u3044\u305f\u306e\u3067\u7fa4\u99ac\u770c\u306e\u5c0f\u5b66\u6821\u306e\u4e0a\u306b\u30dc\u30ed\u30ce\u30a4\u56f3\u3092\u30aa\u30fc\u30d0\u30ec\u30a4\u3057\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\n<p>\u3056\u3063\u3068\u898b\u305f\u611f\u3058\u4e2d\u5fc3\u5730\u3067\u306f\u307b\u3068\u3093\u3069\u8fd1\u4f3c\u3057\u3066\u3044\u308b\u3088\u3046\u306a\u306e\u3067\u3059\u304c\u3001\u6cbc\u7530\u5e02\u5468\u8fba\u3067\u5b66\u533a\u3068\u30dc\u30ed\u30ce\u30a4\u56f3\u304c\u30ba\u30ec\u307e\u304f\u3063\u3066\u3044\u3066\u6c17\u306b\u306a\u3063\u305f\u306e\u3067\u8abf\u3079\u3066\u307f\u305f\u3068\u3053\u308d\u3001\u3044\u304f\u3064\u304b\u306e\u5c0f\u5b66\u6821\u304c\u5ec3\u7d71\u5408\u3055\u308c\u305f\u7d50\u679c\u3001\u3061\u3087\u3063\u3068\u6b6a\u306a\u5f62\u306b\u306a\u3063\u3066\u3044\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/gunmagisgeek.com\/blog\/wp-content\/uploads\/2015\/01\/SchoolDistrict2.jpg\" alt=\"\u6cbc\u7530\u5e02\u3000\u5c0f\u5b66\u6821\u533a\" width=\"690\" height=\"417\" class=\"aligncenter size-full wp-image-3986\" srcset=\"https:\/\/gunmagisgeek.com\/blog\/wp-content\/uploads\/2015\/01\/SchoolDistrict2.jpg 690w, https:\/\/gunmagisgeek.com\/blog\/wp-content\/uploads\/2015\/01\/SchoolDistrict2-248x150.jpg 248w\" sizes=\"auto, (max-width: 690px) 100vw, 690px\" \/><\/p>\n<p>\u3044\u308d\u3044\u308d\u8abf\u3079\u3066\u307f\u308b\u3068\u9762\u767d\u3044\u3053\u3068\u304c\u308f\u304b\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<\/p>\n<h2>\u5c0f\u5b66\u6821\u533a\u30dd\u30ea\u30b4\u30f3\u8868\u793a<\/h2>\n<p>\u5c0f\u5b66\u6821\u533a\u306b\u95a2\u3057\u3066\u306f<a href=\"https:\/\/gunmagisgeek.com\/blog\/map\/2135\">\u4ee5\u524dGoogle Maps\u4e0a\u306bKML\u3092\u8aad\u307f\u8fbc\u3093\u3067\u8868\u793a<\/a>\u3057\u305f\u3053\u3068\u304c\u3042\u3063\u305f\u306e\u3067\u3001\u4eca\u56de\u306fGeoJSON\u30c7\u30fc\u30bf\u3092\u4f7f\u3044\u307e\u3057\u305f\u3002\u5143\u30c7\u30fc\u30bf\u306f<a href=\"https:\/\/nlftp.mlit.go.jp\/ksj\/gml\/datalist\/KsjTmplt-A27.html\">\u56fd\u571f\u6570\u5024\u60c5\u5831<\/a>\u304b\u3089\u3001QGIS\u3092\u4f7f\u3063\u3066GeoJSON\u306b\u5909\u63db\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u53c2\u8003\uff1a<span class=\"removed_link\" title=\"https:\/\/blog.hitsuji.me\/make-shape-file\/\">Shape\u30d5\u30a1\u30a4\u30eb\u304b\u3089GeoJson\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b<\/span><\/p>\n<p>Google Maps\u4e0a\u306b\u8868\u793a\u3059\u308b\u65b9\u6cd5\u306f\u4ee5\u4e0b<\/p>\n<pre class=\"lang:js decode:true \" > \/\/\u30dd\u30ea\u30b4\u30f3\u30c7\u30fc\u30bf\u306e\u30b9\u30bf\u30a4\u30eb\u3092\u6307\u5b9a\n    var styleFeature = function(feature){\n        return {\n            \"strokeWeight\": 2,\n            \"strokeColor\": \"green\",\n            \"zIndex\": 1,\n            \"fillColor\": \"lightgreen\",\u3000\n            \"fillOpacity\": 0.5,\n            \"visible\": true\n        };          \n    }   \n    \n    \/\/\u5c0f\u5b66\u6821\u533a\u30c7\u30fc\u30bf\u8aad\u307f\u8fbc\u307f\n    d3.json(\"..\/..\/_geodata\/SchoolDistrict.geojson\", function(data) {       \n        \/\/\u30c7\u30fc\u30bf\u30ec\u30a4\u30e4\u30fc\u306b\u8ffd\u52a0\n        map.data.addGeoJson(data);\n        \/\/\u30c7\u30fc\u30bf\u30ec\u30a4\u30e4\u306e\u30b9\u30bf\u30a4\u30eb\u3092\u6307\u5b9a\n        map.data.setStyle(styleFeature);                \n    });<\/pre>\n<p>\u8a73\u7d30\u306f<a href=\"https:\/\/gunmagisgeek.com\/blog\/google-map-api\/3445\">\u3053\u3061\u3089<\/a>\u3092\u3002<\/p>\n<h2>\u30dc\u30ed\u30ce\u30a4\u56f3\u306e\u8868\u793a<\/h2>\n<p>\u5c0f\u5b66\u6821\u306e\u4f4d\u7f6e(\u6bcd\u70b9)\u3068\u30dc\u30ed\u30ce\u30a4\u56f3\u306fD3.js\u3067\u4f5c\u6210\u3057Google Maps\u4e0a\u306b\u30aa\u30fc\u30d0\u30ec\u30a4\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"lang:js decode:true \" > \/***************************************************************************\n     *  \u30dc\u30ed\u30ce\u30a4\u56f3\u8868\u793a\n     ***************************************************************************\/\n    var overlay = new google.maps.OverlayView(); \/\/OverLay\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210 \n\n    \/\/\u5c0f\u5b66\u6821\u4f4d\u7f6e\u30c7\u30fc\u30bf\u8aad\u307f\u8fbc\u307f\n    d3.json(\"..\/..\/_geodata\/PublicElementarySchool.geojson\", function(pointjson) {\n        \/\/\u30aa\u30fc\u30d0\u30ec\u30a4\u8ffd\u52a0\n        overlay.onAdd = function () {\n     \n            var layer = d3.select(this.getPanes().overlayMouseTarget).append(\"div\").attr(\"class\", \"SvgOverlay\");\n            var svg = layer.append(\"svg\");\n            var svgoverlay = svg.append(\"g\").attr(\"class\", \"AdminDivisions\");\n            var markerOverlay = this;\n            var overlayProjection = markerOverlay.getProjection();\n     \n            \/\/Google Map\u306e\u6295\u5f71\u6cd5\u8a2d\u5b9a\n            var googleMapProjection = function (coordinates) {\n                var googleCoordinates = new google.maps.LatLng(coordinates[1], coordinates[0]);\n                var pixelCoordinates = overlayProjection.fromLatLngToDivPixel(googleCoordinates);\n                return [pixelCoordinates.x + 4000, pixelCoordinates.y + 4000];\n            }\n            \n                \n                \n            \/\/\u518d\u63cf\u753b\u6642\u306b\u547c\u3070\u308c\u308b\u30b3\u30fc\u30eb\u30d0\u30c3\u30af    \n            overlay.draw = function () {\n     \n     \n                \/\/\u6bcd\u70b9\u4f4d\u7f6e\u60c5\u5831\n                var pointdata = pointjson.features;\n                \n                \/\/\u30d4\u30af\u30bb\u30eb\u30dd\u30b8\u30b7\u30e7\u30f3\u60c5\u5831\n                var positions = [];\n     \n                pointdata.forEach(function(d) {     \n                    positions.push(googleMapProjection(d.geometry.coordinates)); \/\/\u4f4d\u7f6e\u60c5\u5831\u2192\u30d4\u30af\u30bb\u30eb\n                });\n        \n                \/\/\u30dc\u30ed\u30ce\u30a4\u5909\u63db\u95a2\u6570\n                var polygons = d3.geom.voronoi(positions);\n                \n                var pathAttr = {\n                    \"d\":function(d, i) { return \"M\" + polygons[i].join(\"L\") + \"Z\"},\n                    \"stroke\":\"blue\",\n                    \"stroke-width\": 2,\n                    \"fill\":\"white\",\n                    \"fill-opacity\":0\n                };\n     \n                \/\/\u5883\u754c\u8868\u793a\n                svgoverlay.selectAll(\"path\")\n                    .data(pointdata)\n                    .attr(pathAttr)\n                    .enter()\n                    .append(\"svg:path\")\n                    .attr(\"class\", \"cell\")\n                    .attr(pathAttr)\n                    .append(\"title\")\n                    .text(function(d, i){console.log(d); return d.properties.A27_003 +\"\u533a\";   });\n                \n                var circleAttr = {\n                        \"cx\":function(d, i) { return positions[i][0]; },\n                        \"cy\":function(d, i) { return positions[i][1]; },\n                        \"r\":4,\n                        \"fill\":\"red\"            \n                }\n        \n                \/\/\u6bcd\u70b9\u8868\u793a\n                svgoverlay.selectAll(\"circle\")\n                    .data(pointdata)\n                    .attr(circleAttr)\n                    .enter()\n                    .append(\"svg:circle\")\n                    .attr(circleAttr);\n          \n            };\n     \n        };\n     \n        \/\/\u4f5c\u6210\u3057\u305fSVG\u3092\u5730\u56f3\u306b\u30aa\u30fc\u30d0\u30fc\u30ec\u30a4\u3059\u308b\n        overlay.setMap(map);        \n    });<\/pre>\n<p><a href=\"https:\/\/gunmagisgeek.com\/blog\/d3-js\/2819\">\u3010D3.js\u3011Google Map\u4e0a\u306b\u30dc\u30ed\u30ce\u30a4\u56f3\u3092\u63cf\u304f | #GUNMA\u30fbGIS\u30fbGEEK<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>example \u4ee5\u524d\u7d39\u4ecb\u3057\u305f\u300c\u6700\u9069\u914d\u7f6e\u306e\u6570\u7406\u300d\u3068\u3044&hellip;<\/p>\n","protected":false},"author":1,"featured_media":3985,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18,37],"tags":[],"class_list":["post-3984","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-d3-js","category-google-map-api","has-post-thumbnail-archive"],"_links":{"self":[{"href":"https:\/\/gunmagisgeek.com\/blog\/wp-json\/wp\/v2\/posts\/3984","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gunmagisgeek.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gunmagisgeek.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gunmagisgeek.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gunmagisgeek.com\/blog\/wp-json\/wp\/v2\/comments?post=3984"}],"version-history":[{"count":0,"href":"https:\/\/gunmagisgeek.com\/blog\/wp-json\/wp\/v2\/posts\/3984\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gunmagisgeek.com\/blog\/wp-json\/wp\/v2\/media\/3985"}],"wp:attachment":[{"href":"https:\/\/gunmagisgeek.com\/blog\/wp-json\/wp\/v2\/media?parent=3984"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gunmagisgeek.com\/blog\/wp-json\/wp\/v2\/categories?post=3984"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gunmagisgeek.com\/blog\/wp-json\/wp\/v2\/tags?post=3984"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}