Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
A MultiLineString — это коллекция из нуля или более geometry или экземпляров geographyLineString.
Экземпляры MultiLineString
На рисунке ниже показаны примеры MultiLineString.
Как показано на рисунке:
Рис. 1 представляет собой простой
MultiLineStringэкземпляр, границы которого определяются четырьмя конечными точками двухLineStringэлементов.Рис. 2 — это простой
MultiLineStringэкземпляр, так как пересекаются только конечные точкиLineStringэлементов. Граница — это две не перекрывающиеся конечные точки.Рис. 3 — это несчастный
MultiLineStringэкземпляр, так как внутренняя часть одного из егоLineStringэлементов пересекается. Граница этогоMultiLineStringэкземпляра — четыре конечные точки.Рис. 4 — это несокрытый
MultiLineStringэкземпляр.Рисунок 5 является простым, незамкнутым
MultiLineString. Он не закрыт, так как егоLineStringsэлементы не закрываются. Это просто, потому что интерьеры ни одного из экземпляровLineStringsне пересекаются.Рис. 6 — простой закрытый
MultiLineStringэкземпляр. Он закрыт, так как все его элементы закрыты. Это просто, потому что ни один из его элементов не пересекается в интерьере.
Принятые случаи
MultiLineString Для того чтобы экземпляр был принят, он должен быть пустым или состоять только LineString из допустимых фрагментов. Дополнительные сведения о принятых LineString экземплярах см. в разделе LineString. Ниже приведены примеры принятых MultiLineString случаев.
DECLARE @g1 geometry = 'MULTILINESTRING EMPTY';
DECLARE @g2 geometry = 'MULTILINESTRING((1 1, 3 5), (-5 3, -8 -2))';
DECLARE @g3 geometry = 'MULTILINESTRING((1 1, 5 5), (1 3, 3 1))';
DECLARE @g4 geometry = 'MULTILINESTRING((1 1, 3 3, 5 5),(3 3, 5 5, 7 7))';
В следующем примере возникает System.FormatException исключение, так как второй LineString экземпляр недопустим.
DECLARE @g geometry = 'MULTILINESTRING((1 1, 3 5),(-5 3))';
Допустимые экземпляры
Чтобы экземпляр MultiLineString был допустимым, он должен соответствовать следующим критериям:
Все экземпляры, входящие в состав экземпляра
MultiLineString, должны быть допустимыми экземплярамиLineString.Ни два
LineStringэкземпляра, входящих в составMultiLineStringэкземпляра, не могут пересекаться в любом интервале. ЭкземплярыLineStringмогут пересекаться или касаться себя или других экземпляровLineStringв конечном числе точек.
В следующем примере показаны три допустимых MultiLineString экземпляра и один MultiLineString экземпляр, недопустимый.
DECLARE @g1 geometry = 'MULTILINESTRING EMPTY';
DECLARE @g2 geometry = 'MULTILINESTRING((1 1, 3 5), (-5 3, -8 -2))';
DECLARE @g3 geometry = 'MULTILINESTRING((1 1, 5 5), (1 3, 3 1))';
DECLARE @g4 geometry = 'MULTILINESTRING((1 1, 3 3, 5 5),(3 3, 5 5, 7 7))';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid(), @g4.STIsValid();
@g4 недопустим, так как второй LineString экземпляр перекрывает первый LineString экземпляр через интервал. Они касаются бесконечного количества точек.
Примеры
В следующем примере создается простой экземпляр geometry``MultiLineString, который содержит два элемента LineString с SRID 0.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 2, 1 1), (1 0, 1 1))');
Чтобы создать экземпляр с другим SRID, используйте STGeomFromText() или STMLineStringFromText(). Вы также можете использовать Parse() и изменить SRID, как показано в следующем примере.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 2, 1 1), (1 0, 1 1))');
SET @g.STSrid = 13;
См. также
STLength (тип данных geometry)
STIsClosed (тип данных geometry)
LineString
Пространственные данные (SQL Server)