В моем SQL Server (2008 R2) на Azure, есть таблица, содержащая множество географических Points
(широта/долгота):Создание географии многоугольник точек в T-SQL
CREATE TABLE MyPoints
(
Region uniqueidentifier NOT NULL,
Number int NOT NULL,
Position geography NOT NULL,
CONSTRAINT PK_MyPoints PRIMARY KEY(Region, Number)
)
Теперь я хочу, чтобы создать a Polygon
, чтобы определить, какие из моих магазинов расположены в области, определяемой точками.
Есть ли собственный и быстрый способ построения многоугольника из заданных точек в T-SQL? The solutions I found используют методы STGeomFromText
/STGeomFomWKB
для создания многоугольника, который кажется мне очень громоздким и медленным.
Что-то вроде:
SET @POLY = geometry::STPolyFromPoints(SELECT Position FROM MyPoints)
Мы используем функцию, которая объединяет точки в их двоичном представлении и вызывать 'STGeomFromWKB' в этой строке. Это достаточно быстро для нашей цели, но это все еще некрасиво. – Gene
Еще одно предложение - написать свою собственную пользовательскую функцию .NET CLR, которая принимает параметр таблицы (столбец фактических точек геоданных) и возвращает геометрию. Я еще не работал с ним, но SqlGeometryBuilder выглядит многообещающим: http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.types.sqlgeometrybuilder.aspx –
AFAIK нет поддержки функций CLR на SQL Azure. Я тоже думал об этой возможности. – Gene