django.db.utils.ProgrammingError:类型“光栅”不存在
Posted
技术标签:
【中文标题】django.db.utils.ProgrammingError:类型“光栅”不存在【英文标题】:django.db.utils.ProgrammingError: type "raster" does not exist 【发布时间】:2020-05-14 15:43:46 【问题描述】:我的模型:我在这里创建了 3 个模型,当我迁移时出现错误。
from django.contrib.gis.db import models
from django.contrib.gis.db.models.fields import RasterField
class WorldBorder(models.Model):
# Regular Django fields corresponding to the attributes in the
# world borders shapefile.
name = models.CharField(max_length=50)
area = models.IntegerField()
pop2005 = models.IntegerField('Population 2005')
fips = models.CharField('FIPS Code', max_length=2)
iso2 = models.CharField('2 Digit ISO', max_length=2)
iso3 = models.CharField('3 Digit ISO', max_length=3)
un = models.IntegerField('United Nations Code')
region = models.IntegerField('Region Code')
subregion = models.IntegerField('Sub-Region Code')
lon = models.FloatField()
lat = models.FloatField()
# GeoDjango-specific: a geometry field (MultiPolygonField)
mpoly = models.MultiPolygonField()
# Returns the string representation of the model.
def __str__(self):
return self.name
class Zipcode(models.Model):
code = models.CharField(max_length=5)
poly= models.PolygonField()
class Elevation(models.Model):
name = models.CharField(max_length=100,blank=True, null=True)
rast = RasterField(srid=2346)
我的设置..我使用的数据库是 Postgres,这样我就可以将 postgis 用于 geodjango
DATABASES =
"default":
"ENGINE": "django.contrib.gis.db.backends.postgis",
"NAME": "django_course",
"USER": "postgres",
"PASSWORD": "**************",
"HOST": "localhost",
"PORT": "5432",
【问题讨论】:
您的数据库是否安装了PostGIS
?
@JimJones 它确实安装了 postgis 是因为 postgres 版本的问题吗??
你能把你从这个函数中得到的东西贴在 postgres 中吗? SELECT PostGIS_Version()
@JimJones 我得到了这个 3.0 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
@JimJones 这完全有效。你能解释一下怎么做吗?
【参考方案1】:
您缺少PostGIS Raster
扩展名。创建扩展并重试:
CREATE EXTENSION postgis_raster;
引用自documentation
:
请注意,3.0 的一个主要变化是光栅功能具有 被分解为一个单独的扩展。
【讨论】:
【参考方案2】:在你的数据库设置中使用它
DATABASES =
'default':
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'database_name',
'HOST': 'localhost',
'USER': 'user_name',
'PASSWORD': 'password',
'PORT': '5432',
【讨论】:
我们鼓励您描述您的答案如何解决问题。【参考方案3】:将这两行添加到您的迁移文件elevation_zipcode.py:
from django.contrib.postgres.operations import CreateExtension
operations = [
CreateExtension('postgis_raster'),
【讨论】:
以上是关于django.db.utils.ProgrammingError:类型“光栅”不存在的主要内容,如果未能解决你的问题,请参考以下文章