質問するログイン新規登録

質問編集履歴

5

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

2020/09/14 15:06

投稿

okiron9619
okiron9619

スコア5

title CHANGED
File without changes
body CHANGED
@@ -34,7 +34,7 @@
34
34
  ```
35
35
 
36
36
  ### 該当のソースコード
37
-
37
+ 修正前(投稿時)のソースコード
38
38
  ```ここに言語名を入力
39
39
  views.py
40
40
  class GetHalf1LinkListView(View):
@@ -113,7 +113,64 @@
113
113
  },
114
114
  }
115
115
  ```
116
+ toast_uz様に回答、説明を提示して頂いた後、修正したソースコード
116
117
 
118
+ ```views.py
119
+ class LinkList(View):
120
+ ##@method_decorator(login_required())
121
+ def get(self, request, *args, **kwargs):
122
+ # オブジェクトの取得
123
+ link_list = Mareas_Links_Nodes.objects.all().order_by('link_id')
124
+ # レスポンスの生成
125
+ # link_listから要素を2つずつ取り出す
126
+ features = []
127
+ for link1, link2 in zip(link_list, link_list[1:]):
128
+ features.append(LinkNode().connectLinks(link1, link1))
129
+ features.append(LinkNode().connectedLinks(link1, link2))
130
+ #features.append(Mareas_Links_Nodes.objects.all().reverse()[0])
131
+ print(features)
132
+ response = {
133
+ 'features': features,
134
+ }
135
+ # レスポンス
136
+ response_json = json.dumps(response)
137
+ return HttpResponse(response_json, content_type='application/json')
138
+ ```
139
+ ```views_models.py
140
+ class LinkNode:
141
+ def connectLinks(self, link1, link2):
142
+ # 繋げられる方のリンク生成
143
+ return {
144
+ 'type': 'Feature',
145
+ 'properties': {
146
+ 'link': {
147
+ 'link_id': link1.link_id,
148
+ 'start_node_id':link1.start_node_id,
149
+ 'end_node_id':link1.end_node_id,
150
+ },
151
+ },
152
+ 'geometry': {
153
+ 'type': 'LineString',
154
+ 'coordinates': [[link1.start_node.latlng.x,link1.start_node.latlng.y],[link2.end_node.latlng.x,link2.end_node.latlng.y]],
155
+ },
156
+ }
157
+ def connectedLinks(self, link1, link2):
158
+ # 繋げる方のリンク生成
159
+ return {
160
+ 'type': 'Feature',
161
+ 'properties': {
162
+ 'link': {
163
+ 'link_id': link1.link_id,
164
+ 'start_node_id':link1.start_node_id,
165
+ 'end_node_id':link1.end_node_id,
166
+ },
167
+ },
168
+ 'geometry': {
169
+ 'type': 'LineString',
170
+ 'coordinates': [[link1.end_node.latlng.x,link1.end_node.latlng.y],[link2.start_node.latlng.x,link2.start_node.latlng.y]],
171
+ },
172
+ }
173
+ ```
117
174
  ### 試したこと
118
175
 
119
176
  link.start_node_id + 1 のように直接代入してみましたがエラーは出ず、緯度経度は反映されませんでした。

4

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

2020/09/14 15:06

投稿

okiron9619
okiron9619

スコア5

title CHANGED
File without changes
body CHANGED
@@ -36,7 +36,40 @@
36
36
  ### 該当のソースコード
37
37
 
38
38
  ```ここに言語名を入力
39
+ views.py
40
+ class GetHalf1LinkListView(View):
41
+ ##@method_decorator(login_required())
42
+ def get(self, request, *args, **kwargs):
43
+ # オブジェクトの取得
44
+ link_list = Mareas_Links_Nodes.objects.all().order_by('link_id')
45
+ # レスポンスの生成
46
+ features = [LinkNodeMapper1(link).as_dict() for link in link_list]
47
+ print("hello")
48
+ print(features)
49
+ response = {
50
+ 'features': features,
51
+ }
52
+ # レスポンス
53
+ response_json = json.dumps(response)
54
+ return HttpResponse(response_json, content_type='application/json')
55
+ class GetHalf2LinkListView(View):
56
+ ##@method_decorator(login_required())
57
+ def get(self, request, *args, **kwargs):
58
+ # オブジェクトの取得
59
+ link_list = Mareas_Links_Nodes.objects.all().order_by('link_id')
60
+ # レスポンスの生成
61
+ features = [LinkNodeMapper2(link).as_dict() for link in link_list]
62
+ print(features)
63
+ response = {
64
+ 'features': features,
65
+ }
66
+ # レスポンス
67
+ response_json = json.dumps(response)
68
+ return HttpResponse(response_json, content_type='application/json')
69
+ get_half1_link_list = GetHalf1LinkListView.as_view()
70
+ get_half2_link_list = GetHalf2LinkListView.as_view()
39
71
 
72
+ view_models.py
40
73
  class LinkNodeMapper1:
41
74
  """ノードマッパー"""
42
75
  def __init__(self, obj):

3

該当ソースコードの変更

2020/09/12 05:07

投稿

okiron9619
okiron9619

スコア5

title CHANGED
File without changes
body CHANGED
@@ -36,19 +36,49 @@
36
36
  ### 該当のソースコード
37
37
 
