質問編集履歴

5

正しい使い方か分かりませんが、ソースコードの修正後を記載しました

2020/09/14 15:06

投稿

okiron9619
okiron9619

スコア5

test CHANGED
File without changes
test CHANGED
@@ -70,7 +70,7 @@
70
70
 
71
71
  ### 該当のソースコード
72
72
 
73
-
73
+ 修正前(投稿時)のソースコード
74
74
 
75
75
  ```ここに言語名を入力
76
76
 
@@ -228,7 +228,121 @@
228
228
 
229
229
  ```
230
230
 
231
-
231
+ toast_uz様に回答、説明を提示して頂いた後、修正したソースコード
232
+
233
+
234
+
235
+ ```views.py
236
+
237
+ class LinkList(View):
238
+
239
+ ##@method_decorator(login_required())
240
+
241
+ def get(self, request, *args, **kwargs):
242
+
243
+ # オブジェクトの取得
244
+
245
+ link_list = Mareas_Links_Nodes.objects.all().order_by('link_id')
246
+
247
+ # レスポンスの生成
248
+
249
+ # link_listから要素を2つずつ取り出す
250
+
251
+ features = []
252
+
253
+ for link1, link2 in zip(link_list, link_list[1:]):
254
+
255
+ features.append(LinkNode().connectLinks(link1, link1))
256
+
257
+ features.append(LinkNode().connectedLinks(link1, link2))
258
+
259
+ #features.append(Mareas_Links_Nodes.objects.all().reverse()[0])
260
+
261
+ print(features)
262
+
263
+ response = {
264
+
265
+ 'features': features,
266
+
267
+ }
268
+
269
+ # レスポンス
270
+
271
+ response_json = json.dumps(response)
272
+
273
+ return HttpResponse(response_json, content_type='application/json')
274
+
275
+ ```
276
+
277
+ ```views_models.py
278
+
279
+ class LinkNode:
280
+
281
+ def connectLinks(self, link1, link2):
282
+
283
+ # 繋げられる方のリンク生成
284
+
285
+ return {
286
+
287
+ 'type': 'Feature',
288
+
289
+ 'properties': {
290
+
291
+ 'link': {
292
+
293
+ 'link_id': link1.link_id,
294
+
295
+ 'start_node_id':link1.start_node_id,
296
+
297
+ 'end_node_id':link1.end_node_id,
298
+
299
+ },
300
+
301
+ },
302
+
303
+ 'geometry': {
304
+
305
+ 'type': 'LineString',
306
+
307
+ 'coordinates': [[link1.start_node.latlng.x,link1.start_node.latlng.y],[link2.end_node.latlng.x,link2.end_node.latlng.y]],
308
+
309
+ },
310
+
311
+ }
312
+
313
+ def connectedLinks(self, link1, link2):
314
+
315
+ # 繋げる方のリンク生成
316
+
317
+ return {
318
+
319
+ 'type': 'Feature',
320
+
321
+ 'properties': {
322
+
323
+ 'link': {
324
+
325
+ 'link_id': link1.link_id,
326
+
327
+ 'start_node_id':link1.start_node_id,
328
+
329
+ 'end_node_id':link1.end_node_id,
330
+
331
+ },
332
+
333
+ },
334
+
335
+ 'geometry': {
336
+
337
+ 'type': 'LineString',
338
+
339
+ 'coordinates': [[link1.end_node.latlng.x,link1.end_node.latlng.y],[link2.start_node.latlng.x,link2.start_node.latlng.y]],
340
+
341
+ },
342
+
343
+ }
344
+
345
+ ```
232
346
 
233
347
  ### 試したこと
234
348
 

4

geojson形式でのレスポンスの呼び出し場所、レスポンス場所を記載しました

2020/09/14 15:06

投稿

okiron9619
okiron9619

スコア5

test CHANGED
File without changes
test CHANGED
@@ -74,7 +74,73 @@
74
74
 
