В последнее время я занимался изучением структуры новой XML-схемы, утвержденной Минэконом России в целях понимания структуры GML-файлов, которыми должны быть представлены векторные карты, размещаемые на портале ФГИС ТП. В результате различных экспериментов, проверок как на локальном уровне, так и посредством загрузки материалов непосредственно на сайт ФГИС ТП через тестовую учетную запись, мной были сделан ряд выводов, которые излагаю ниже.
1. Структура векторных карт, подготавливаемых по актуальной XML-схеме, должна базироваться на спецификации GML версии 3.2. Ниже приведен фрагмент GML-файла, содержащий описание корневого элемента:
Код: Выделить всё
<gml:FeatureCollection
xmlns:gml="http://www.opengis.net/gml/3.2"
gml:id="aFeatureCollection"
xmlns="http://fgistp"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://fgistp https://fgistp.economy.gov.ru/panorama/schemas/xsddownload/fgistp-10-izm-698.xsd">
Необходимо отметить следующее:
- целевым пространством имен в соответствии с XML-схемой указывается
http://fgistp посредством атрибута xmlns; обратите внимание, что для целевого пространства имен не указывается префикс, а это означает, что все элементы, объявляемые внутри GML-файла и относящиеся к описанию атрибутивных данных объектов по 10-му приказу также должны указываться без префикса;
- атрибут gml:id является обязательным с точки зрения спецификации GML 3.2; стоит отметить, что тип данного атрибута объявлен как xsd:ID, что накладывает определенные ограничения на хранящееся в таком атрибуте значение (так значение атрибута должно начинаться с буквы или нижнего подчеркивания, может содержать буквы, цифры, символы "-" (дефис), "_" (нижнее подчеркивание), "." (точка) и должно быть уникальным в рамках одного GML-файла);
- атрибут xsi:schemaLocation содержит ссылку на xsd-файл схемы, по которой подготовлен GML-файл; обратите внимание, что значение данного атрибута принимает две строки, разделенные пробелом; первая строка - это целевое пространство имен, вторая - ссылка на xsd-файл (в качестве ссылки может быть указан как адрес в сети "Интернет", так и путь к локальному файлу внутри файловой системы); в данном случае указана ссылка на xsd-файл, опубликованный на сайте ФГИС ТП; таким образом осуществляется связь между пространством имен и физическим файлом XML-схемы.
2. Содержимое GML-файла представлено древовидной структурой, где внутри корневого элемента приводятся объекты, территории и зоны, описываемые в соответствии с 10-м приказом. В следующем примере приведено описание планируемого к размещению точечного объекта:
Код: Выделить всё
<gml:featureMember>
<Cemetery gml:id="Cemetery.0">
<GLOBALID>65aca98a-35e0-44c9-a931-1084a382a6ab</GLOBALID>
<CLASSID>602050301</CLASSID>
<NUMBER>1</NUMBER>
<NAME>Планируемое кладбище</NAME>
<OKTMO>60602425</OKTMO>
<ADDRESS>х.Киров</ADDRESS>
<CEMET_TYPE>1</CEMET_TYPE>
<CEMET_STYPE>4</CEMET_STYPE>
<CEMET_STAT>1</CEMET_STAT>
<HZRD_CLASS>5</HZRD_CLASS>
<AREA>0.2</AREA>
<EVENT_TIME>2029</EVENT_TIME>
<STATUS>2</STATUS>
<REG_STATUS>5</REG_STATUS>
<gml:MultiPoint srsName="EPSG:3857">
<gml:pointMember>
<gml:Point>
<gml:pos>4454834.79436124 6005760.60257584</gml:pos>
</gml:Point>
</gml:pointMember>
</gml:MultiPoint>
</Cemetery>
</gml:featureMember>
Здесь внутри элемента gml:featureMember приводится непосредственно описание объекта. Обратите внимание, что имя элемента, содержащего описание объекта, должно соответствовать кодовому описанию слоя в соответствии с 10-м приказом. Также важен и порядок следования элементов: сначала должны идти элементы, представляющие атрибутивное описание объекта, а затем описание геометрии. С точки зрения XML-схемы все атрибуты должны приводится в строгом порядке, то есть не допускается (опять же, с точки зрения XML-схемы) изменение порядка следования элементов (здесь стоит отметить, что в некоторых случаях порядок следования атрибутов в 10-м приказе и порядок следования соответствующих элементов в XML-схеме разнятся, например, в слое FunctionalZone). Для описания геометрии XML-схемой определены исключительно составные типы: для точечных объектов MultiPoint, для линейных - MultiCurve, для площадных - MultiSurface.
3. При загрузке материалов на сайт ФГИС ТП также было замечено, что система теперь действительно проверяет наличие у объектов необходимых условных атрибутов.
К данному сообщению прикрепляю архив с материалами, которые я загружал через тестовую учетную запись и которые прошли проверку в рамках форматно-логического контроля, то есть удалось пройти дальше этапа загрузки и проверки файлов. Эти материалы были составлены на базе реального проекта, присланного мне разработчиком для размещения на ФГИС ТП. Это неполный объем, так как в присланных GML-файлах было намешано несколько классов объектов, из-за чего схема атрибутов представляла из себя сборную солянку, пришлось впоследствии адаптировать часть данных под описанные выше требования. Для экономии времени обрабатывал лишь часть данных.
Надеюсь, изложенная информация и прикрепленные файлы смогут помочь в понимании структуры GML-файлов, ибо дождаться от Минэко адекватной документации на сей счет, боюсь, мы не сможем.
Еще раз отмечу: приведенные сведения основаны на моих личных выводах, сделанных в ходе изучения спецификаций XSD, GML и актуальной XML-схемы. Для локальной поверки GML-файлов я сейчас использую бесплатную программу под названием XML Copy Editor. Она позволяет осуществить валидацию GML-файла по XML-схеме на предмет наличия обязательных атрибутов, а также корректности значений, записанных в атрибуты.