前提・実現したいこと
Djangoを用いて、マップ上にポリゴンを描画しようとしています。
Postgresql上にあるポリゴンデータをpythonでgeojson形式に格納して、Leafletを用いて、描画するという流れです。
発生している問題・エラーメッセージ
Pointであれば、latlng.xやlatlng.yのようにアクセスできたのですが、
Polygonの場合、どのように記述すべきか調べてみたのですが、わかりませんでした。
該当のソースコード
該当のpython部分を載せています
データベースには、meesh_id,latlngのカラムでデータがあります。(latlngには、geometry型,Polygon,srid = 4326)
mesh_listには、データベースにあるPolygonの全オブジェクトが格納されます
python
1views.py 2class MeshView(View): 3 4 def get(self, request, *args, **kwargs): 5 """ 6 メッシュリストの取得 7 """ 8 mesh_list = Mesh.objects.all() 9 10 # レスポンスの生成 11 features = [MeshMapper(mesh).as_dict() for mesh in mesh_list] 12 response = { 13 'type': 'FeatureCollection', 14 'crs': { 15 'type': 'name', 16 'properties': { 17 'name': 'EPSG:4326', 18 }, 19 }, 20 'features': features, 21 } 22 response_json = json.dumps(response) 23 24 # レスポンスの返却 25 return HttpResponse(response_json, content_type='application/json')
python
1views_models.py 2class MeshMapper: 3 """Meshマッパー""" 4 5 def __init__(self, obj): 6 self.obj = obj 7 8 def as_dict(self): 9 mesh = self.obj 10 return { 11 'type': 'Feature', 12 'properties': { 13 'mesh': { 14 'id': mesh.mesh_id, 15 }, 16 }, 17 'geometry': { 18 'type': 'Polygon', 19 'coordinates': #この部分の記述方法を教えていただきたいです 20 }, 21 }
python
1models.py 2from django.contrib.gis.db import models 3class Mesh(models.Model): 4 """メッシュモデル""" 5 mesh_id = models.IntegerField(primary_key=True, default=0, editable=False) 6 latlng = models.PolygonField(srid=4326) 7 8 class Meta: 9 db_table = 'meshes' 10 verbose_name = 'メッシュ' 11 verbose_name_plural = 'メッシュ一覧' 12 13 def __str__(self): 14 return str(self.mesh_id) 15
テーブルの構造 テーブル "public.meshes" 列 | 型 | 照合順序 | Null 値を許容 | デフォルト ---------+------------------------+----------+---------------+------------ mesh_id | integer | | not null | latlng | geometry(Polygon,4326) | | not null | インデックス: "meshes_pkey" PRIMARY KEY, btree (mesh_id) "meshes_latlng_id" gist (latlng) テーブル内のデータの一部 mesh_id | latlng ---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 | 0103000020E6100000010000000500000006AC107262F56040161E38A66B824140C220A48A66F56040161E38A66B824140C220A48A66F56040244BEA435B82414006AC107262F56040244BEA435B82414006AC107262F56040161E38A66B824140 2 | 0103000020E6100000010000000500000006AC107262F56040244BEA435B824140C220A48A66F56040244BEA435B824140C220A48A66F5604032789CE14A82414006AC107262F5604032789CE14A82414006AC107262F56040244BEA435B824140
試したこと
Polygonの場合、コンストラクタの引数を二つ指定しないといけないようなのですが、指定方法まではわかりませんでした。
補足情報(FW/ツールのバージョンなど)
Django3.0.8
python3.8
必要な情報が抜けている可能性があります。お手数ですが、教えていただけましたら幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/24 02:46
2020/10/24 03:05 編集
2020/10/24 03:15
2020/10/24 04:47
2020/10/24 14:46
2020/10/25 01:49
2020/10/25 06:02
2020/10/25 11:04
2020/10/27 10:47
2020/10/27 13:11 編集
2020/10/28 02:02