Как используя PostGIS вычислить пересечение 3-х окружностей?

Ответить
aquam
Новоприбывший
Сообщения: 12
Зарегистрирован: 12 мар 2009, 14:13
Репутация: 0

Как используя PostGIS вычислить пересечение 3-х окружностей?

Сообщение aquam » 17 мар 2011, 18:14

Начальные данные: есть три окружности заданные точкой центра (широта и долгота) и радиусом в километрах.
Вопрос №1. Как вычислить полигоны окружностей и занести их в PostGIS?
Пока что нашёл функцию make_ellipse(cx float8, cy float8, a float8, b float8, slices float8),
но не знаю как вычислить a и b (у меня в километрах).

Вопрос №2. Как на основе сделанных полигонов окружностей вычислить полигон пересечения?

Спасибо!

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Как используя PostGIS вычислить пересечение 3-х окружнос

Сообщение KolesovDmitry » 17 мар 2011, 19:20

aquam писал(а):Начальные данные: есть три окружности заданные точкой центра (широта и долгота) и радиусом в километрах.
Вопрос №1. Как вычислить полигоны окружностей и занести их в PostGIS?
Пока что нашёл функцию make_ellipse(cx float8, cy float8, a float8, b float8, slices float8),
но не знаю как вычислить a и b (у меня в километрах).
Если у вас данные в широта/долгота, а радиус в километрах, то можно сначала перепроецировать ваши данные в прямоугольную систему координат (или как это там называется?) при помощи ST_Transform, а потом считать в километрах.
aquam писал(а): Вопрос №2. Как на основе сделанных полигонов окружностей вычислить полигон пересечения?
Попробуйте ST_Intersection.

aquam
Новоприбывший
Сообщения: 12
Зарегистрирован: 12 мар 2009, 14:13
Репутация: 0

Re: Как используя PostGIS вычислить пересечение 3-х окружнос

Сообщение aquam » 17 мар 2011, 20:35

Спасибо! Буду пробовать.

aquam
Новоприбывший
Сообщения: 12
Зарегистрирован: 12 мар 2009, 14:13
Репутация: 0

Re: Как используя PostGIS вычислить пересечение 3-х окружнос

Сообщение aquam » 17 мар 2011, 22:40

Можно поподробней c первым вопросом где перепроецирование в прямоугольную систему координат?
Получается мне нужно использовать что-то вида make_ellipse(37, 53, ST_Transform(радиус), ST_Transform(радиус), 18) для получения полигона-окружности с центром в точке (37, 53)?

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Как используя PostGIS вычислить пересечение 3-х окружнос

Сообщение KolesovDmitry » 18 мар 2011, 07:58

aquam писал(а):Можно поподробней c первым вопросом где перепроецирование в прямоугольную систему координат?
Получается мне нужно использовать что-то вида make_ellipse(37, 53, ST_Transform(радиус), ST_Transform(радиус), 18) для получения полигона-окружности с центром в точке (37, 53)?
Не, не так. Я бы попробовал что-то в этом роде:
* сначала создаете точку в системе координат широта/долгота
* потом перепроецируете эту точку при помощи ST_Transform в нужную систему координат
* в новой системе координат делаете хоть make_ellips, хоть буферные зоны вокруг нее.

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Как используя PostGIS вычислить пересечение 3-х окружнос

Сообщение Denis Rykov » 18 мар 2011, 12:05

Пример:

Код: Выделить всё

SELECT AsText(ST_Buffer(ST_Transform(ST_SetSRID(ST_MakePoint(37,53),4326),3395),1000000));
Spatial is now, more than ever, just another column- The Geometry Column.

aquam
Новоприбывший
Сообщения: 12
Зарегистрирован: 12 мар 2009, 14:13
Репутация: 0

Re: Как используя PostGIS вычислить пересечение 3-х окружнос

Сообщение aquam » 20 мар 2011, 23:28

Спасибо!
Отличные советы!

Ответить

Вернуться в «PostGIS/PostgreSQL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя