XML 导入 INSPIRE GIS 数据层
XML Import INSPIRE GIS Data Layer
我有一个非常具体的数据导入问题,我对 XML 数据集还很陌生,所以我的问题可能是由于我缺乏理解。我想阅读 Deutsche Bahn 的德国轨道网络,它在此处公开发布:http://data.deutschebahn.com/dataset/data-streckennetz(不幸的是,link 在德国)
这将是直接的 link:http://download-data.deutschebahn.com/static/datasets/streckennetz/INSPIRE_0618.zip
关于 INSPIRE 数据集还有一个 link 到 200 页的文档,但它并不能真正帮助我理解解析 XML 文档。 https://inspire.ec.europa.eu/documents/Data_Specifications/INSPIRE_DataSpecification_TN_v3.0.pdf
在 中,我得到了如何使用包 sf
读取图层的答案
sf::st_layers("./DB-Netz_INSPIRE_20171116.xml")
nodes <- sf::st_read("./DB-Netz_INSPIRE_20171116.xml","RailwayNode")
除了一个 "RailwayLinkSequence"
之外的所有层都有效
Link_Sequence<- sf::st_read("./DB-Netz_INSPIRE_20171116.xml","RailwayLinkSequence")
哪个returns
Reading layer `RailwayLinkSequence' from data source `J:\Auswertungen Daten\R Beispiele\GIS Data\DB_Inspire_XML_2015\DB-Netz_INSPIRE_20171116.xml' using driver `GML'
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, :
arguments imply differing number of rows: 1, 6, 5, 28, 99, 2, 19, 41, 11, 3, 65, 7, 4, 22, 20, 17, 38, 9, 15, 8, 13, 24, 49, 14, 42, 36, 51, 31, 12, 25, 60, 10, 18, 48, 104, 53, 23, 16, 26, 32, 119, 40, 47, 37, 21, 44, 39, 43, 52, 46, 27, 30, 63, 81, 54, 61, 59, 34, 35, 45, 56, 108, 64, 62, 68, 67, 57, 80, 55, 29, 123, 88, 85, 33, 50, 96, 66, 79, 115
In addition: Warning message:
no simple feature geometries present: returning a data.frame or tbl_df
有人知道为什么 st_read
无法读入这一层吗?
使用 xml2
包:
> library(xml2)
读取文件:
> x= read_xml("./DB-Netz_INSPIRE_20171116.xml")
查找默认 (d1
) 命名空间中的所有 RLS:
> f = xml_find_all(x, ".//d1:RailwayLinkSequence")
看其中一个:
> f[123]
{xml_nodeset (1)}
[1] <RailwayLinkSequence gml:id="LSeq-1829209">\n <gml:identifier codeSpace= ...
有多少人?
> length(f)
[1] 7072
第 123 个 RLS 的 localId
值是多少?
> xml_find_all(f[123], ".//base:localId")
{xml_nodeset (1)}
[1] <base:localId>LSeq-1829209</base:localId>
此 RLS 中包含哪些 DirectedLink 对象:
> xml_find_all(f[123], ".//net:DirectedLink")
{xml_nodeset (36)}
[1] <net:DirectedLink>\n <net:direction>+</net:direction>\n <net:link xlin ...
[2] <net:DirectedLink>\n <net:direction>+</net:direction>\n <net:link xlin ...
[3] <net:DirectedLink>\n <net:direction>+</net:direction>\n <net:link xlin ...
[4] <net:DirectedLink>\n <net:direction>+</net:direction>\n <net:link xlin ...
[5] <net:DirectedLink>\n <net:direction>+</net:direction>\n <net:link xlin ...
[...]
了解更多关于 XML 使用 xml2
解析的信息,您将必须弄清楚如何提取您需要的部分以用于您自己的目的。但我希望这会有所帮助。
我有一个非常具体的数据导入问题,我对 XML 数据集还很陌生,所以我的问题可能是由于我缺乏理解。我想阅读 Deutsche Bahn 的德国轨道网络,它在此处公开发布:http://data.deutschebahn.com/dataset/data-streckennetz(不幸的是,link 在德国)
这将是直接的 link:http://download-data.deutschebahn.com/static/datasets/streckennetz/INSPIRE_0618.zip
关于 INSPIRE 数据集还有一个 link 到 200 页的文档,但它并不能真正帮助我理解解析 XML 文档。 https://inspire.ec.europa.eu/documents/Data_Specifications/INSPIRE_DataSpecification_TN_v3.0.pdf
在 sf
sf::st_layers("./DB-Netz_INSPIRE_20171116.xml")
nodes <- sf::st_read("./DB-Netz_INSPIRE_20171116.xml","RailwayNode")
除了一个 "RailwayLinkSequence"
之外的所有层都有效Link_Sequence<- sf::st_read("./DB-Netz_INSPIRE_20171116.xml","RailwayLinkSequence")
哪个returns
Reading layer `RailwayLinkSequence' from data source `J:\Auswertungen Daten\R Beispiele\GIS Data\DB_Inspire_XML_2015\DB-Netz_INSPIRE_20171116.xml' using driver `GML'
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, :
arguments imply differing number of rows: 1, 6, 5, 28, 99, 2, 19, 41, 11, 3, 65, 7, 4, 22, 20, 17, 38, 9, 15, 8, 13, 24, 49, 14, 42, 36, 51, 31, 12, 25, 60, 10, 18, 48, 104, 53, 23, 16, 26, 32, 119, 40, 47, 37, 21, 44, 39, 43, 52, 46, 27, 30, 63, 81, 54, 61, 59, 34, 35, 45, 56, 108, 64, 62, 68, 67, 57, 80, 55, 29, 123, 88, 85, 33, 50, 96, 66, 79, 115
In addition: Warning message:
no simple feature geometries present: returning a data.frame or tbl_df
有人知道为什么 st_read
无法读入这一层吗?
使用 xml2
包:
> library(xml2)
读取文件:
> x= read_xml("./DB-Netz_INSPIRE_20171116.xml")
查找默认 (d1
) 命名空间中的所有 RLS:
> f = xml_find_all(x, ".//d1:RailwayLinkSequence")
看其中一个:
> f[123]
{xml_nodeset (1)}
[1] <RailwayLinkSequence gml:id="LSeq-1829209">\n <gml:identifier codeSpace= ...
有多少人?
> length(f)
[1] 7072
第 123 个 RLS 的 localId
值是多少?
> xml_find_all(f[123], ".//base:localId")
{xml_nodeset (1)}
[1] <base:localId>LSeq-1829209</base:localId>
此 RLS 中包含哪些 DirectedLink 对象:
> xml_find_all(f[123], ".//net:DirectedLink")
{xml_nodeset (36)}
[1] <net:DirectedLink>\n <net:direction>+</net:direction>\n <net:link xlin ...
[2] <net:DirectedLink>\n <net:direction>+</net:direction>\n <net:link xlin ...
[3] <net:DirectedLink>\n <net:direction>+</net:direction>\n <net:link xlin ...
[4] <net:DirectedLink>\n <net:direction>+</net:direction>\n <net:link xlin ...
[5] <net:DirectedLink>\n <net:direction>+</net:direction>\n <net:link xlin ...
[...]
了解更多关于 XML 使用 xml2
解析的信息,您将必须弄清楚如何提取您需要的部分以用于您自己的目的。但我希望这会有所帮助。