Импорт XML INSPIRE ГИС-данных - PullRequest
       13

Импорт XML INSPIRE ГИС-данных

0 голосов
/ 10 декабря 2018

У меня очень специфическая проблема импорта данных, и я довольно плохо знаком с наборами данных XML, поэтому мои проблемы, вероятно, связаны с моим отсутствием понимания.Я хотел бы прочитать в немецкой сети треков от Deutsche Bahn, которая опубликована здесь: http://data.deutschebahn.com/dataset/data-streckennetz (ссылка в Германии, к сожалению)

Это будет прямая ссылка: http://download -data.deutschebahn.com / static / datasets / streckennetz / INSPIRE_0618.zip

Существует также ссылка на 200-страничный документ о наборе данных INSPIRE, но это не очень помогает мнепонять синтаксический анализ документа XML.https://inspire.ec.europa.eu/documents/Data_Specifications/INSPIRE_DataSpecification_TN_v3.0.pdf

Я скачал файл в свой WD и попытался прочитать его, используя пакет XML

require(XML)
data <- xmlParse(file.path(Folder,data.file.import), useInternalNodes = FALSE)
root<-xmlRoot(data)
root_child<-xmlChildren(root)
First_child<-root_child[[1]]
xmlName(First_child)
xmlSize(First_child)
xmlAttrs(First_child)

Глядя на первое изображение, я вижу границы сети, я думаю

<wfs:boundedBy>
< gml:Envelope srsName="urn gc:def:crs:EPSG::4258" srsDimension="2">
< gml:lowerCorner>47.397789564359 6.021325139431</gml:lowerCorner>
< gml:upperCorner>54.907638367755 15.031955280103</gml:upperCorner>
< /gml:Envelope>
< /wfs:boundedBy>

Другие дети мне мало помогают.Второй - это список имен, а третий - сложный список.

Second_child<-root_child[[2]]
Second_child<-root_child[[3]]

Кто-нибудь может мне как-то помочь или указать ссылку, где я могу научиться разбирать это?

1 Ответ

0 голосов
/ 10 декабря 2018

Это файл GML, поэтому его можно прочитать с помощью драйверов OGR, встроенных в пакеты rgdal и sf.Следовательно:

> sf::st_layers("./DB-Netz_INSPIRE_20171116.xml")
Driver: GML 
Available layers:
               layer_name geometry_type features fields
1                 Network            NA        1     12
2     ConditionOfFacility            NA     7072     15
3              MarkerPost         Point    34325     11
4    TrafficFlowDirection            NA     7072     15
5        VerticalPosition            NA     1313     15
[etc]

Имеющиеся там пространственные данные (то есть слои с геометрическим типом, отличным от NA) могут быть прочитаны с помощью sf::st_read:

> nodes = sf::st_read("./DB-Netz_INSPIRE_20171116.xml","RailwayNode")
Reading layer `RailwayNode' from data source `/home/rowlings/Downloads/SO/train/DB-Netz_INSPIRE_20171116.xml' using driver `GML'
Simple feature collection with 21457 features and 20 fields
geometry type:  POINT
dimension:      XY
bbox:           xmin: 6.021325 ymin: 47.39779 xmax: 15.03196 ymax: 54.90462
epsg (SRID):    4258
proj4string:    +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs
> plot(nodes$geom)
> 

, что дает наборточки, которые я могу видеть, обрисовывают в общих чертах Германию.

Непространственные данные также могут быть прочитаны с помощью st_read и возвращает фрейм данных, когда это возможно:

> ds = sf::st_read("./DB-Netz_INSPIRE_20171116.xml","DesignSpeed")
Reading layer `DesignSpeed' from data source `/home/rowlings/Downloads/SO/train/DB-Netz_INSPIRE_20171116.xml' using driver `GML'
Warning message:
no simple feature geometries present: returning a data.frame or tbl_df 
> 

Я думаю, этоограничения скорости для различных участков рельса - вам придется искать метаданные, чтобы увидеть, как идентификаторы совпадают между таблицами, подобными этой, и географическими данными:

> head(ds)
       gml_id                    identifier applicableDirection fromPosition
1 Spd-2046676 urn:x-dbnetze:oid:Spd-2046676                <NA>            0
2 Spd-2046677 urn:x-dbnetze:oid:Spd-2046677                <NA>            0
3 Spd-2046678 urn:x-dbnetze:oid:Spd-2046678                <NA>            0
4 Spd-2046679 urn:x-dbnetze:oid:Spd-2046679                <NA>            0
5 Spd-2046680 urn:x-dbnetze:oid:Spd-2046680                <NA>            0
6 Spd-2046681 urn:x-dbnetze:oid:Spd-2046681                <NA>            0
[etc etc etc etc]     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...