Как указать пространственную привязку в поле модели GeoDjango? - PullRequest
0 голосов
/ 29 июня 2019

Я использую GeoDjango для обработки поля ГИС в Django. У меня есть следующий точечный объект во внешнем интерфейсе: -

extent: undefined
hasM: false
hasZ: true
latitude: 28.49387824220977
longitude: 77.48524779960519
m: undefined
spatialReference: Object
isGeographic: false
isWGS84: false
isWebMercator: true
isWrappable: true
latestVcsWkid: undefined
latestWkid: 3857
vcsWkid: undefined
wkid: 102100
wkt: null
constructed: true
destroyed: false
initialized: true
__accessor__: b {…}
__proto__: Object
type: "point"
x: 8625618.329042671
y: 3311384.441150026
z: 199.01291322830033
constructed: true
destroyed: false
initialized: true

Когда я сохраняю вышеупомянутую точку в базе данных, она не находится в том же месте, как я указал.

Это, вероятно, из-за разницы в пространственной привязке. Я попытался решить эту проблему, написав поля модели следующим образом: -

models.py

location = models.PointField(geography=True, null=True, blank=True, srid=3857)
plg = models.PolygonField(geography=True, null=True, srid=3857)

views.py

...
Site.objects.create(
            location=Point(float(data['latitude']), float(site_data['longitude'])),
            plg=Polygon(data['roof'])
        )
...

Но, похоже, это не работает, и я получаю следующую ошибку: -

django.db.utils.DataError: Geometry SRID (4326) does not match column SRID (102100)
...