38
38
  ```ここに言語名を入力
39
+
40
+ class LinkNodeMapper1:
41
+ """ノードマッパー"""
42
+ def __init__(self, obj):
43
+ self.obj = obj
44
+
45
+ def as_dict(self):
46
+ link = self.obj
39
- {
47
+ return {
40
48
  'type': 'Feature',
41
49
  'properties': {
42
50
  'link': {
43
51
  'link_id': link.link_id,
52
+ 'start_node_id':link.end_node_id,
53
+ 'end_node_id':link.start_node_id,
54
+ },
55
+ },
56
+ 'geometry': {
57
+ 'type': 'LineString',
58
+ 'coordinates': [[link.start_node.latlng.x,link.start_node.latlng.y],[link.end_node.latlng.x,link.end_node.latlng.y]],
59
+ },
60
+ }
61
+ class LinkNodeMapper2:
62
+ """ノードマッパー"""
63
+ def __init__(self, obj):
64
+ self.obj = obj
65
+
66
+ def as_dict(self):
67
+ link = self.obj
68
+ return {
69
+ 'type': 'Feature',
70
+ 'properties': {
71
+ 'link': {
72
+ 'link_id': link2.link_id,
44
73
  'start_node_id':link.end_node_id + 1,
45
74
  'end_node_id':link.start_node_id + 1,
46
75
  },
47
76
  },
48
77
  'geometry': {
49
78
  'type': 'LineString',
50
- 'coordinates': [[link.start_node.latlng.x,link.start_node.latlng.y],[link.end_node.latlng.x,link.end_node.latlng.y]],
79
+ 'coordinates': [[link.end_node.latlng.x,link.end_node.latlng.y],[link.start_node.latlng.x,link.start_node.latlng.y]],
80
+ },
51
- }
81
+ }
52
82
  ```
53
83
 
54
84
  ### 試したこと

2

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

2020/09/11 14:39

投稿

okiron9619
okiron9619

スコア5

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

1

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

2020/09/11 14:09

投稿

okiron9619
okiron9619

スコア5

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,5 @@
1
1
  ### 前提・実現したいこと
2
- geojson形式のpropertiesのidに数値を加算したいで
2
+ geojson形式のpropertiesのidに数値を加算し、緯度経度を反映る。
3
3
 
4
4
  マップ上にリンクを表示しようとしています。
5
5
  データベースには
@@ -8,39 +8,52 @@
8
8
  2, 3, 4
9
9
  3, 5, 6
10
10
  ……
11
- のようにデータがあります。
12
11
 
12
+ node_id,latlng
13
+ 1 | 0101000020E6100000DE1A27FC71F560409C84FFA2FE814140
14
+ 2 | 0101000020E610000043C98E5F72F5604012AF29CF00824140
15
+ 3 | 0101000020E610000036649C476EF560405E2C94D502824140
16
+ ……
17
+ のように二つのテーブルがあります。
18
+
13
19
  データベースの情報のみでは、全てのリンクがつながらず途切れ途切れになってしまいます。
14
20
  そのため、途切れ途切れのリンクにともう一つリンクを用意(ソースコード部分)し、リンクをつなげようと考えています。
15
21
 
16
- そのため、geojson形式の中で値をプラス1できるようにしたいです。
17
22
 
23
+
18
24
  ### 発生している問題・エラーメッセージ
19
25
 
20
26
  ```
21
- エラーメッセージ
27
+ 一つ目の途切れ途切れのリンク
28
+ {'link': {'link_id': 1, 'start_node_id': 1, 'end_node_id': 2}}, 'geometry': {'type': 'LineString', 'coordinates': [[135.670211581115, 35.0156496957335], [135.670164181115, 35.0155833957335]]}}
29
+
30
+ 二つ目の途切れ途切れのリンク
31
+ {'link': {'link_id': 1, 'start_node_id': 2, 'end_node_id': 3}}, 'geometry': {'type': 'LineString', 'coordinates': [[135.670211581115, 35.0156496957335], [135.670164181115, 35.0155833957335]]}}
32
+
33
+ start_node_id,end_node_idに加算できているのですが、対応した緯度経度が反映されていない状況です。
22
34
  ```
23
35
 
24
36
  ### 該当のソースコード
25
37
 
26
38
  ```ここに言語名を入力
39
+ {
27
- 'type': 'Feature',
40
+ 'type': 'Feature',
28
41
  'properties': {
29
42
  'link': {
30
43
  'link_id': link.link_id,
31
- 'start_node_id':link.end_node_id,
44
+ 'start_node_id':link.end_node_id + 1,
32
- 'end_node_id':link.start_node_id,
45
+ 'end_node_id':link.start_node_id + 1,
33
46
  },
34
47
  },
35
48
  'geometry': {
36
49
  'type': 'LineString',
37
50
  'coordinates': [[link.start_node.latlng.x,link.start_node.latlng.y],[link.end_node.latlng.x,link.end_node.latlng.y]],
38
- },
51
+ }
39
52
  ```
40
53
 
41
54
  ### 試したこと
42
55
 
43
- link.start_node_id + 1 のように直接代入してみましたがエラーは出ず、結果は反映されませんでした。
56
+ link.start_node_id + 1 のように直接代入してみましたがエラーは出ず、緯度経度は反映されませんでした。
44
57
 
45
58
  リサーチ不足かもしれないですが、自分の力では参考サイトを見つけることができませんでした。
46
59