#sql-server #tsql #spatial
#sql-сервер #tsql #пространственный
Вопрос:
У меня много полилиний (polyline) и многоугольник. Полилинии могут пересекаться с полигоном различными способами:
- нет пересечения (полилиния вне полигона)
- нет вставки (полилиния в полигоне)
- одно пересечение (полилиния начинается / заканчивается в polygon)
- множественные пересечения (полилиния может, например, начинаться в polygon, выходить из него, а затем возвращаться обратно внутрь …)
Мне нужно вычислить общую длину всех полилиний внутри полигона. Я использую MSSQL 2016 Экспресс-версии. Можно ли это сделать только с помощью TSQL?
Ответ №1:
Ответ да — TSQL является полным по Тьюрингу, что означает, что вы можете реализовать с его помощью любой алгоритм, который вы хотите. Он более удобен в использовании, чем машина Тьюринга, но (возможно) менее удобен, чем, например, C # с полноценной средой разработки.
Комментарии:
1. Я думаю, ваш ответ совершенно правильный, но никоим образом не помогает. Очевидно, мне следовало спросить: «Как это можно сделать?»
2. Это было немного косноязычно 🙂 Может быть, вы могли бы сначала попытаться реализовать логику в SQL, а затем, если вы столкнетесь с какой-то конкретной проблемой, касающейся использования SQL для выражения такой логики, тогда попросите помощи по конкретной проблеме.
3. 🙂 Я думаю, что 1. -3. не проблема, но у меня возникла «логическая» проблема с ситуацией 4. Если я проверю наличие взаимосвязей, и их будет, скажем, четыре, я не знаю, как (системно) определить, какие части полилинии находятся внутри полигона …?
4. Вероятно, лучше перефразировать вопрос как чисто геометрическую задачу, потому что это пока не имеет никакого отношения к SQL?
5. Вернет ли функция STUnion область действия полилинии внутри полигона?