Dans PostGIS, pour les points avec latitude et longitude, il existe un type de données géographie.
Pour ajouter une colonne:
alter table your_table add column geog geography;
Pour insérer des données:
insert into your_table (geog) values ('SRID=4326;POINT(longitude latitude)');
4326 est l'ID de référence spatiale qui indique que ses données sont exprimées en degrés de longitude et de latitude, comme dans le GPS. En savoir plus: http://epsg.io/4326
L'ordre est la longitude, la latitude - donc si vous la tracez comme carte, c'est (x, y).
Pour trouver le point le plus proche, vous devez d'abord créer un index spatial:
create index on your_table using gist (geog);
puis demandez, disons, 5 plus proches d'un point donné:
select *
from your_table
order by geog <-> 'SRID=4326;POINT(lon lat)'
limit 5;