75
75
  ```ここに言語名を入力
76
76
 
77
-
77
+ views.py
78
+
79
+ class GetHalf1LinkListView(View):
80
+
81
+ ##@method_decorator(login_required())
82
+
83
+ def get(self, request, *args, **kwargs):
84
+
85
+ # オブジェクトの取得
86
+
87
+ link_list = Mareas_Links_Nodes.objects.all().order_by('link_id')
88
+
89
+ # レスポンスの生成
90
+
91
+ features = [LinkNodeMapper1(link).as_dict() for link in link_list]
92
+
93
+ print("hello")
94
+
95
+ print(features)
96
+
97
+ response = {
98
+
99
+ 'features': features,
100
+
101
+ }
102
+
103
+ # レスポンス
104
+
105
+ response_json = json.dumps(response)
106
+
107
+ return HttpResponse(response_json, content_type='application/json')
108
+
109
+ class GetHalf2LinkListView(View):
110
+
111
+ ##@method_decorator(login_required())
112
+
113
+ def get(self, request, *args, **kwargs):
114
+
115
+ # オブジェクトの取得
116
+
117
+ link_list = Mareas_Links_Nodes.objects.all().order_by('link_id')
118
+
119
+ # レスポンスの生成
120
+
121
+ features = [LinkNodeMapper2(link).as_dict() for link in link_list]
122
+
123
+ print(features)
124
+
125
+ response = {
126
+
127
+ 'features': features,
128
+
129
+ }
130
+
131
+ # レスポンス
132
+
133
+ response_json = json.dumps(response)
134
+
135
+ return HttpResponse(response_json, content_type='application/json')
136
+
137
+ get_half1_link_list = GetHalf1LinkListView.as_view()
138
+
139
+ get_half2_link_list = GetHalf2LinkListView.as_view()
140
+
141
+
142
+
143
+ view_models.py
78
144
 
79
145
  class LinkNodeMapper1:
80
146
 

3

該当ソースコードの変更

2020/09/12 05:07

投稿

okiron9619
okiron9619

スコア5

test CHANGED
File without changes
test CHANGED
@@ -74,7 +74,23 @@
74
74
 
75
75
  ```ここに言語名を入力
76
76
 
77
+
78
+
79
+ class LinkNodeMapper1:
80
+
81
+ """ノードマッパー"""
82
+
83
+ def __init__(self, obj):
84
+
85
+ self.obj = obj
86
+
87
+
88
+
89
+ def as_dict(self):
90
+
91
+ link = self.obj
92
+
77
- {
93
+ return {
78
94
 
79
95
  'type': 'Feature',
80
96
 
@@ -83,6 +99,48 @@
83
99
  'link': {
84
100
 
85
101
  'link_id': link.link_id,
102
+
103
+ 'start_node_id':link.end_node_id,
104
+
105
+ 'end_node_id':link.start_node_id,
106
+
107
+ },
108
+
109
+ },
110
+
111
+ 'geometry': {
112
+
113
+ 'type': 'LineString',
114
+
115
+ 'coordinates': [[link.start_node.latlng.x,link.start_node.latlng.y],[link.end_node.latlng.x,link.end_node.latlng.y]],
116
+
117
+ },
118
+
119
+ }
120
+
121
+ class LinkNodeMapper2:
122
+
123
+ """ノードマッパー"""
124
+
125
+ def __init__(self, obj):
126
+
127
+ self.obj = obj
128
+
129
+
130
+
131
+ def as_dict(self):
132
+
133
+ link = self.obj
134
+
135
+ return {
136
+
137
+ 'type': 'Feature',
138
+
139
+ 'properties': {
140
+
141
+ 'link': {
142
+
143
+ 'link_id': link2.link_id,
86
144
 
87
145
  'start_node_id':link.end_node_id + 1,
88
146
 
@@ -96,9 +154,11 @@
96
154
 
97
155
  'type': 'LineString',
98
156
 
99
- 'coordinates': [[link.start_node.latlng.x,link.start_node.latlng.y],[link.end_node.latlng.x,link.end_node.latlng.y]],
157
+ 'coordinates': [[link.end_node.latlng.x,link.end_node.latlng.y],[link.start_node.latlng.x,link.start_node.latlng.y]],
100
158
 
159
+ },
160
+
101
- }
161
+ }
102
162
 
