Язык географической разметки ( GML ) — это грамматика XML , определенная Open Geospatial Consortium (OGC) для выражения географических объектов. GML служит языком моделирования для географических систем, а также открытым форматом обмена для географических транзакций в Интернете. Ключом к полезности GML является его способность интегрировать все формы географической информации, включая не только обычные «векторные» или дискретные объекты, но и покрытия (см. также GMLJP2 ) и данные датчиков.
GML содержит богатый набор примитивов , которые используются для построения схем или языков приложений. Эти примитивы включают:
Первоначальная модель GML была основана на структуре описания ресурсов (RDF) Консорциума Всемирной паутины . Впоследствии OGC ввел схемы XML в структуру GML, чтобы помочь соединить различные существующие географические базы данных, чьи реляционные структуры схем XML было легче определить. Полученная в результате схема GML на основе XML сохраняет многие особенности RDF, включая идею дочерних элементов как свойств родительского объекта (RDFS) и использование ссылок на удаленные свойства.
Профили GML являются логическими ограничениями GML и могут быть выражены документом, схемой XML или обоими. Эти профили предназначены для упрощения принятия GML, для содействия быстрому принятию стандарта. Следующие профили , как определено спецификацией GML, были опубликованы или предложены для публичного использования:
Профили отличаются от схем приложений. Профили являются частью пространств имен GML (Open GIS GML) и определяют ограниченные подмножества GML. Схемы приложений представляют собой XML-словари, определенные с помощью GML и находящиеся в целевом пространстве имен, определенном приложением. Схемы приложений могут быть построены на основе определенных профилей GML или использовать полный набор схем GML.
Профили часто создаются для поддержки производных языков GML (см. схемы приложений), созданных для поддержки определенных областей применения, таких как коммерческая авиация, морская картография или эксплуатация ресурсов.
Спецификация GML (начиная с GML v3) содержит пару скриптов XSLT (обычно называемых «инструментом подмножества»), которые можно использовать для построения профилей GML.
Профиль простых объектов GML представляет собой более полный профиль GML, чем указанный выше профиль точек , и поддерживает широкий спектр векторных объектов объектов, включая следующие:
Поскольку профиль призван предоставить простую точку входа, он не обеспечивает поддержку следующего:
Тем не менее, он поддерживает решение большого количества реальных проблем.
Кроме того, спецификация GML предоставляет подмножество инструментов для генерации профилей GML, содержащих указанный пользователем список компонентов. Инструмент состоит из трех скриптов XSLT. Скрипты генерируют профиль, который разработчик может расширить вручную или иным образом улучшить с помощью ограничения схемы. Как ограничения полной спецификации GML, схемы приложений, которые может генерировать профиль, сами должны быть допустимыми схемами приложений GML.
Инструмент подмножества может генерировать профили и по многим другим причинам. Перечисление элементов и атрибутов для включения в результирующую схему профиля и запуск инструмента приводит к созданию одного файла схемы профиля, содержащего только указанные пользователем элементы и все объявления элементов, атрибутов и типов, от которых зависят указанные элементы. Некоторые схемы профилей, созданные таким образом, поддерживают другие спецификации, включая IHO S-57 и GML в JPEG 2000.
Чтобы раскрыть географические данные приложения с помощью GML, сообщество или организация создает схему XML, специфичную для интересующей области приложения ( схема приложения ). Эта схема описывает типы объектов, данные которых интересуют сообщество и которые приложения сообщества должны раскрывать. Например, приложение для туризма может определять типы объектов, включая памятники, достопримечательности, музеи, съезды с дорог и точки обзора в своей схеме приложения . Эти типы объектов, в свою очередь, ссылаются на примитивные типы объектов, определенные в стандарте GML.
Некоторые другие языки разметки для географии используют конструкции схем, но GML строится на существующей модели схемы XML вместо создания нового языка схемы. Схемы приложений обычно разрабатываются с использованием UML, соответствующего стандарту ISO 19103 (Географическая информация – Концептуальный язык схем) [3] , а затем приложение GML создается с использованием правил, приведенных в Приложении E к ISO 19136 .
Ниже приведен список известных, общедоступных схем приложений GML:
KML , ставший популярным благодаря Google, дополняет GML. В то время как GML — это язык для кодирования географического контента для любого приложения, описывающий спектр объектов приложения и их свойств (например, мосты, дороги, буи, транспортные средства и т. д.), KML — это язык для визуализации географической информации, адаптированный для Google Earth . KML можно использовать для отображения контента GML, а контент GML можно «стилизовать» с помощью KML для целей презентации. KML — это прежде всего транспорт 3D-изображения, а не транспорт обмена данными. В результате этой существенной разницы в целях кодирование контента GML для отображения с помощью KML приводит к значительной и невосстановимой потере структуры и идентичности в результирующем KML. Более 90% структур GML (например, метаданные, системы координат , горизонтальные и вертикальные датумы, геометрическая целостность окружностей, эллипсов, дуг и т. д.) не могут быть преобразованы в KML без потерь или нестандартного кодирования. Аналогично, из-за конструкции KML как транспорта отображения, кодирование содержимого KML в GML приведет к значительной потере структур отображения KML, таких как регионы, правила уровня детализации, информация о просмотре и анимации, а также информация о стиле и многомасштабное представление. Возможность отображать метки на нескольких уровнях детализации отличает KML от GML, поскольку отображение выходит за рамки GML. [12]
GML кодирует геометрии GML или геометрические характеристики географических объектов как элементы в документах GML в соответствии с "векторной" моделью. Геометрии этих объектов могут описывать, например, дороги, реки и мосты.
Ключевые типы объектов геометрии GML в GML 1.0 и GML 2.0 следующие:
GML 3.0 и выше также включает структуры для описания информации о «покрытии», «растровой» модели, например, собранной с помощью удаленных датчиков и изображений, включая большинство спутниковых данных.
GML определяет объекты, отличные от геометрических объектов . Объект — это прикладной объект, представляющий физическую сущность, например, здание, реку или человека. Объект может иметь или не иметь геометрические аспекты. Геометрический объект определяет местоположение или регион вместо физической сущности, и, следовательно, отличается от объекта .
В GML элемент может иметь различные геометрические свойства, которые описывают геометрические аспекты или характеристики элемента (например, свойства Point или Extent элемента ). GML также предоставляет возможность элементам совместно использовать геометрическое свойство друг с другом, используя ссылку на удаленное свойство в общем геометрическом свойстве. Удаленные свойства являются общей функцией GML, заимствованной из RDF. Атрибут xlink:href в геометрическом свойстве GML означает, что значение свойства является ресурсом, на который ссылается ссылка.
Например, элемент Building в конкретной схеме приложения GML может иметь позицию, заданную примитивным типом объекта геометрии GML Point . Однако Building является отдельной сущностью от Point , которая определяет его позицию. Кроме того, элемент может иметь несколько свойств геометрии (или вообще не иметь), например, протяженность и позицию .
Координаты в GML представляют собой координаты геометрических объектов . Координаты могут быть заданы любым из следующих элементов GML:
<gml:coordinates> <gml:pos> <gml:posList>
GML имеет несколько способов представления координат. Например, <gml:coordinates>
элемент может быть использован следующим образом:
<gml:Point gml:id= "p21" srsName= "http://www.opengis.net/def/crs/EPSG/0/4326" > <gml:coordinates> 45.67, 88.56 </gml:coordinates> < /gml:Точка>
При указании, как указано выше, отдельные координаты (например, 88.56 ) не доступны по отдельности через объектную модель документа XML , поскольку содержимое элемента представляет собой всего лишь одну строку.<gml:coordinates>
Чтобы сделать координаты GML доступными через XML DOM, в GML 3.0 были введены элементы <gml:pos>
и <gml:posList>
. (Хотя в версиях GML 1 и 2 был <gml:coord>
элемент , он рассматривается как дефект и не используется.) Используя <gml:pos>
элемент вместо <gml:coordinates>
элемента , ту же точку можно представить следующим образом:
<gml:Point gml:id= "p21" srsName= "http://www.opengis.net/def/crs/EPSG/0/4326" > <gml:pos srsDimension= "2" > 45.67 88.56 </gml :pos> </gml:Point>
Координаты <gml:LineString>
геометрического объекта можно представить с помощью <gml:coordinates>
элемента:
<gml:LineString gml:id= "p21" srsName= "http://www.opengis.net/def/crs/EPSG/0/4326" > <gml:coordinates> 45.67, 88.56 55.56,89.44 </gml:coordinates> </gml:LineString >
Элемент <gml:posList>
используется для представления списка кортежей координат, как это требуется для линейной геометрии:
<gml:LineString gml:id= "p21" srsName= "http://www.opengis.net/def/crs/EPSG/0/4326" > <gml:posList srsDimension= "2" > 45.67 88.56 55.56 89.44 < /gml:posList> </gml:LineString >
Для серверов данных GML ( WFS ) и инструментов преобразования, которые поддерживают только GML 1 или GML 2 (т. е. только <gml:coordinates>
элемент), альтернативы нет <gml:coordinates>
. Однако для документов GML 3 и более поздних версий <gml:pos>
и <gml:posList>
предпочтительнее, чем <gml:coordinates>
.
Система координат (CRS) определяет геометрию каждого геометрического элемента в документе GML.
В отличие от KML или GeoRSS , GML не использует систему координат по умолчанию, если она не указана. Вместо этого желаемая система координат должна быть указана явно с помощью CRS. Элементы, координаты которых интерпретируются относительно такой CRS, включают следующее:
<gml:coordinates>
<gml:pos>
<gml:posList>
Атрибут srsName, прикрепленный к геометрическому объекту, определяет CRS объекта, как показано в следующем примере:
<gml:Point gml:id= "p1" srsName= "#srs36" > <gml:coordinates> 100,200 </gml:coordinates> </gml:Point>
Значение атрибута srsName — это унифицированный идентификатор ресурса (URI). Он ссылается на определение CRS, которое используется для интерпретации координат в геометрии. Определение CRS может быть в документе (т. е. плоском файле ) или в онлайн-веб-сервисе. Значения кодов EPSG можно разрешить с помощью реестра наборов геодезических параметров EPSG, управляемого Ассоциацией производителей нефти и газа по адресу [1] Архивировано 09.08.2020 на Wayback Machine .
URI srsName также может быть унифицированным именем ресурса (URN) для ссылки на общее определение CRS. OGC разработал структуру URN и набор определенных URN для кодирования некоторых общих CRS. URN-резольвер разрешает эти URN в определения GML CRS.
Объекты Polygons , Points и LineString кодируются в GML 1.0 и 2.0 следующим образом:
<gml:Polygon> <gml:outerBoundaryIs> <gml:LinearRing> <gml:coordinates> 0,0 100,0 100,100 0,100 0,0 </gml:coordinates> </gml:LinearRing> </gml:outerBoundaryIs> < /gml:Polygon> <gml:Point> <gml:coordinates> 100 200 </gml:coordinates> </gml:Point> <gml:LineString> <gml:coordinates> 100 200 150 300 </gml:coordinates> </gml: СтрокаСтроки>
Объекты LineString , как и объекты LinearRing , предполагают линейную интерполяцию между указанными точками. Также координаты полигона должны быть замкнуты.
Следующий пример GML иллюстрирует различие между объектами и геометрическими объектами . Объект Building имеет несколько геометрических объектов , один из которых ( Point с идентификатором p21 ) является общим с объектом SurveyMonument :
<abc:Building gml:id= "SearsTower" > <abc:height> 52 </abc:height> <abc:position xlink:type= "Simple" xlink:href= "#p21" /> </abc:Building > <abc:SurveyMonument gml:id= "g234" > <abc:position> <gml:Point gml:id= "p21" > <gml:posList> 100,200 </gml:posList> </gml:Point> </ abc:position> </abc:SurveyMonument>
Ссылка относится к общей точке , а не к SurveyMonument , поскольку любой объект -объект может иметь более одного свойства геометрического объекта .
Профиль точек GML содержит одну геометрию GML, а именно <gml:Point>
тип объекта. Любая схема XML может использовать профиль точек , импортируя его и ссылаясь на <gml:Point>
экземпляр субъекта:
<PhotoCollection xmlns= "http://www.myphotos.org" xmlns:gml= "http://www.opengis.net/gml" xmlns : xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= " http://www.myphotos.org MyGoodPhotos.xsd" > <items> <Item> <name> Долина Линн </name> <description> Снимок водопада с подвесного моста </description> <where> Северный Ванкувер </where> <position> <gml:Point srsDimension= "2" srsName= "http://www.opengis.net/def/crs/EPSG/0/4326" > <gml:pos> 49.40 -123.26 < /gml:pos> </gml:Point> </position> </Item> </items> </PhotoCollection>
При использовании Point Profile единственным геометрическим объектом является объект '<gml:Point>'. Остальная география определяется схемой фотоколлекции.
Рон Лейк начал работу над GML осенью 1998 года, после более ранней работы над XML- кодировками для радиовещания. Лейк представил свои ранние идеи на встрече OGC в Атланте, штат Джорджия, в феврале 1999 года под названием xGML. Это представило идею GeoDOM и понятие языка географического стиля (GSL), основанного на XSL . Акифуми Накаи из NTT Data также представил на той же встрече работу, частично проводимую в NTT Data над XML-кодировкой под названием G-XML, которая была нацелена на основанные на местоположении сервисы. [13] В апреле 1999 года Галдос создал команду XBed (с CubeWerx, Oracle Corporation , MapInfo Corporation , NTT Data, Mitsubishi и Compusult в качестве субподрядчиков). Xbed был сосредоточен на использовании XML для геопространственных. Это привело к созданию SFXML (Simple Features XML) с участием Galdos, US Census и NTT Data. Galdos продемонстрировал ранний движок в стиле карты, извлекающий данные из сервера данных "GML" на базе Oracle (предшественника WFS) на первом испытательном стенде OGC Web Map в сентябре 1999 года. В октябре 1999 года Galdos Systems переписала черновик документа SFXML в Request for Comment и изменила название языка на GML (Geography Markup Language). Этот документ представил несколько ключевых идей, которые стали основой GML, включая 1) правило Object-Property-Value, 2) удаленные свойства (через rdf:resource) и 3) решение использовать схемы приложений вместо набора статических схем. В статье также предлагалось, чтобы язык основывался на Resource Description Framework (RDF), а не на DTD, используемых до этого момента. Эти вопросы, включая использование RDF, горячо обсуждались в сообществе OGC в 1999 и 2000 годах, в результате чего окончательный GML Recommendation Paper содержал три профиля GML — два на основе DTD и один на RDF — с одним из DTD, использующим подход статической схемы. Это было принято как Recommendation Paper на OGC в мае 2000 года. [14]
Еще до принятия документа с рекомендациями в OGC Галдос начал работу над версией XML-схемы GML, заменив схему rdf:resource для удаленных ссылок на использование xlink:href и разработав специальные шаблоны (например, Barbarians at the Gate) для обработки расширений для сложных структур, таких как коллекции признаков. Большая часть работы по проектированию XML-схемы была проделана г-ном Ричардом Мартеллом из Галдоса, который был редактором документов и в основном отвечал за перевод базовой модели GML в XML-схему. Другие важные вклады в этот период внесли Саймон Кокс (CSIRO Australia), Пол Дейзи (US Census), Дэвид Бургграф (Galdos) и Адриан Катберт (Laser-Scan). Инженерный корпус армии США (особенно Джефф Харрисон) весьма поддерживал разработку GML. Корпус инженеров армии США спонсировал проект «USL Pilot», который был очень полезен для изучения полезности концепций связывания и стилизации в спецификации GML, при этом важную работу проделали Мони (Ionic) и Ся Ли (Galdos). Проект спецификации XML Schema был представлен Galdos и был одобрен для публичного распространения в декабре 2000 года. Он стал рекомендательным документом в феврале 2001 года и принятой спецификацией в мае того же года. Эта версия (V2.0) исключила «профили» из версии 1 и установила ключевые принципы, изложенные в исходном представлении Galdos, в качестве основы GML.
По мере развития этих событий в Японии параллельно продолжалась работа над G-XML под эгидой Японского центра содействия базам данных под руководством г-на Шиге Кавано. G-XML и GML различались в нескольких важных аспектах. Нацеленный на приложения LBS, G-XML использовал много конкретных географических объектов (например, Mover, POI), в то время как GML предоставлял очень ограниченный конкретный набор и создавал более сложные объекты с использованием схем приложений. В этот момент времени G-XML все еще был написан с использованием DTD, в то время как GML уже перешел на схему XML. С одной стороны, G-XML требовал использования многих фундаментальных конструкций, отсутствовавших в то время в лексиконе GML, включая временность, пространственные ссылки по идентификаторам, объекты с историей и концепцию топологического стиля. С другой стороны, GML предлагал ограниченный набор примитивов (геометрия, элемент) и рецепт для построения определяемых пользователем типов объектов (элементов).
Ряд встреч, проведенных в Токио в январе 2001 года, в которых участвовали Рон Лейк (Galdos), Ричард Мартелл (Galdos), сотрудники OGC (Курт Бюлер, Дэвид Шелл), г-н Шиге Кавано (DPC), г-н Акифуми Накаи (NTT Data) и д-р Шимада (Hitachi CRL), привели к подписанию меморандума о взаимопонимании между DPC и OGC, в соответствии с которым OGC попытается внедрить основные элементы, необходимые для поддержки G-XML, в GML, что позволит записать G-XML как схему приложения GML. Это привело к появлению множества новых типов, входящих в основной список объектов GML, включая наблюдения, динамические функции, временные объекты, стили по умолчанию, топологию и точки зрения. Большая часть работы была выполнена Галдосом по контракту с NTT Data. Это заложило основу для GML 3, хотя в этот период времени произошло значительное новое развитие, а именно пересечение OGC и ISO/TC 211 .
Хотя для большинства новых объектов, представленных соглашением GML/G-XML, и для некоторых представленных Галдосом в рамках процесса OGC (особенно покрытий) существовало базовое кодирование, вскоре стало очевидно, что лишь немногие из этих кодирований соответствовали абстрактным спецификациям, разработанным ISO TC/211, спецификациям, которые все больше становились основой для всех спецификаций OGC. Например, геометрия GML была основана на более ранней и лишь частично задокументированной геометрической модели (геометрия простых объектов), и этого было недостаточно для поддержки более обширных и сложных геометрий, описанных в TC/211. Управление разработкой GML также было изменено в этот период с участием многих других лиц. Значительный вклад в этот период внесли Милан Трнинич (Galdos) (стили по умолчанию, CRS), Рон Лейк (Galdos) (наблюдения), Ричард Мартелл (Galdos) (динамические объекты).
12 июня 2002 года г-н Рон Лейк был отмечен OGC за свою работу по созданию GML, получив премию Гардельса. [15] В цитате на награде говорится: «В частности, эта награда признает ваши большие достижения в создании языка географической разметки (GML) и вашу уникальную чувствительную и эффективную работу по содействию примирению национальных различий для содействия значимой стандартизации GML на глобальном уровне». Саймон Кокс (CSIRO) [16] и Клеменс Портеле (Interactive Instruments) [17] также впоследствии получили премию Гардельса, отчасти за их вклад в GML.
Открытый геопространственный консорциум ( OGC) — это международная добровольная организация по консенсусным стандартам, члены которой поддерживают стандарт Geography Markup Language . OGC координирует работу с организацией по стандартизации ISO TC 211 для поддержания согласованности между работой по стандартам OGC и ISO. GML был принят в качестве международного стандарта (ISO 19136:2007) в 2007 году.
GML может [ необходимо разъяснение ] также быть включен в версию 2.1 Национальной модели обмена информацией США (NIEM).
ISO 19136 Географическая информация – Язык географической разметки – стандарт из семейства ISO – стандартов географической информации (ISO 191xx). Он появился в результате объединения определений Открытого геопространственного консорциума и языка географической разметки (GML) со стандартами ISO-191xx.
Более ранние версии GML не были совместимы с ISO (GML 1, GML 2) с GML версии 3.1.1. Соответствие ISO означает, в частности, что GML теперь также является реализацией ISO 19107 .
Язык географической разметки (GML) — это кодировка XML в соответствии с ISO 19118 для транспортировки и хранения географической информации, смоделированной в соответствии с концептуальной структурой моделирования, используемой в серии ISO 19100 , и включающей как пространственные, так и непространственные свойства географических объектов. Эта спецификация определяет синтаксис, механизмы и соглашения XML- схемы, которые: