如果我已经在文件(作为列表)或内存或json格式中存在MultiString cordinates, 如何覆盖保存功能以保存这些点而不是用户在地图上创建对象?或者更准确地说,我如何将这些点加载到模型和数据库?
内存/文件中的坐标
[[36.66678428649903, -1.5474249907643578], [36.670904159545906, -1.542620219636788], [36.66635513305665,-1.5353272427374922],[36.662406921386726, -1.5403894293513378]]
models.py
class LogsUpload(models.Model):
name = models.CharField(max_length=240)
geom = gis_models.MultiLineStringField(blank=True, null=True)
如何使用cordinates并将其保存在geom字段中?
答案 0 :(得分:3)
答案 1 :(得分:2)
使用 gis.db 的PointField
来存储[lat, long]
数据。
from django.contrib.gis.db import models as gis_model
geom = gis_model.PointField(null=True, spatial_index=True, geography=True)
PointField接受GEOSGeometry对象,因此您可以创建数据,如。
import json
from django.contrib.gis.geos import GEOSGeometry
data_coordinates = [[36.66678428649903, -1.5474249907643578], [36.670904159545906, -1.542620219636788], [36.66635513305665,-1.5353272427374922],[36.662406921386726, -1.5403894293513378]]
for coordinate in data_coordinates:
point = {
"type": "Point",
"coordinates": coordinate
}
LogsUpload.objects.create(name="your location name", geom=GEOSGeometry(json.dumps(point)))
了解更多:Storing, querying & serializing location data with Django using PostGIS
<强>更新强>
如果您想将所有这些内容保存在LogsUpload
模型的一个对象中,只需使用django.db.models
的{{3}}或ArrayField