В PostGIS геометрия предпочтительнее, чем география (модель с круглой землей), потому что вычисления намного проще, а значит, быстрее. Он также имеет МНОГИЕ более доступные функции, но менее точен на очень больших расстояниях.
Импортируйте CSV в длинные поля lat в DECIMAL(10,6)
столбцы. 6 цифр с точностью до 10 см, должно быть достаточно для большинства случаев использования.
Затем приведите ваши импортированные данные
SELECT
--ST_SetSRID(ST_Point(long, lat),4326) geom -- the wrong way because SRID not set in geometry_columns table
ST_Point(long, lat)::geometry(Geometry, 4326) geom
INTO target_table
FROM source_table;
Убедитесь, что SRID не равен нулю!
SELECT * FROM public.geometry_columns WHERE f_table_name = 'target_table';
Проверьте порядок вашего параметра long lat с помощью средства просмотра WKT и ST_AsEWKT(target_table.geom)
.
Затем индексируйте его для лучшей производительности
CREATE INDEX idx_target_table_geom_gist
ON target_table USING gist(geom);