В PostGIS геометрия предпочтительнее географии (круглая модель земли), потому что вычисления намного проще, а значит, быстрее. Он также имеет МНОЖЕСТВО доступных функций, но менее точен на очень больших расстояниях.
Импортируйте поля длинного и широтного формата CSV в DECIMAL(10,6)
столбец. 6 цифр - это точность 10 см, этого должно хватить для большинства случаев использования. Затем передайте импортированные данные в правильный SRID.
Неправильный путь!
/* 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;
ПРАВИЛЬНЫЙ способ
/* 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;
Убедитесь, что SRID не равен нулю!
/* now observe the incorrect SRID 0 */
SELECT * FROM public.geometry_columns
WHERE f_table_name IN ('test_geom_bad','test_geom_correct');
Проверьте порядок вашего параметра долгой широты с помощью средства просмотра WKT и
SELECT ST_AsEWKT(geom) FROM public.test_geom_correct
Затем проиндексируйте его для лучшей производительности
CREATE INDEX idx_target_table_geom_gist
ON target_table USING gist(geom);
person
golfalot
schedule
08.03.2020