Добавление файла KML в поле GeoDjango - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь добавить файл KML в поле в GeoDjango. Ссылка на файл KML .Я пытался следовать ответу на этот вопрос , но это в основном неверно.

Моя модель:

class School(models.Model):
    boundaries = models.PolygonField(null=True)

i = School.objects.get(...)
ds = DataSource('school.aspx')
layer = ds[0]   #The file only has 1 layer
geom = layer.get_geoms()
boundary = GEOSGeometry(geom[0])
i.boundaries = boundary
i.save()

Приведенный выше код дает мнеследующая ошибка:

TypeError: Improper geometry input type: <class 'django.contrib.gis.gdal.geometries.Polygon'>


Когда я пытаюсь добавить поле напрямую, например:

i = School.objects.get(...)
ds = DataSource('school.aspx')
layer = ds[0]
geom = layer.get_geoms()
i.boundaries = geom[0]
i.save()

Я получаю эту ошибку: TypeError: Cannot set School SpatialProxy (POLYGON) with value of type: <class 'django.contrib.gis.gdal.geometries.Polygon'>

Как сохранить форму многоугольника из файла KML в моей базе данных?Я в тупике.

1 Ответ

0 голосов
/ 02 июня 2018

Попробуйте использовать свойство .geos gdal geoms:

ds = DataSource('school.kml')
o = School(boundaries=ds[0][0].geom.geos)
o.save()
...