Skip to content

Instantly share code, notes, and snippets.

@math77
Created May 17, 2019 22:52
Show Gist options
  • Save math77/ab9a7d722b62d045dd6c104f2a01de2c to your computer and use it in GitHub Desktop.
Save math77/ab9a7d722b62d045dd6c104f2a01de2c to your computer and use it in GitHub Desktop.
location_user = Point(-6.291, -36.020, srid=4326)
Locais.objects.annotate(distance=Distance("location", location_user)).order_by('distance')
@rodrigondec
Copy link

rodrigondec commented May 18, 2019

Exemplo de uma query dessas.

Considerando que CAMPO_GEOPOINT é um field do tipo Point do geodjango

from django.contrib.gis.measure import D

Locais.objects.filter(CAMPO_GEOPOINT__distance_lt=(location_user, D(m=500)))```

@math77
Copy link
Author

math77 commented May 18, 2019

Essa query está retornando o seguinte erro:
Only numeric values of degree units are allowed on geodetic distance queries.
O que pode ser?

@rodrigondec
Copy link

rodrigondec commented May 18, 2019

https://stackoverflow.com/a/53074722

Note that you can only provide Distance objects if the targeted geometries are in a projected system. For geographic geometries, you > should use units of the geometry field (e.g. degrees for WGS84) .

https://gis.stackexchange.com/a/94930
image

Achei esses comentário ai. Acredito que seja com relação ao tipo de point salvo no seu model (o srid no caso). Está sendo o mesmo srid do seu model esse criado ai?

Quando eu utilizei, não tive esse problema. Porém não achei meu código disso.

@math77
Copy link
Author

math77 commented May 18, 2019

O meu modelo está dessa forma:
AAAAmodelo

Será que pode ser algo do MySQL?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment