質問編集履歴
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形式でのレスポンスの呼び出し場所、レスポンス場所を記載しました
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
該当ソースコードの変更
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.
|
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
質問タイトルについて変更
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Python geojson形式でのproperties
|
1
|
+
Python geojson形式でのpropertiesの数値を変更して緯度経度を変更させたい
|
body
CHANGED
File without changes
|
1
すみません、自分の確認ミスでidへの数値の加算はできていました。対応する緯度経度の反映がされておりませんでした。コードについて更新致しました内容であっていますでしょうか。未熟者ですみません。
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
|
|