103
163
  ```
104
164
 

2

質問タイトルについて変更

2020/09/11 14:39

投稿

okiron9619
okiron9619

スコア5

test CHANGED
@@ -1 +1 @@
1
- Python geojson形式でのpropertiesに直接数値を加算したい
1
+ Python geojson形式でのproperties数値を変更て緯度経度を変更させたい
test CHANGED
File without changes

1

すみません、自分の確認ミスでidへの数値の加算はできていました。対応する緯度経度の反映がされておりませんでした。コードについて更新致しました内容であっていますでしょうか。未熟者ですみません。

2020/09/11 14:09

投稿

okiron9619
okiron9619

スコア5

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- geojson形式のpropertiesのidに数値を加算したいで
3
+ geojson形式のpropertiesのidに数値を加算し、緯度経度を反映る。
4
4
 
5
5
 
6
6
 
@@ -18,7 +18,19 @@
18
18
 
19
19
  ……
20
20
 
21
+
22
+
23
+ node_id,latlng
24
+
25
+ 1 | 0101000020E6100000DE1A27FC71F560409C84FFA2FE814140
26
+
27
+ 2 | 0101000020E610000043C98E5F72F5604012AF29CF00824140
28
+
29
+ 3 | 0101000020E610000036649C476EF560405E2C94D502824140
30
+
31
+ ……
32
+
21
- のようにがあります。
33
+ のように二つのテブルがあります。
22
34
 
23
35
 
24
36
 
@@ -28,7 +40,7 @@
28
40
 
29
41
 
30
42
 
31
- そのため、geojson形式の中で値をプラス1できるようにしたいです。
43
+
32
44
 
33
45
 
34
46
 
@@ -38,7 +50,19 @@
38
50
 
39
51
  ```
40
52
 
41
- エラーメッセージ
53
+ 一つ目の途切れ途切れのリンク
54
+
55
+ {'link': {'link_id': 1, 'start_node_id': 1, 'end_node_id': 2}}, 'geometry': {'type': 'LineString', 'coordinates': [[135.670211581115, 35.0156496957335], [135.670164181115, 35.0155833957335]]}}
56
+
57
+
58
+
59
+ 二つ目の途切れ途切れのリンク
60
+
61
+ {'link': {'link_id': 1, 'start_node_id': 2, 'end_node_id': 3}}, 'geometry': {'type': 'LineString', 'coordinates': [[135.670211581115, 35.0156496957335], [135.670164181115, 35.0155833957335]]}}
62
+
63
+
64
+
65
+ start_node_id,end_node_idに加算できているのですが、対応した緯度経度が反映されていない状況です。
42
66
 
43
67
  ```
44
68
 
@@ -50,7 +74,9 @@
50
74
 
51
75
  ```ここに言語名を入力
52
76
 
77
+ {
78
+
53
- 'type': 'Feature',
79
+ 'type': 'Feature',
54
80
 
55
81
  'properties': {
56
82
 
@@ -58,9 +84,9 @@
58
84
 
59
85
  'link_id': link.link_id,
60
86
 
61
- 'start_node_id':link.end_node_id,
87
+ 'start_node_id':link.end_node_id + 1,
62
88
 
63
- 'end_node_id':link.start_node_id,
89
+ 'end_node_id':link.start_node_id + 1,
64
90
 
65
91
  },
66
92
 
@@ -72,7 +98,7 @@
72
98
 
73
99
  'coordinates': [[link.start_node.latlng.x,link.start_node.latlng.y],[link.end_node.latlng.x,link.end_node.latlng.y]],
74
100
 
75
- },
101
+ }
76
102
 
77
103
  ```
78
104
 
@@ -82,7 +108,7 @@
82
108
 
83
109
 
84
110
 
85
- link.start_node_id + 1 のように直接代入してみましたがエラーは出ず、結果は反映されませんでした。
111
+ link.start_node_id + 1 のように直接代入してみましたがエラーは出ず、緯度経度は反映されませんでした。
86
112
 
87
113
 
88
114