Как создать и запросить таблицу, содержащую широту / долготу, с помощью PostGIS?

Как мне создать таблицу с географической точкой (широта / долгота) с помощью PostGIS? Тогда также, какой формат будет для вставки в эту таблицу (с использованием SQL / PostgreSQL)?

Было бы так для создания таблицы:

CREATE TABLE x (geog geography(point, 4326))

Если да, то что такое point и когда вы вместо этого использовали бы ST_Point(X,Y)

Должен ли этот столбец иметь индекс?

Примечание. На многие вопросы, на которые ранее были даны ответы, подробно описано, как конвертировать. Но я хочу создать с нуля пустую таблицу, которая поддерживает сохранение широты и долготы.


person Connorelsea    schedule 05.01.2017    source источник


Ответы (1)


Да, синтаксис для создания таблицы с географией так же прост, как CREATE TABLE x (geog geography(POINT,4326) );

В этой команде POINT - это тип формы, которую эта таблица будет хранить. Другие возможности:

  • ЛАЙНЕСТРИНГ
  • ПОЛИГОН
  • MULTIPOINT
  • МУЛЬТИЛИНЕСТРИНГ
  • МУЛЬТИПОЛИГОН
  • ГЕОМЕТРИЧЕСКАЯ КОЛЛЕКЦИЯ

Причина, по которой сохранение географии в таблице в некоторых случаях имеет смысл, заключается в том, что она дает вам возможность запускать несколько функций, которые дадут вам результаты, как если бы вы выполняли вычисления на Сферической Земле. Так, например, я мог бы сохранить две точки как географические (зная только широту и долготу каждой из них), и я мог бы легко найти расстояние между ними в метрах.

ST_Point(X,Y) - это просто функция, которая принимает два числа, а затем создает точку, в которой X является первым числом, а Y - вторым числом. Это не обязательно должна быть пара широта-долгота. Фактически, эта точка не имеет представления о том, в какой системе координат она находится.

После создания таблицы вставить в нее записи так же просто, как: INSERT INTO X (geog) VALUES (ST_GeographyFromText('POINT(2.5559 49.0083)'));

Здесь Вы создаете Географическую точку для Парижа с широтой 49,0083N и долготой 2,5559E.

person Devdatta Tengshe    schedule 05.01.2017