Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«MySQL: руководство профСссионала». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 24

Автор АлСксСй ΠŸΠ°ΡƒΡ‚ΠΎΠ²

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°ΠΌΠΈ.


Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ доступ ΠΊ качСствСнным ΠΈΠ»ΠΈ количСствСнным Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°ΠΌ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ.


Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя конфигурациями.


Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ….

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… контСкстах, Ρ‚ΠΈΠΏΠ°:


Π›ΡŽΠ±Π°Ρ интСрактивная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° SQL, Ρ‚ΠΈΠΏΠ° mysql ΠΈΠ»ΠΈ MySQL Query Browser.


ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π½Π° любом языкС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ клиСнтский MySQL API.

4.5.1. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ

MySQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для прСобразования Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ WKT ΠΈΠ»ΠΈ WKB:


AsBinary(g)

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ ΠΊ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ WKB ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.SELECT AsBinary(g) FROM geom;


AsText(g)

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ ΠΊ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ WKT ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строковый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.mysql> SET @g = 'LineString(1 1,2 2,3 3)';

mysql> SELECT AsText(GeomFromText(@g));

+--------------------------+

| AsText(GeomFromText(@g)) |

+--------------------------+

| LINESTRING(1 1,2 2,3 3) |

+--------------------------+


GeomFromText(wkt[,srid])

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ строковоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· WKT-прСдставлСния Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Ряд спСцифичСских для Ρ‚ΠΈΠΏΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‚Π°ΠΊΠΆΠ΅ обСспСчиваСтся, Ρ‚ΠΈΠΏΠ° PointFromText() ΠΈ LineFromText().


GeomFromWKB(wkb[,srid])

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· WKB-прСдставлСния Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Ряд спСцифичСских для Ρ‚ΠΈΠΏΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‚Π°ΠΊΠΆΠ΅ обСспСчиваСтся, Ρ‚ΠΈΠΏΠ° PointFromWKB() ΠΈ LineFromWKB().

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ 4.5.2. Geometry

КаТдая функция, которая ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΊ этой Π³Ρ€ΡƒΠΏΠΏΠ΅, Π±Π΅Ρ€Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСствСнноС ΠΈΠ»ΠΈ качСствСнноС свойство Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ. НСкоторыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΈΡ… Ρ‚ΠΈΠΏ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Π’Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ NULL, Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ. НапримСр, Area() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ NULL, Ссли Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅ являСтся Π½ΠΈ Polygon, Π½ΠΈ MultiPolygon.

4.5.2.1. ΠžΠ±Ρ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, пСрСчислСнныС Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅, Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ любого Ρ‚ΠΈΠΏΠ°.


Dimension(g)

ВозвращаСтся свойствСнная Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ g. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 0, 1 ΠΈΠ»ΠΈ 2. Бмысл этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΄Π°Π½ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ " 4.2.2. Класс Geometry".mysql> SELECT Dimension(GeomFromText('LineString(1 1,2 2)'));

+------------------------------------------------+

| Dimension(GeomFromText('LineString(1 1,2 2)')) |

+------------------------------------------------+

| 1 |

+------------------------------------------------+


Envelope(g)

ВозвращаСтся ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ (MBR) для Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ g. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Polygon.

ΠœΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌΠΈ (Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ) ΡƒΠ³Π»Π° Π±Π»ΠΎΠΊΠ° ограничСния:POLYGON((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))

mysql> SELECT AsText(Envelope(GeomFromText('LineString(1 1,2 2)')));

+-------------------------------------------------------+

| AsText(Envelope(GeomFromText('LineString(1 1,2 2)'))) |

+-------------------------------------------------------+

| POLYGON((1 1,2 1,2 2,1 2,1 1)) |

+-------------------------------------------------------+


