Soy novato en PostgreSQL y PostGIS. Quiero almacenar valores de latitud y longitud en la tabla de base de datos PostgreSQL 9.1.1. Calcularé la distancia entre dos puntos, encontraré puntos más cercanos utilizando los valores de esta ubicación.
¿Qué tipo de datos debo usar para latitud y longitud?
postgresql
types
latitude-longitude
postgis
usuario1008404
fuente
fuente
Respuestas:
Puede usar el tipo de datos
point
: combinaciones(x,y)
que pueden ser su lat / long. Ocupa 16 bytes: 2float8
números internamente.O haga dos columnas de tipo
float
(=float8
odouble precision
). 8 bytes cada uno.O
real
(=float4
) si no se necesita precisión adicional. 4 bytes cada uno.O incluso
numeric
si necesita una precisión absoluta. 2 bytes para cada grupo de 4 dígitos, más gastos generales de 3 a 8 bytes.Lea el excelente manual sobre tipos numéricos y tipos geométricos .
Los tipos de datos
geometry
ygeography
son proporcionados por el módulo adicional PostGIS y ocupan una columna en su tabla. Cada uno ocupa 32 bytes para un punto. Hay algunos gastos generales adicionales como un SRID allí. Estos tipos almacenan (largo / lat), no (lat / long).Comience a leer el manual de PostGIS aquí .
fuente
float
tipo de datos. Hace que el cálculo con las coordenadas sea muy complicado. Debe usar PostGIS y elgeography
tipo de datos para tales cálculos.En PostGIS, para los puntos con latitud y longitud hay un tipo de datos de geografía.
Para agregar una columna:
Para insertar datos:
4326 es la ID de referencia espacial que dice que son datos en grados de longitud y latitud, igual que en el GPS. Más sobre esto: http://epsg.io/4326
El orden es Longitud, Latitud, así que si lo traza como el mapa, es (x, y).
Para encontrar el punto más cercano, primero necesita crear un índice espacial:
y luego solicite, digamos, 5 más cercano a un punto dado:
fuente
Abogo firmemente por PostGis . Es específico para ese tipo de datos y tiene métodos listos para usar para calcular la distancia entre puntos, entre otras operaciones SIG que puede encontrar útiles en el futuro
fuente
Si no necesita toda la funcionalidad que ofrece PostGIS, Postgres (hoy en día) ofrece un módulo de extensión llamado earthdistance . Utiliza el tipo de datos de punto o cubo según sus necesidades de precisión para los cálculos de distancia.
Ahora puede usar la función earth_box para, por ejemplo, consultar puntos dentro de una cierta distancia de una ubicación.
fuente
En PostGIS, se prefiere la Geometría sobre la Geografía (modelo de tierra redonda) porque los cálculos son mucho más simples, por lo tanto, más rápidos. También tiene MUCHAS funciones más disponibles, pero es menos preciso en distancias muy largas.
Importe su CSV a campos lat largos a
DECIMAL(10,6)
columnas. 6 dígitos tiene una precisión de 10 cm, debería ser suficiente para la mayoría de los casos de uso.Luego envíe sus datos importados
¡Verifique que SRID no sea cero!
Valide el orden de su parámetro lat largo usando un visor WKT y
ST_AsEWKT(target_table.geom)
.Luego indexe para obtener el mejor rendimiento
fuente