zed писал(а):Если вы там увидите, что результат содержит более одного полигона, то у вас получился мультиполигон.
Получиться-то он получился, а вот при сохранении в базу он в любом случае будет сохранён как мультиполигон, или есть вариант сохранения каждого полученного полигона в отдельности? Особенно актуально это при операциях, отличных от объединения.
zed писал(а):Если же стоит задача объединить отдельные полигоны и встаёт вопрос, какую операцию лучше использовать Group или OR, то используйте Group. При логических операциях производятся преобразования координат вершин полигонов с округлением из-за чего вершины нового полигона (внутри мультиполигона), будут незначительно отличаться от исходных. А вот при Group никаких округлений и преобразований не производится и там будет полная идентичность. Соответственно, и работает Group значительно быстрее.
То есть, после операции Group
всегда сохраняется
мультиполигон?
Ранее было так:
zed писал(а):Если полигоны лежат друг на друге, то после ИЛИ получится 1 полигон, а после Group так и останутся 2 перекрывающихся полигона. А если они никак не пересекаются, то результат будет одинаковый.
Рассмотрим, что будет сохранено в базе меток в каждом из случаев, исходя из описания. Не совсем понятны слова "так и останутся", но попробуем.
1. Полигоны лежат друг на друге, применяем операцию ИЛИ. Сохраняется ОДИН НЕ мультиполигон, то есть Single.
2. Полигоны лежат друг на друге, применяем операцию Group. Сохраняется ОДИН мультиполигон, состоящий из ДВУХ обычных полигонов.
3. Полигоны не пересекаются, применяем операцию ИЛИ. Сохраняется ОДИН мультиполигон?
4. Полигоны не пересекаются, применяем операцию Group. Сохраняется ОДИН мультиполигон?
Подозрения вызывают случаи 1 и 3. Как программа определяет, когда сохранять
мультиполигон, а когда нет? Такая же история и при других логических операциях, в результате которых может получиться более одного полигона. Кто и по каким признакам определяет, в каком качестве их сохранять?