Я использую 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)