Dans PostGIS, la géométrie est préférée à la géographie (modèle de la terre ronde) car les calculs sont beaucoup plus simples et donc plus rapides. Elle a également beaucoup plus de fonctions disponibles, mais elle est moins précise sur les très longues distances.
Importez vos champs CSV long et lat vers DECIMAL(10,6)
colonnes. 6 chiffres représentent une précision de 10 cm, ce qui devrait être suffisant pour la plupart des cas. Ensuite, convertissez vos données importées dans le SRID correct.
Dans le mauvais sens !
/* try what seems the obvious solution */
DROP TABLE IF EXISTS public.test_geom_bad;
-- Big Ben, London
SELECT ST_SetSRID(ST_MakePoint(-0.116773, 51.510357),4326) AS geom
INTO public.test_geom_bad;
La bonne façon
/* add the necessary CAST to make it work */
DROP TABLE IF EXISTS public.test_geom_correct;
SELECT ST_SetSRID(ST_MakePoint(-0.116773, 51.510357),4326)::geometry(Geometry, 4326) AS geom
INTO public.test_geom_correct;
Vérifiez que le SRID n'est pas nul !
/* now observe the incorrect SRID 0 */
SELECT * FROM public.geometry_columns
WHERE f_table_name IN ('test_geom_bad','test_geom_correct');
Valider l'ordre de votre paramètre de long lat en utilisant un visualiseur WKT et
SELECT ST_AsEWKT(geom) FROM public.test_geom_correct
Puis l'indexer pour une meilleure performance
CREATE INDEX idx_target_table_geom_gist
ON target_table USING gist(geom);