Глава 4. Пространственные расширения 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Глава 4. Пространственные расширения



 

MySQL поддерживает пространственные расширения, чтобы позволить хранение и анализ географических свойств. Эти свойства доступны для таблиц типов MyISAM, InnoDB, NDB и ARCHIVE. Однако, тип ARCHIVE не поддерживает индексацию, так что пространственные столбцы в столбцах ARCHIVE не могут быть индексированы. MySQL Cluster также не поддерживает индексацию пространственных столбцов.

Хотя пространственные расширения обеспечиваются в таблицах InnoDB, использование пространственных индексов может вызывать аварийный отказ (Глюк #15860).

Эта глава покрывает следующие темы:

 

Основание этих пространственных расширений в модели геометрии OpenGIS.

 

Форматы для представления пространственных данных.

 

Как использовать пространственные данные в MySQL.

 

Использование индексации для пространственных данных.

 

Отличия MySQL от спецификации OpenGIS.

Дополнительные ресурсы

 

Open Geospatial Consortium издает OpenGIS Simple Features Specifications For SQL, документ, который предлагает несколько концептуальных способов для распространения SQL RDBMS, чтобы поддерживать пространственные данные. Эта спецификация доступна на http://www.opengis.org/docs/99‑049.pdf.

 

Если Вы имеете вопросы или интересы относительно использования пространственных расширений MySQL, Вы можете обсуждать их на форуме GIS: http://forums.mysql.com/list.php?23.

 

Введение в пространственную поддержку MySQL

 

MySQL осуществляет пространственные расширения по спецификации Open Geospatial Consortium (OGC). Это международный консорциум более, чем 250 компаний, агентств и университетов, участвующих в разработке публично доступных концептуальных решений, которые могут быть полезны со всеми видами прикладных программ, которые управляют пространственными данными. OGC поддерживает Web‑сайт http://www.opengis.org/.

В 1997 Open Geospatial Consortium опубликовал OpenGIS Simple Features Specifications For SQL. Эта спецификация доступна на http://www.opengis.org/docs/99‑049.pdf.

MySQL осуществляет подмножество типов SQL with Geometry Types, среду, предложенную OGC. Этот термин относится к SQL‑среде, которая была расширена с набором типов геометрии. Оцененный геометрией SQL столбец выполнен как столбец, который имеет тип геометрии. Спецификация описывает набор SQL‑типов геометрии также, как функций на этих типах, чтобы создавать и анализировать значения геометрии.

Географическее свойство состоит в том, что есть что‑нибудь в мире, имеющее расположение. Свойство может быть:

 

Объект. Например, гора, водоем, город.

 

Пустота. Например, область почтового индекса, тропики.

 

Определимое расположение. Например, дорога, как специфическое место, где два прохода пересекаются.

Некоторые документы используют термин geospatial feature, чтобы обратиться к географическим свойствам.

Geometry другое слово, которое обозначает географическее свойство. Первоначально геометрия означала измерение земли. Другое значение исходит от картографии, оно касается геометрических свойств, которые картографы используют, чтобы отобразить мир.

Эта глава использует все эти условия синонимично: geographic feature, geospatial feature, feature или geometry. Обычно используется геометрия, определенная как отметка или набор пунктов (точек), представляющих что‑нибудь в мире, что имеет расположение.

 

Модель геометрии OpenGIS

 

Набор типов геометрии, предложенных окружением OGC SQL with Geometry Types основан на OpenGIS Geometry Model. В этой модели каждый геометрический объект имеет следующие общие реквизиты:

 

Это связано с пространственной системой ссылки, которая описывает координаты места, в котором объект определен.

 

Это принадлежит некоторому классу геометрии.

 

Иерархия класса геометрии

 

Классы геометрии определяют свою иерархию следующим образом:

 

Geometry (non‑instantiable)

 

Point (instantiable)

 

Curve (non‑instantiable)

 

LineString (instantiable)

 

Line

 

LinearRing

 

Surface (non‑instantiable)

 

Polygon (instantiable)

 

GeometryCollection (instantiable)

 

MultiPoint (instantiable)

 

MultiCurve (non‑instantiable)

 

MultiLineString (instantiable)

 

MultiSurface (non‑instantiable)

 

MultiPolygon (instantiable)

Невозможно создать объекты в non‑instantiable классах. Возможно создать объекты в классах instantiable. Все классы имеют реквизиты, и классы instantiable могут также иметь утверждения (правила, которые определяют допустимые образцы класса).

Geometry базовый класс. Это абстрактный класс. Подклассы Geometry ограничены нуль‑, одно‑ и двумерными геометрическими объектами, которые существуют в двумерном координатном пространстве. Все instantiable классы геометрии определены так, чтобы допустимые образцы класса были закрытой топологии (то есть, все определенные конфигурации включают их границу).

Основной класс Geometry имеет подклассы для Point, Curve, Surface и GeometryCollection:

 

Point представляет нуль‑мерные объекты.

 

Curve представляет одномерные объекты и имеет подкласс LineString с под‑подклассами Line и LinearRing.

 

Surface разработан для двумерных объектов и имеет подкласс Polygon.

 

GeometryCollection имеет специальные коллекции для нуль‑, одно‑ и двумерных объектов, известные как MultiPoint, MultiLineString и MultiPolygon для конфигураций моделирования, соответствующих совокупностям Points, LineStrings и Polygons, соответственно. MultiCurve и MultiSurface представляются как абстрактные суперклассы, которые обобщают интерфейсы совокупности, чтобы обработать Curves и Surfaces.

Geometry, Curve, Surface, MultiCurve и MultiSurface определены как non‑instantiable классы. Они определяют общий набор методов для их подклассов и включены для расширяемости.

Point, LineString, Polygon, GeometryCollection, MultiPoint, MultiLineString и MultiPolygon instantiable классы.

 

Класс Geometry

 

Geometry представляет собой корневой класс иерархии. Это non‑instantiable класс, но имеет ряд реквизитов, которые являются общими для всех значении геометрии, созданных любым из подклассов Geometry. Эти реквизиты описаны в следующем списке. Специфические подклассы имеют их собственные специфические реквизиты, описанные позже.

Реквизиты геометрии

Значение геометрии имеет следующие реквизиты:

 

type. Каждая геометрия принадлежит одному из instantiable классов в иерархии.

 

SRID или Spatial Reference Identifier (пространственный идентификатор ссылки). Это значение идентифицирует связанную пространственную систему ссылки геометрии, которая описывает координатное пространство, в котором объект геометрии определен. В MySQL значение SRID только целое число, связанное со значением геометрии. Все вычисления выполнены, принимая Евклидову (плоскую) геометрию.

 

Координата в пространственной системе ссылки, представляемая как числа двойной точности (с восьмью байтами). Все не пустые конфигурации включают по крайней мере одну пару координат (X,Y). Пустые конфигурации не содержат никаких координат.

Координаты связаны со SRID. Например, в различных системах координат расстояние между двумя объектами может отличаться даже, когда объекты имеют те же самые координаты потому, что расстояние на плоской системе координат и расстояния на геоцентрической системе (на поверхности Земли) разные вещи.

 

Внутренний, граничный и внешний.

Каждая геометрия занимает некоторую позицию. Внешнее, с точки зрения геометрии, это все место, не занятое геометрией. Внутреннее, соответственно, место, занятое геометрией. Граница находится между внутренним и внешним.

 

MBR (Minimum Bounding Rectangle) или Envelope (минимальный ограничительный прямоугольник, конверт). Это геометрия ограничения, сформированная минимумом и максимумом (X,Y):((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))

 

Является ли значение простым или нет. Значения геометрии типов (LineString, MultiPoint, MultiLineString) являются простыми или не простыми. Каждый тип определяет собственные утверждения, будучи простым или не простым.

 

Закрыто ли значение или нет. Значения геометрии типов (LineString, MultiString) закрыты или не закрыты. Каждый тип определяет собственные утверждения.

 

Является ли значение пустым или не пустым: геометрия пуста, если не имеет никаких точек. Внешний, внутренний и граница пустой геометрии не определены (то есть они представляются значением NULL). Пустая геометрия определена, чтобы быть всегда простой и имеет область 0.

 

Размерность. Геометрия может иметь размерность 0, 1 или 2:

 

0 для геометрии без длины и никакой области.

 

1 для геометрии с ненулевой длиной и нулевой областью, а также для пустой геометрии.

 

2 для геометрии с ненулевой областью.

Объекты Point имеют размерность 0. Объекты LineString имеют размерность 1. Объекты Polygon имеют размерность 2. Размерности объектов MultiPoint, MultiLineString и MultiPolygon такие же, как размерности тех элементов, из которых они состоят.

 

Класс Point

 

Point геометрия, которая представляет одиночное расположение в координатном пространстве.

Примеры Point

 

Вообразите крупномасштабную карту мира с многими городами. Объект Point мог бы представлять каждый город.

 

На городской карте объект Point мог бы представлять автобусную остановку (Stylus советует "bus stop" писать как "останов шины", зараза с русскими программистами).

Свойства Point

 

Значение X.

 

Значение Y.

 

Point определена как нуль‑мерная геометрия.

 

Границей Point является пустой набор.

 

Класс Curve

 

Curve одномерная геометрия, обычно представляемая последовательностью точек. Специфические подклассы Curve определяют тип интерполяции между пунктами (точками). Curve non‑instantiable.

Свойства Curve

 

Curve имеет координаты пунктов.

 

Curve определена как одномерная геометрия.

 

Curve проста, если не проходит через ту же самую отметку дважды.

 

Curve закрыта, если отметка начала равна оконечной точке.

 

Граница закрытой Curve пуста.

 

Граница не закрытой Curve состоит из двух оконечных точек.

 

Curve, которая является простой и закрытой, LinearRing.

 

Класс LineString

 

LineString это Curve с линейной интерполяцией между пунктами (точками).

Примеры LineString:

 

На всемирной карте объекты LineString могли бы представлять реки.

 

В городской карте объекты LineString могли бы представлять любые проходы.

Свойства LineString

 

LineString имеет координаты сегментов, определенных каждой последовательной парой пунктов.

 

LineString является Line, если это состоит из точно двух пунктов.

 

LineString является LinearRing, если закрыта и проста.

 

Класс Surface

 

Surface двумерная геометрия. Это non‑instantiable класс. Есть instantiable подкласс: Polygon.

Свойства Surface

 

Surface определен как двумерная геометрия.

 

OpenGIS определяет простой Surface как геометрию, которая состоит из одиночной заплаты, связанной с одной внешней границей и нулем или более внутренними границами.

 

Граница простого Surface представляет собой набор закрытых кривых, соответствующих внешним и внутренним границам.

 

Класс Polygon

 

Polygon плоский вариант Surface, представляющий многостороннюю геометрию. Это определено одиночной внешней границей и нулем или более внутренними границами, где каждая внутренняя граница определяет отверстие в Polygon.

Пример Polygon.

 

На карте области объекты Polygon могли бы представлять леса, районы и так далее.

Утверждения Polygon.

 

Граница Polygon состоит из набора объектов LinearRing (то есть, объектов LineString, которые являются простыми и закрытыми), которые составляют внешние и внутренние границы.

 

Polygon не имеет никаких пересечений. Кольца в границе Polygon могут пересекаться в Point, но только как тангенс.

 

Polygon не имеет никаких строк, выбросов или проколов.

 

Polygon имеет внутреннюю структуру, которая является связанным набором отметок.

 

Polygon может иметь отверстия. Внешний Polygon с отверстиями не связан. Каждое отверстие определяет связанный компонент внешних.

Предшествующие утверждения делают Polygon простой геометрией.

 

Класс GeometryCollection

 

GeometryCollection геометрия, которая является совокупностью одной или большего количества конфигураций любого класса.

Все элементы в GeometryCollection должны быть в той же самой пространственной системе ссылки (то есть, в той же самой системе координат). Не имеется никаких других ограничений на элементы GeometryCollection, хотя подклассы GeometryCollection, описанных в следующих разделах могут ограничивать членство. Ограничения могут быть основаны на:

 

Тип элемента (например, MultiPoint может содержать только элементы Point).

 

Размерность.

 

Ограничения на степень пространственного перекрытия между элементами.

 

Класс MultiPoint

 

MultiPoint совокупность геометрии, составленная из элементов Point. Пункты (точки) всегда не связаны или упорядочены.

Примеры MultiPoint:

 

На всемирной карте MultiPoint мог бы представлять цепочку маленьких изолированных островов.

 

На городской карте MultiPoint мог бы представлять выходы.

Свойства MultiPoint

 

MultiPoint нульмерная геометрия.

 

MultiPoint прост, если никакие два из значений Point не равны (имеют идентичные координатные значения).

 

Граница MultiPoint пустой набор.

 

Класс MultiCurve

 

MultiCurve совокупность геометрии, составленная из элементов Curve. MultiCurve non‑instantiable класс.

Свойства MultiCurve

 

MultiCurve одномерная геометрия.

 

MultiCurve проста, если (и только если) все элементы просты. Единственные пересечения между любыми двумя элементами происходят в пунктах (точках), которые находятся на границах обоих элементов.

 

Граница MultiCurve получена, применяя правило mod 2 union (также известно как правило odd‑even): точка находится в границе MultiCurve, если она находится в границах нечетного числа элементов MultiCurve.

 

MultiCurve закрыта, если все элементы закрыты.

 

Граница закрытой MultiCurve всегда пуста.

 

Класс MultiLineString

 

MultiLineString совокупность геометрии MultiCurve, составленная из элементов LineString.

Примеры MultiLineString

 

На карте области MultiLineString мог бы представлять систему рек или систему дорог.

 

Класс MultiSurface

 

MultiSurface совокупность геометрии, составленная из поверхностных элементов. MultiSurface non‑instantiable класс. Есть только instantiable подкласс MultiPolygon.

Утверждения MultiSurface

 

Две поверхности MultiSurface не имеют никаких внутренностей, которые пересекаются.

 

Два элемента MultiSurface имеют границы, которые пересекаются в конечном числе пунктов (точек).

 

Класс MultiPolygon

 

MultiPolygon объект MultiSurface, составленный из элементов Polygon.

Примеры MultiPolygon

 

На карте области MultiPolygon мог бы представлять систему озер.

Утверждения MultiPolygon

 

MultiPolygon не имеет никаких двух элементов Polygon с внутренностями, которые пересекаются.

 

MultiPolygon не имеет никаких двух элементов Polygon, которые пересекаются (пересечение также запрещается предыдущим утверждением), или же касаются в бесконечном числе (точек).

 

MultiPolygon, возможно, имеет вырезы, выбросы или проколы. MultiPolygon регулярен, закрытый набор отметок.

 

MultiPolygon, который имеет больше чем один Polygon, имеет внутренности, которые не связаны. Число связанных внутренних компонентов MultiPolygon равно числу значений Polygon в MultiPolygon.

Свойства MultiPolygon

 

MultiPolygon двумерная геометрия.

 

Граница MultiPolygon набор закрытых кривых (значения LineString), соответствующих границам элементов Polygon.

 

Каждая Curve в границе MultiPolygon находится в границе точно одного элемента Polygon.

 

Каждая Curve в границе элемента Polygon находится в границе MultiPolygon.

 



Поделиться:


Последнее изменение этой страницы: 2021-01-14; просмотров: 125; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.134.90.44 (0.092 с.)