模型构建
几何字段类型
包括PointField、LineStringField、PolygonField、MultiPointField、MultiLineStringField、MultiPolygonField、MultiPolygonField、GeometryCollectionField。只需在model中添加该字段即可,例如模型为点,则添加point = PointField() 。
几何字段设置
srid:可以设置坐标系统的类型,设置坐标号即可。
spatial_index:是否设置空间索引,设置则为True。
dim:设置维数,默认为2,二维。
geography:创建类型为geography的数据库列(地理坐标,未投影),不是几何类型。
GeoManager
为了进行地理查询,每个地理模型需要一个GeoManager模型管理器,主要用来构造SQL语句。
简单例子
from django.contrib.gis.db import models
class Zipcode(models.Model):
code = models.CharField(max_length=5)
poly = models.PolygonField()
objects = models.GeoManager()
from django.contrib.gis.db import models
class Address(models.Model):
num = models.IntegerField()
street = models.CharField(max_length=100)
city = models.CharField(max_length=100)
state = models.CharField(max_length=2)
zipcode = models.ForeignKey(Zipcode)
objects = models.GeoManager()
qs = Address.objects.filter(zipcode__poly__contains='POINT(-104.590948 38.319914)')