GeometryType(g)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΊ строку имя Ρ‚ΠΈΠΏΠ° Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ, ΠΎΠ±Ρ€Π°Π·Π΅Ρ† ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся Ρ‡Π»Π΅Π½ΠΎΠΌ g. Имя соотвСтствуСт ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· instantiable подклассов Geometry.mysql> SELECT GeometryType(GeomFromText('POINT(1 1)'));

+------------------------------------------+

| GeometryType(GeomFromText('POINT(1 1)')) |

+------------------------------------------+

| POINT |

+------------------------------------------+


SRID(g)

ВозвращаСтся Ρ†Π΅Π»ΠΎΠ΅ число, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ пространствСнный ID систСмы ссылки для Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ g.

Π’ MySQL Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ SRID Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»ΠΎΠ΅ число, связанноС со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ. ВсС вычислСния Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹, принимая Π΅Π²ΠΊΠ»ΠΈΠ΄ΠΎΠ²Ρƒ (ΠΏΠ»ΠΎΡΠΊΡƒΡŽ) Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΡŽ. mysql> SELECT SRID(GeomFromText('LineString(1 1,2 2)',101));

+-----------------------------------------------+

| SRID(GeomFromText('LineString(1 1,2 2)',101)) |

+-----------------------------------------------+

| 101 |

+-----------------------------------------------+


БпСцификация OpenGIS Ρ‚Π°ΠΊΠΆΠ΅ опрСдСляСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ MySQL Π½Π΅ выполняСт:


Boundary(g)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΡŽ, которая являСтся Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Ρ‹ΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ g.


IsEmpty(g)

ВозвращаСтся 1, Ссли гСомСтрия g пустая гСомСтрия, 0, Ссли это Π½Π΅ пусто, ΠΈ 1, Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ NULL. Если гСомСтрия пуста, это прСдставляСт пустой Π½Π°Π±ΠΎΡ€ Ρ‚ΠΎΡ‡Π΅ΠΊ.


IsSimple(g)

Π’ настоящСС врСмя эта функция Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Если Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°ΠΊ описано Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π΅.

ВозвращаСтся 1, Ссли гСомСтрия g Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π°Π½ΠΎΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… гСомСтричСских ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² (Ρ‚ΠΎΡ‡Π΅ΠΊ), Ρ‚ΠΈΠΏΠ° самопСрСсСчСния ΠΈΠ»ΠΈ самокасания. IsSimple() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0, Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ прост, ΠΈ 1, Ссли ΠΎΠ½ NULL.

ОписаниС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ instantiable гСомСтричСского класса, Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π½Π΅Π΅ Π² Π³Π»Π°Π²Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ спСцифичСскиС условия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† Ρ‚ΠΎΠ³ΠΎ класса Π±Ρ‹Ρ‚ΡŒ классифицированными ΠΊΠ°ΠΊ Π½Π΅ простой.

4.5.2.2. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Point

Point состоит ΠΈΠ· ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ X ΠΈ Y, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:


X(p)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ X-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для p ΠΊΠ°ΠΊ число Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности.mysql> SET @pt = 'Point(56.7 53.34)';

mysql> SELECT X(GeomFromText(@pt));

+----------------------+

| X(GeomFromText(@pt)) |

+----------------------+

| 56.7 |

+----------------------+


Y(p)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для p ΠΊΠ°ΠΊ число Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности.mysql> SET @pt = 'Point(56.7 53.34)';

mysql> SELECT Y(GeomFromText(@pt));

+----------------------+

| Y(GeomFromText(@pt)) |

+----------------------+

| 53.34 |

+----------------------+

4.5.2.3. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ LineString

LineString состоит ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Point. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ спСцифичСскиС ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ (Ρ‚ΠΎΡ‡ΠΊΠΈ) LineString, ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ число Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ.


EndPoint(ls)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Point, которая являСтся ΠΎΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ значСния LineString ls.mysql> SET @ls = 'LineString(1 1,2 2,3 3)';

mysql> SELECT AsText(EndPoint(GeomFromText(@ls)));

+-------------------------------------+

