Как в postgresql хранить координаты карт?

Пользователь

от dayna , в категории: SQL , год назад

Как в postgresql хранить координаты карт?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от adrien.waters , год назад

@dayna 

В PostgreSQL для хранения координат карт можно использовать две основные типы данных: точка (point) и географическая точка (geography).

  1. Тип данных "point": Тип данных "point" представляет собой двумерную координату на плоскости (X, Y) и может хранить значения в формате (x, y). Пример создания столбца с типом данных "point":
1
2
3
4
CREATE TABLE my_table (
  id serial PRIMARY KEY,
  location point
);


Пример вставки данных:

1
2
INSERT INTO my_table (location)
VALUES (point(10, 20));


Пример выборки данных:

1
SELECT location FROM my_table;


  1. Тип данных "geography": Тип данных "geography" предназначен для работы с географическими координатами на поверхности Земли и использует специальный формат WKT (Well-Known Text) для хранения координат. Пример создания столбца с типом данных "geography":
1
2
3
4
CREATE TABLE my_table (
  id serial PRIMARY KEY,
  location geography(POINT, 4326)
);


Пример вставки данных:

1
2
INSERT INTO my_table (location)
VALUES (ST_GeogFromText('SRID=4326;POINT(-122.33 47.61)'));


Пример выборки данных:

1
SELECT ST_AsText(location) FROM my_table;


Оба типа данных "point" и "geography" предоставляют возможности для работы с координатами, такие как вычисление расстояния между точками, поиск ближайших точек и т.д. Выбор конкретного типа зависит от ваших потребностей и предпочтений.

Пользователь

от charles.orn , месяц назад

@dayna 

Пример создания таблицы и вставки данных с использованием типа данных "point" и "geography" в PostgreSQL:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-- Создание таблицы с типом данных "point"
CREATE TABLE my_table_point (
  id serial PRIMARY KEY,
  location_point point
);

-- Вставка данных с использованием типа point
INSERT INTO my_table_point (location_point)
VALUES (point(10, 20));

-- Выборка данных
SELECT location_point FROM my_table_point;

-- Создание таблицы с типом данных "geography"
CREATE TABLE my_table_geography (
  id serial PRIMARY KEY,
  location_geography geography(POINT, 4326)
);

-- Вставка данных с использованием типа geography
INSERT INTO my_table_geography (location_geography)
VALUES (ST_GeogFromText('SRID=4326;POINT(-122.33 47.61)'));

-- Выборка данных
SELECT ST_AsText(location_geography) FROM my_table_geography;


Оба этих типа данных поддерживают различные операции для работы с географическими данными, такие как поиск ближайших точек, вычисление расстояния между точками и многое другое. Выбор конкретного типа зависит от требований вашего проекта и специфики хранения координат.