Страница 1 из 1
st_difference для географии
Добавлено: 21 июн 2017, 12:19
alex_069
Добрый день!
Столкнулся с ситуацией, когда необходимо вычесть из одной географии другую. Не нашёл никаких функций для этой цели, кроме st_difference, но она работает только с геометрией.
Есть мысль использовать ST_Intersection, но, в таком случае необходимо пересекать первую геометрию с "инверсией" второй геометрии.
Прошу помощи

Re: st_difference для географии
Добавлено: 21 июн 2017, 12:26
freeExec
Так перегоните в другой тип. География - это геометрия в проекции WGS84.
Re: st_difference для географии
Добавлено: 21 июн 2017, 12:29
alex_069
freeExec писал(а):Так перегоните в другой тип. География - это геометрия в проекции WGS84.
Подскажите, пожалуйста, как это сделать?
Изначально геометрии беру из st_geomfromtext('POLYGON...')
Re: st_difference для географии
Добавлено: 21 июн 2017, 12:41
trir
о чём вообще речь?
Re: st_difference для географии
Добавлено: 21 июн 2017, 12:43
alex_069
trir писал(а):о чём вообще речь?
Имеется полигон на шаре, и имеется еще один полигон на шаре, пересекающийся с первым. Необходимо отрезать от первого область, которая пересекается со вторым, и, что важно, производить вычисления с типом geography, дабы не получить неверную область.
Re: st_difference для географии
Добавлено: 21 июн 2017, 12:52
trir
дабы не получить неверную область
а с чего она должна получится?
ST_Intersection
Geography: For geography this is really a thin wrapper around the geometry implementation. It first determines the best SRID that fits the bounding box of the 2 geography objects (if geography objects are within one half zone UTM but not same UTM will pick one of those) (favoring UTM or Lambert Azimuthal Equal Area (LAEA) north/south pole, and falling back on mercator in worst case scenario) and then intersection in that best fit planar spatial ref and retransforms back to WGS84 geography.
Re: st_difference для географии
Добавлено: 21 июн 2017, 12:56
alex_069
trir писал(а):дабы не получить неверную область
а с чего она должна получится?
ST_Intersection
Geography: For geography this is really a thin wrapper around the geometry implementation. It first determines the best SRID that fits the bounding box of the 2 geography objects (if geography objects are within one half zone UTM but not same UTM will pick one of those) (favoring UTM or Lambert Azimuthal Equal Area (LAEA) north/south pole, and falling back on mercator in worst case scenario) and then intersection in that best fit planar spatial ref and retransforms back to WGS84 geography.
с ST_Intersection проблем нет, но она возвращает полигон пересечения.
Мне нужно из географии А вычесть географию Б
Re: st_difference для географии
Добавлено: 21 июн 2017, 12:59
trir
Вы поняли, что там написано?
ST_Intersection для Geography - это обёртка над ST_Intersection для geometry. Geography проецируется в UTM (или в Lambert Azimuthal Equal Area для полюсов)
Re: st_difference для географии
Добавлено: 21 июн 2017, 13:03
alex_069
trir писал(а):Вы поняли, что там написано?
ST_Intersection для Geography - это обёртка над ST_Intersection для geometry. Geography проецируется в UTM (или в Lambert Azimuthal Equal Area для полюсов)
теперь да
но тогда как подать данные в st_difference? -)
Re: st_difference для географии
Добавлено: 21 июн 2017, 13:06
trir
как geometry
перепроецировав в UTM
ST_Transform
Re: st_difference для географии
Добавлено: 21 июн 2017, 13:08
freeExec