este problema se puede abordar de diferentes maneras, por lo tanto te enseñamos la respuesta más completa para nosotros.
Solución:
Consulte GeoDjango y vea si le ayuda. Si su pila está configurada para ejecutar GeoDjango, puede hacerlo.
Tus modelos se verán así
from django.contrib.gis.db import models
class LocationPoint(models.Model):
point = models.PointField(srid=4326,dim=3)
accuracy = models.FloatField(default=0.0)
objects = models.GeoManager()
Para guardar el punto en la base de datos todo lo que tendrá que hacer es
from django.contrib.gis.geos import Point
point = Point(x=12.734534, y=77.2342, z=0, srid=4326)
location = LocationPoint()
location.point = point
location.save()
GeoDjango le brinda capacidades extendidas para realizar consultas geoespaciales que podrían interesarle en un futuro cercano, como encontrar la distancia entre puntos, encontrar las ubicaciones más cercanas alrededor de un punto, etc.
Aquí está el enlace a GeoDjango
Parece que vas a almacenar una latitud y una longitud. Iría con un DecimalField para esto, y almacenaría cada número por separado.
De la documentación de Django sobre DecimalField:
CampoDecimal.max_digits
El número máximo de dígitos permitidos en el número. Tenga en cuenta que este número debe ser mayor o igual que decimal_places.
CampoDecimal.decimal_places
El número de lugares decimales para almacenar con el número.
que se refiere al Python Decimal
Para hacer una buena elección sobre el tipo de datos precisos y la precisión, debe considerar:
- cuál es el valor mínimo posible (la latitud puede ser desde 0 (hacia abajo) hasta (-) 90 grados) _ _.
- cuál es el valor máximo posible (la longitud puede variar desde 0 (hacia abajo) hasta (-) 180 grados) _ _ _.
- qué es precisión (decimal_places), lo desea. Tenga en cuenta que tiene un impacto en el nivel de zoom en Google Maps.
Por cierto, para una mejor comprensión, es bueno saber cómo se hace el cálculo (código Python):
def deg_to_dms(deg):
d = int(deg)
md = abs(deg - d) * 60
m = int(md)
sd = (md - m) * 60
return [d, m, sd]
def decimal(deg,min,sec):
if deg < 0:
dec= -1.0 * deg + 1.0 * min/60.0 + 1.0 * sec/3600.0
return -1.0 * dec
else:
dec=1.0 * deg + 1.0 * min/60.0 + 1.0 * sec/3600.0;
return dec
Te mostramos comentarios y valoraciones
Puedes amparar nuestra misión poniendo un comentario o dejando una valoración te damos las gracias.