如何将 GDAL 对象存储在 geodjango 几何对象中?
How to store GDAL objects in a geodjango Geometry object?
我的数据库中有一个 GeoDjango GeometryField:
class Place(models.Model):
name = CharField()
geometry = models.GeometryField()
我正在尝试将 shapefile 的某些部分加载到我的数据库中。
from django.contrib.gis.gdal import DataSource
datasource = DataSource("file.shp")
layer = datasource[0]
for each in layer:
name = each.get("NAME") # To obtain the name
... (some more logic to add properties and validate which objects should be imported)
Place.objects.create(
name = name,
geometry = each.geom
)
但是,这个returns这个错误:
Cannot set Place SpatialProxy (GEOMETRY) with value of type: <class 'django.contrib.gis.gdal.geometries.MultiPolygon'>
我不确定我必须如何转换这个 gdal.geometries.MultiPolygon
对象才能将其存储在数据库中。我试过使用:
from django.contrib.gis.gdal import OGRGeometry
geometry = OGRGeometry(each.geom)
但这行不通。
我查看了 GeoDjango LayerMapping utility 的源代码,它似乎将 GDAL 几何图形转换为 WKT。
您应该可以像这样设置值:
Place.objects.create(
name = name,
geometry = each.geom.wkt # note the .wkt at the end
)
我的数据库中有一个 GeoDjango GeometryField:
class Place(models.Model):
name = CharField()
geometry = models.GeometryField()
我正在尝试将 shapefile 的某些部分加载到我的数据库中。
from django.contrib.gis.gdal import DataSource
datasource = DataSource("file.shp")
layer = datasource[0]
for each in layer:
name = each.get("NAME") # To obtain the name
... (some more logic to add properties and validate which objects should be imported)
Place.objects.create(
name = name,
geometry = each.geom
)
但是,这个returns这个错误:
Cannot set Place SpatialProxy (GEOMETRY) with value of type: <class 'django.contrib.gis.gdal.geometries.MultiPolygon'>
我不确定我必须如何转换这个 gdal.geometries.MultiPolygon
对象才能将其存储在数据库中。我试过使用:
from django.contrib.gis.gdal import OGRGeometry
geometry = OGRGeometry(each.geom)
但这行不通。
我查看了 GeoDjango LayerMapping utility 的源代码,它似乎将 GDAL 几何图形转换为 WKT。
您应该可以像这样设置值:
Place.objects.create(
name = name,
geometry = each.geom.wkt # note the .wkt at the end
)