양선아

5/29 update

1 +{
2 + // Use IntelliSense to learn about possible attributes.
3 + // Hover to view descriptions of existing attributes.
4 + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 + "version": "0.2.0",
6 + "configurations": [
7 + {
8 + "type": "chrome",
9 + "request": "launch",
10 + "name": "Launch Chrome against localhost",
11 + "url": "http://127.0.0.1:8000/market_analysis/returnfarm?maptype=9&contenttype=edu",
12 + "webRoot": "${workspaceFolder}"
13 + }
14 + ]
15 +}
...\ No newline at end of file ...\ No newline at end of file
...@@ -11,23 +11,33 @@ ...@@ -11,23 +11,33 @@
11 </head> 11 </head>
12 12
13 <body> 13 <body>
14 - <h1><a href="http://127.0.0.1:8000/market_analysis/maplist">Statistics on Return Farm Project</a></h1> 14 + <!--body-->
15 + <div id="bodyWrap">
16 + <div id="header">
17 + <h1><a href="/market_analysis/maplist">Statistics on Return Farm Project</a></h1>
15 <br> 18 <br>
16 <h3>농산물 시장 유통에 대한 통계분석 입니다.</h3> 19 <h3>농산물 시장 유통에 대한 통계분석 입니다.</h3>
17 <br> 20 <br>
18 - 21 + </div>
22 + <div id="menubar">
19 <ul class="nav justify-content-center"> 23 <ul class="nav justify-content-center">
20 <li class="nav-item"> 24 <li class="nav-item">
21 - <a class="nav-link active" href="http://127.0.0.1:8000/market_analysis/market">Market</a> 25 + <a class="nav-link active" href="/market_analysis/market">Market</a>
22 </li> 26 </li>
23 <li class="nav-item"> 27 <li class="nav-item">
24 - <a class="nav-link" href="http://127.0.0.1:8000/market_analysis/population">Population</a> 28 + <a class="nav-link" href="/market_analysis/population">Population</a>
25 </li> 29 </li>
26 <li class="nav-item"> 30 <li class="nav-item">
27 - <a class="nav-link" href="http://127.0.0.1:8000/market_analysis/returnfarm">Return Farm</a> 31 + <a class="nav-link" href="/market_analysis/returnfarm">Return Farm</a>
28 </li> 32 </li>
29 </ul> 33 </ul>
30 - 34 + </div>
35 + </div>
36 + <!--content-->
37 + <div id="contentWrap">
38 + <h6>
39 + explain 들어가는 부분
40 + </h6>
31 </div> 41 </div>
32 </body> 42 </body>
33 </html> 43 </html>
...\ No newline at end of file ...\ No newline at end of file
......
1 -<h1>population</h1>
...\ No newline at end of file ...\ No newline at end of file
1 +<!DOCTYPE html>
2 +<html lang="kr">
3 + <head>
4 + <title>RF-Project</title>
5 + <!-- link에 들어가 있는건 지도 데이터를 위한 css 파일 -->
6 + <!-- script에 들어가 있는건 지도 데이터를 위한 js 파일 -->
7 + <!-- 직접 다운받아 넣을 수도 있는데 우선은 그냥 웹에서 불러올 수 있도록 해놨다. -->
8 + <link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css" />
9 + <script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"></script>
10 + <!--css 내용 여기에 direct로 넣었다-->
11 + <style>
12 + #mapbase {position:relative; width:40%; height:0; padding-bottom:40%; }
13 + .info {
14 + padding: 6px 8px;
15 + font: 14px/16px Arial, Helvetica, sans-serif;
16 + background: white;
17 + background: rgba(255,255,255,0.8);
18 + box-shadow: 0 0 15px rgba(0,0,0,0.2);
19 + border-radius: 5px;
20 + }
21 + .info h4 {
22 + margin: 0 0 5px;
23 + color: #777;
24 + }
25 + .legend {
26 + line-height: 18px;
27 + color: #555;
28 + }
29 + .legend i {
30 + width: 18px;
31 + height: 18px;
32 + float: left;
33 + margin-right: 8px;
34 + opacity: 0.7;
35 + }
36 + </style>
37 +
38 + <!--BOOTSTRAP 사용 부분-->
39 + <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
40 + <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
41 + <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
42 + <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
43 +
44 + </head>
45 +
46 + <body>
47 + <div id="bodyWrap">
48 + <div id="header">
49 + <h1><a href="/market_analysis/maplist">Statistics on Return Farm Project</a></h1>
50 + <br>
51 + <h3>농산물 시장 유통에 대한 통계분석 입니다.</h3>
52 + <br>
53 + </div>
54 + <div id="menubar">
55 + <ul class="nav justify-content-center">
56 + <li class="nav-item">
57 + <a class="nav-link active" href="/market_analysis/market">Market</a>
58 + </li>
59 + <li class="nav-item">
60 + <a class="nav-link" href="/market_analysis/population">Population</a>
61 + </li>
62 + <li class="nav-item">
63 + <a class="nav-link" href="/market_analysis/returnfarm">Return Farm</a>
64 + </li>
65 + </ul>
66 + </div>
67 + </div>
68 + <!--population 단독 부분-->
69 + <!--return farm 단독 부분-->
70 + <div id="contentWrap">
71 + <!--검색 바 만든 부분-->
72 + <div id="searchmenu">
73 + <form action="{% url 'population' %}" method="GET">
74 + <div class="form-group">
75 + <select name="maptype">
76 + <option value="9">시도</option>
77 + <option value="10">시군구</option>
78 + </select>
79 + <select name="densitytype">
80 + <option value="edu">귀농가구원 연령별</option>
81 + </select>
82 + <input type="submit">
83 + </div>
84 + </form>
85 + </div>
86 + <!--지도 생성 부분-->
87 + <div id="mapbase">
88 + <script type="text/javascript">
89 + // map 객체 생성 map안에 넣어주는건 div id
90 + // 위도, 경도, zoom 수준
91 + var map = L.map('mapbase', {zoomDelta: 0.25, zoomSnap: 0}).setView([36.5205243,128.0540569], 7);
92 + // tilelayer를 씌우는 작업 OSM을 사용했음
93 + L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', {
94 + attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
95 + maxZoom: 10,
96 + id: 'mapbox/light-v9',
97 + tileSize: 512,
98 + zoomOffset:-1,
99 + accessToken: 'pk.eyJ1IjoidGpzZGszMTA1IiwiYSI6ImNrYWM5bXljZzB1N28ycnA5bTVsNHZsbnkifQ.W3-irWof5WMR8BcfBR4Ftw'
100 + }).addTo(map);
101 +
102 + // mapdata 가져오는 부분
103 + // replace 쓰는 방법 : (바꾸기 전 문자, 바꾸고 난 후 문자)
104 + var statesdata = "{{maps.mapdata}}".replace(/&quot;/g,"\"");
105 + statesdata = JSON.parse(statesdata);
106 + let key = Object.keys(statesdata.features[1].properties);
107 + </script>
108 + </div>
109 + <!--지도에 밀도 데이터 받는 부분-->
110 + <div id="density_mapping">
111 + <script>
112 + var densitydatas = "{{exportdata}}".replace(/&quot;/g,"\"");
113 + densitydatas = JSON.parse(densitydatas);
114 + for(var i=0; i < densitydatas.length; i++)
115 + {
116 + for(var j=0; j<statesdata.features.length; j++)
117 + {
118 + if (statesdata.features[j]['properties'][key[2]]==densitydatas[i]['C1_NM'] && densitydatas[i]['ITM_NM']=='귀농가구원수')
119 + {
120 + statesdata.features[j]['properties']['density']=densitydatas[i]['DT'];
121 + break;
122 + }
123 + }
124 + }
125 + </script>
126 + </div>
127 + <!--지도의 큰 모양 바꾸는 부분-->
128 + <div id="map_design">
129 + <script>
130 + var geojson;
131 + var density_max = 3300;
132 + function getColor(d) {
133 + return d > density_max*0.9 ? '#FF0015' :
134 + d > density_max*0.8 ? '#F20D20' :
135 + d > density_max*0.7 ? '#E6192A' :
136 + d > density_max*0.6 ? '#D92635' :
137 + d > density_max*0.5 ? '#CC3340' :
138 + d > density_max*0.4 ? '#BF404A' :
139 + d > density_max*0.3 ? '#B34D55' :
140 + d > density_max*0.2 ? '#A65960' :
141 + d > density_max*0.1 ? '#99666A' :
142 + '#8C7375';
143 + }
144 + function style(feature) {
145 + return {
146 + fillColor: getColor(feature.properties.density),
147 + weight: 2,
148 + opacity: 1,
149 + color: 'white',
150 + dashArray: '3',
151 + fillOpacity: 0.7
152 + };
153 + }
154 + L.geoJson(statesdata, {style: style}).addTo(map);
155 + // mouseover event listener
156 + function highlightFeature(e) {
157 + var layer = e.target;
158 + layer.setStyle({
159 + weight: 5,
160 + color: '#666',
161 + dashArray: '',
162 + fillOpacity: 0.7
163 + });
164 +
165 + if (!L.Browser.ie && !L.Browser.opera && !L.Browser.edge) {
166 + layer.bringToFront();
167 + }
168 + info.update(layer.feature.properties);
169 + }
170 + // mouseout define
171 + function resetHighlight(e) {
172 + geojson.resetStyle(e.target);
173 + info.update();
174 + }
175 + function zoomToFeature(e) {
176 + map.fitBounds(e.target.getBounds());
177 + }
178 + function onEachFeature(feature, layer) {
179 + layer.on({
180 + mouseover: highlightFeature,
181 + mouseout: resetHighlight,
182 + click: zoomToFeature
183 + });
184 + }
185 +
186 + geojson = L.geoJson(statesdata, {
187 + style: style,
188 + onEachFeature: onEachFeature
189 + }).addTo(map);
190 + </script>
191 + </div>
192 + <!--information, legend, zoom 넣는 부분-->
193 + <div class="map_info">
194 + <script>
195 + var info = L.control();
196 +
197 + info.onAdd = function (map) {
198 + this._div = L.DomUtil.create('div', 'info'); // create a div with a class "info"
199 + this.update();
200 + return this._div;
201 + };
202 +
203 + // method that we will use to update the control based on feature properties passed
204 + info.update = function (props) {
205 + this._div.innerHTML = '<h4>Korea Return Farm Density</h4>' + (props ?
206 + '<b>' + props[key[2]] + '</b><br />' + props.density + ' 개의 교육 예정'
207 + : 'Hover over a state');
208 + };
209 +
210 + info.addTo(map);
211 +
212 + var legend = L.control({position: 'bottomright'});
213 +
214 + legend.onAdd = function (map) {
215 +
216 + var div = L.DomUtil.create('div', 'info legend'),
217 + grades = [0, density_max*0.1, density_max*0.2, density_max*0.3, density_max*0.4,density_max*0.5, density_max*0.6, density_max*0.7, density_max*0.8,density_max*0.9],
218 + labels = [],
219 + from, to;
220 +
221 + // loop through our density intervals and generate a label with a colored square for each interval
222 + for (var i = 0; i < grades.length; i++) {
223 + from = grades[i];
224 + to = grades[i+1];
225 + labels.push(
226 + '<i style="background: '+ getColor(from + 1) + '"></i> ' + from + (to ? '&ndash;' + to :'+'));
227 + }
228 + div.innerHTML = labels.join('<br>');
229 + return div;
230 + };
231 + legend.addTo(map);
232 + </script>
233 + </div>
234 + </div>
235 + </body>
236 +</html>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -44,48 +44,48 @@ ...@@ -44,48 +44,48 @@
44 </head> 44 </head>
45 45
46 <body> 46 <body>
47 - <h1><a href="http://127.0.0.1:8000/market_analysis/maplist">Statistics on Return Farm Project</a></h1> 47 + <div id="bodyWrap">
48 + <div id="header">
49 + <h1><a href="/market_analysis/maplist">Statistics on Return Farm Project</a></h1>
48 <br> 50 <br>
49 <h3>농산물 시장 유통에 대한 통계분석 입니다.</h3> 51 <h3>농산물 시장 유통에 대한 통계분석 입니다.</h3>
50 <br> 52 <br>
51 - 53 + </div>
54 + <div id="menubar">
52 <ul class="nav justify-content-center"> 55 <ul class="nav justify-content-center">
53 <li class="nav-item"> 56 <li class="nav-item">
54 - <a class="nav-link active" href="http://127.0.0.1:8000/market_analysis/market">Market</a> 57 + <a class="nav-link active" href="/market_analysis/market">Market</a>
55 </li> 58 </li>
56 <li class="nav-item"> 59 <li class="nav-item">
57 - <a class="nav-link" href="http://127.0.0.1:8000/market_analysis/population">Population</a> 60 + <a class="nav-link" href="/market_analysis/population">Population</a>
58 </li> 61 </li>
59 <li class="nav-item"> 62 <li class="nav-item">
60 - <a class="nav-link" href="http://127.0.0.1:8000/market_analysis/returnfarm">Return Farm</a> 63 + <a class="nav-link" href="/market_analysis/returnfarm">Return Farm</a>
61 </li> 64 </li>
62 </ul> 65 </ul>
63 -<!--return farm 단독 부분-->
64 - <ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
65 - <li class="nav-item" role="presentation">
66 - <a class="nav-link" id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab" aria-selected="true">지역</a>
67 - </li>
68 - <li class="nav-item dropdown">
69 - <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">내용</a>
70 - <div class="dropdown-menu">
71 - <a class="dropdown-item" href="#">교육</a>
72 - <a class="dropdown-item" href="#">지원정책</a>
73 </div> 66 </div>
74 - </li>
75 - <li class="nav-item" role="presentation">
76 - <a class="nav-link" id="pills-contact-tab" data-toggle="pill" href="#pills-contact" role="tab" aria-selected="false">Return Farm</a>
77 - </li>
78 - </ul>
79 - <div class="tab-content" id="pills-tabContent">
80 - <div class="tab-pane fade" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">Hello</div>
81 - <div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">Bonjour</div>
82 - <div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab">안녕하세요</div>
83 </div> 67 </div>
84 - 68 + <!--return farm 단독 부분-->
85 - <div id="mapbase"></div> 69 + <div id="contentWrap">
70 + <!--검색 바 만든 부분-->
71 + <div id="searchmenu">
72 + <form action="{% url 'returnfarm' %}" method="GET">
73 + <div class="form-group">
74 + <select name="maptype">
75 + <option value="9">시도</option>
76 + <option value="10">시군구</option>
77 + </select>
78 + <select name="contenttype">
79 + <option value="edu">귀농귀촌 교육 수</option>
80 + <option value="policy">귀농귀촌 정책 수 </option>
81 + </select>
82 + <input type="submit">
83 + </div>
84 + </form>
85 + </div>
86 + <!--지도 생성 부분-->
87 + <div id="mapbase">
86 <script type="text/javascript"> 88 <script type="text/javascript">
87 - ///////////// 지도 생성해주는 부분임 //////////////
88 -
89 // map 객체 생성 map안에 넣어주는건 div id 89 // map 객체 생성 map안에 넣어주는건 div id
90 // 위도, 경도, zoom 수준 90 // 위도, 경도, zoom 수준
91 var map = L.map('mapbase', {zoomDelta: 0.25, zoomSnap: 0}).setView([36.5205243,128.0540569], 7); 91 var map = L.map('mapbase', {zoomDelta: 0.25, zoomSnap: 0}).setView([36.5205243,128.0540569], 7);
...@@ -101,48 +101,64 @@ ...@@ -101,48 +101,64 @@
101 101
102 // mapdata 가져오는 부분 102 // mapdata 가져오는 부분
103 // replace 쓰는 방법 : (바꾸기 전 문자, 바꾸고 난 후 문자) 103 // replace 쓰는 방법 : (바꾸기 전 문자, 바꾸고 난 후 문자)
104 - var statesdata = "{{maps}}".replace(/&quot;/g,"\""); 104 + var statesdata = "{{maps.mapdata}}".replace(/&quot;/g,"\"");
105 statesdata = JSON.parse(statesdata); 105 statesdata = JSON.parse(statesdata);
106 -
107 - function getColor(d) {
108 - return d > 30 ? '#800026' :
109 - d > 25 ? '#BD0026' :
110 - d > 20 ? '#E31A1C' :
111 - d > 15 ? '#FC4E2A' :
112 - d > 10 ? '#FD8D3C' :
113 - d > 5 ? '#FEB24C' :
114 - d > 0 ? '#FED976' :
115 - '#FFEDA0';
116 - }
117 - function style(feature) {
118 - return {
119 - fillColor: getColor(feature.properties.density),
120 - weight: 2,
121 - opacity: 1,
122 - color: 'white',
123 - dashArray: '3',
124 - fillOpacity: 0.7
125 - };
126 - }
127 let key = Object.keys(statesdata.features[1].properties); 106 let key = Object.keys(statesdata.features[1].properties);
128 </script> 107 </script>
129 - 108 + </div>
109 + <!--지도에 밀도 데이터 받는 부분-->
110 + <div id="density_mapping">
130 {% for data in exportdata %} 111 {% for data in exportdata %}
131 <script> 112 <script>
132 // density data 추가하는 부분 113 // density data 추가하는 부분
133 for(var j=0; j<statesdata.features.length; j++) 114 for(var j=0; j<statesdata.features.length; j++)
134 { 115 {
116 + if ("{{maps.id}}"==9){
135 if (statesdata.features[j]['properties'][key[2]]=="{{data.city}}") 117 if (statesdata.features[j]['properties'][key[2]]=="{{data.city}}")
136 { 118 {
137 statesdata.features[j]['properties']['density']="{{data.count}}"; 119 statesdata.features[j]['properties']['density']="{{data.count}}";
138 break; 120 break;
139 } 121 }
140 } 122 }
123 + else
124 + {
125 + if (statesdata.features[j]['properties'][key[2]]=="{{data.cntr}}")
126 + {
127 + statesdata.features[j]['properties']['density']="{{data.count}}";
128 + break;
129 + }
130 + }
131 + }
141 </script> 132 </script>
142 {% endfor %} 133 {% endfor %}
143 - 134 + </div>
135 + <!--지도의 큰 모양 바꾸는 부분-->
136 + <div id="map_design">
144 <script> 137 <script>
145 var geojson; 138 var geojson;
139 + var density_max = 100;
140 + function getColor(d) {
141 + return d > density_max*0.9 ? '#FF0015' :
142 + d > density_max*0.8 ? '#F20D20' :
143 + d > density_max*0.7 ? '#E6192A' :
144 + d > density_max*0.6 ? '#D92635' :
145 + d > density_max*0.5 ? '#CC3340' :
146 + d > density_max*0.4 ? '#BF404A' :
147 + d > density_max*0.3 ? '#B34D55' :
148 + d > density_max*0.2 ? '#A65960' :
149 + d > density_max*0.1 ? '#99666A' :
150 + '#8C7375';
151 + }
152 + function style(feature) {
153 + return {
154 + fillColor: getColor(feature.properties.density),
155 + weight: 2,
156 + opacity: 1,
157 + color: 'white',
158 + dashArray: '3',
159 + fillOpacity: 0.7
160 + };
161 + }
146 L.geoJson(statesdata, {style: style}).addTo(map); 162 L.geoJson(statesdata, {style: style}).addTo(map);
147 // mouseover event listener 163 // mouseover event listener
148 function highlightFeature(e) { 164 function highlightFeature(e) {
...@@ -179,11 +195,10 @@ ...@@ -179,11 +195,10 @@
179 style: style, 195 style: style,
180 onEachFeature: onEachFeature 196 onEachFeature: onEachFeature
181 }).addTo(map); 197 }).addTo(map);
182 -
183 -
184 </script> 198 </script>
199 + </div>
185 <!--information, legend, zoom 넣는 부분--> 200 <!--information, legend, zoom 넣는 부분-->
186 - <div class="info"></div> 201 + <div class="map_info">
187 <script> 202 <script>
188 var info = L.control(); 203 var info = L.control();
189 204
...@@ -207,7 +222,7 @@ ...@@ -207,7 +222,7 @@
207 legend.onAdd = function (map) { 222 legend.onAdd = function (map) {
208 223
209 var div = L.DomUtil.create('div', 'info legend'), 224 var div = L.DomUtil.create('div', 'info legend'),
210 - grades = [0, 5, 10, 15, 20, 25, 30], 225 + grades = [0, density_max*0.1, density_max*0.2, density_max*0.3, density_max*0.4,density_max*0.5, density_max*0.6, density_max*0.7, density_max*0.8,density_max*0.9],
211 labels = [], 226 labels = [],
212 from, to; 227 from, to;
213 228
...@@ -222,8 +237,8 @@ ...@@ -222,8 +237,8 @@
222 return div; 237 return div;
223 }; 238 };
224 legend.addTo(map); 239 legend.addTo(map);
225 -
226 -
227 </script> 240 </script>
241 + </div>
242 + </div>
228 </body> 243 </body>
229 </html> 244 </html>
...\ No newline at end of file ...\ No newline at end of file
......
1 from django.conf.urls import url 1 from django.conf.urls import url
2 +from django.urls import path
2 from . import views 3 from . import views
3 4
4 urlpatterns = [ 5 urlpatterns = [
5 - url('returnfarm/<int:maptype>', views.returnfarm), 6 + url('returnfarm', views.returnfarm, name="returnfarm"),
6 - url('population', views.population), 7 + url('population', views.population, name="population"),
7 url('market', views.market), 8 url('market', views.market),
8 url('', views.main), 9 url('', views.main),
9 ] 10 ]
...\ No newline at end of file ...\ No newline at end of file
......
1 +#-*- coding:utf-8
2 +
1 from django.shortcuts import render 3 from django.shortcuts import render
2 -from django.db.models import Count 4 +from django.db.models import Count, Max
5 +from urllib.request import urlopen
3 from .models import RT_edu, Maps, RT_agri_policy 6 from .models import RT_edu, Maps, RT_agri_policy
7 +from bs4 import BeautifulSoup
8 +import pandas as pd
4 9
5 # Create your views here. 10 # Create your views here.
6 11
7 -def dbselect(contenttype, maptype): 12 +def returnfarm_dbselect(contenttype, maptype):
8 if maptype == 9: 13 if maptype == 9:
9 mapt = 'city' 14 mapt = 'city'
10 elif maptype == 10: 15 elif maptype == 10:
11 mapt = 'cntr' 16 mapt = 'cntr'
12 -
13 if contenttype=='policy': 17 if contenttype=='policy':
14 myrtrn = RT_agri_policy.objects.values(mapt).annotate(count=Count(mapt)) 18 myrtrn = RT_agri_policy.objects.values(mapt).annotate(count=Count(mapt))
15 return myrtrn 19 return myrtrn
...@@ -17,18 +21,41 @@ def dbselect(contenttype, maptype): ...@@ -17,18 +21,41 @@ def dbselect(contenttype, maptype):
17 myrtrn = RT_edu.objects.values(mapt).annotate(count=Count(mapt)) 21 myrtrn = RT_edu.objects.values(mapt).annotate(count=Count(mapt))
18 return myrtrn 22 return myrtrn
19 23
24 +# 공공데이터 불러오는 부분
25 +def publicdata():
26 + # 통계청 귀농가구원의 시도별, 시군별, 연령별
27 + url = 'http://kosis.kr/openapi/statisticsData.do?method=getList&apiKey=M2I3MWFhNzE2MjlkYjhhNzgwNWFjNWQ3MGU0MzY5Y2Y=&format=json&jsonVD=Y&userStatsId=tjsdk3105/101/DT_1A02003/2/1/20200529160216&prdSe=Y&newEstPrdCnt=1'
28 + data = urlopen(url).read().decode('utf8')
29 + return data
30 +
20 def main(request): 31 def main(request):
21 return render(request, 'main.html') 32 return render(request, 'main.html')
22 33
23 -def returnfarm(request, maptype): 34 +def returnfarm(request):
24 - mapp = Maps.objects.get(id=maptype) 35 + try:
25 - mapp = mapp.mapdata 36 + maptype = request.GET['maptype']
26 - exportdatas = dbselect('policy', maptype) 37 + contenttype = request.GET['contenttype']
38 + mapp = Maps.objects.get(id=int(maptype))
39 + exportdatas = returnfarm_dbselect(contenttype, int(maptype))
40 + except:
41 + mapp = Maps.objects.get(id=9)
42 + exportdatas = {}
27 context = {'exportdata': exportdatas, 'maps':mapp} 43 context = {'exportdata': exportdatas, 'maps':mapp}
28 return render(request, 'returnfarm.html', context) 44 return render(request, 'returnfarm.html', context)
29 45
46 +
30 def population(request): 47 def population(request):
31 - return render(request, 'population.html') 48 + try:
49 + maptype = request.GET['maptype']
50 + densitytype = request.GET['densitytype']
51 + mapp = Maps.objects.get(id=int(maptype))
52 + exportdatas = publicdata()
53 + except:
54 + mapp = Maps.objects.get(id=9)
55 + exportdatas = {}
56 + exportdatas = publicdata()
57 + context = {'exportdata': exportdatas, 'maps':mapp}
58 + return render(request, 'population.html', context)
32 59
33 def market(request): 60 def market(request):
34 return render(request, 'market.html') 61 return render(request, 'market.html')
...\ No newline at end of file ...\ No newline at end of file
......
No preview for this file type
No preview for this file type
No preview for this file type