| AsText(EndPoint(GeomFromText(@ls))) |

+-------------------------------------+

| POINT(3 3) |

+-------------------------------------+


GLength(ls)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΊ число Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности Π΄Π»ΠΈΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ LineString ls Π² связанной пространствСнной ссылкС.mysql> SET @ls = 'LineString(1 1,2 2,3 3)';

mysql> SELECT GLength(GeomFromText(@ls));

+----------------------------+

| GLength(GeomFromText(@ls)) |

+----------------------------+

| 2.8284271247462 |

+----------------------------+


GLength() Π½Π΅Π½ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ имя. Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ OpenGIS Length().


NumPoints(ls)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Point Π² the LineString ls.mysql> SET @ls = 'LineString(1 1,2 2,3 3)';

mysql> SELECT NumPoints(GeomFromText(@ls));

+------------------------------+

| NumPoints(GeomFromText(@ls)) |

+------------------------------+

| 3 |

+------------------------------+


PointN(ls,N)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ N-Ρ‹ΠΉ Point Π² Linestring ls. Π’ΠΎΡ‡ΠΊΠΈ ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Ρ‹, начиная с 1.mysql> SET @ls = 'LineString(1 1,2 2,3 3)';

mysql> SELECT AsText(PointN(GeomFromText(@ls),2));

+-------------------------------------+

| AsText(PointN(GeomFromText(@ls),2)) |

+-------------------------------------+

| POINT(2 2) |

+-------------------------------------+


StartPoint(ls)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Point, которая являСтся ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ Π½Π°Ρ‡Π°Π»Π° значСния point of the LineString ls.mysql> SET @ls = 'LineString(1 1,2 2,3 3)';

mysql> SELECT AsText(StartPoint(GeomFromText(@ls)));

+---------------------------------------+

| AsText(StartPoint(GeomFromText(@ls))) |

+---------------------------------------+

| POINT(1 1) |

+---------------------------------------+


БпСцификация OpenGIS Ρ‚Π°ΠΊΠΆΠ΅ опрСдСляСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ MySQL Π½Π΅ выполняСт:


IsRing(ls)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 1, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ LineString value ls Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, значСния StartPoint() ΠΈ EndPoint() Ρ‚Π΅ ΠΆΠ΅ самыС) ΠΈ просто (Π½Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· Ρ‚Ρƒ ΠΆΠ΅ ΡΠ°ΠΌΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ большС, Ρ‡Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·). ВозвращаСтся 0, Ссли ls Π½Π΅ ΠΊΠΎΠ»ΡŒΡ†ΠΎ, ΠΈ 1, Ссли это NULL.

4.5.2.4. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ MultiLineString

GLength(mls)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΊ число Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности Π΄Π»ΠΈΠ½Ρƒ значСния MultiLineString mls. Π”Π»ΠΈΠ½Π° mls Ρ€Π°Π²Π½Π° суммС Π΄Π»ΠΈΠ½ элСмСнтов.mysql> SET @mls = 'MultiLineString((1 1,2 2,3 3),(4 4,5 5))';

mysql> SELECT GLength(GeomFromText(@mls));

+-----------------------------+

| GLength(GeomFromText(@mls)) |

+-----------------------------+

| 4.2426406871193 |

+-----------------------------+


GLength() Π½Π΅Π½ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ имя. Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ OpenGIS Length().


IsClosed(mls)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 1, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ MultiLineString mls Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, значСния StartPoint() ΠΈ EndPoint() Ρ€Π°Π²Π½Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ LineString Π² mls). Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0, Ссли mls Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚, ΠΈ 1, Ссли это NULL.mysql> SET @mls = 'MultiLineString((1 1,2 2,3 3),(4 4,5 5))';

mysql> SELECT IsClosed(GeomFromText(@mls));

+------------------------------+

| IsClosed(GeomFromText(@mls)) |

+------------------------------+