XML导入INSPIRE GIS数据

最大M

我有一个非常具体的数据导入问题,而且我对XML数据集还很陌生,所以我的问题可能是由于我缺乏理解。我想阅读Deutsche Bahn的德语轨道网络,该网络已在此处公开发布:http//data.deutschebahn.com/dataset/data-streckennetz(不幸的是,链接在德国)

这将是直接链接:http : //download-data.deutschebahn.com/static/datasets/streckennetz/INSPIRE_0618.zip

还有一个指向INSPIRE数据集的200页文档的链接,但是它并不能真正帮助我理解解析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]]

谁能以某种方式帮助我或指向一个链接,让我可以学习如何解析此链接?

太空人

这是一个GML文件,因此可以由嵌入在rgdalsf包中的OGR驱动程序读取因此:

> 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 
> 

我想这是铁路各部分的速度限制-您必须查找元数据以查看ID在这样的表和地理数据之间如何匹配:

> 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]     

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章