2014-09-20 230 views
0

我想将osm文件导入到matlab中。为此,我阅读Ioannis Filippidis的OpenStreetMap函数 。将osm文件导入到matlab中

我开始usage_example但follwoing错误出现

usage_example 
Undefined function 'xml2struct_fex28518' for input arguments 
of type 'char'. 

Error in load_osm_xml (line 27) 
map_osm = xml2struct_fex28518(filename); % downloaded osm 
file 

Error in parse_openstreetmap (line 36) 
map_osm = load_osm_xml(openstreetmap_filename); 

Error in usage_example (line 28) 
[parsed_osm, osm_xml] = 
parse_openstreetmap(openstreetmap_filename); 

然后我读了该网页,谷歌的各种意见,然后我尝试以下

1)我从提取的小地图文件www.openstreetmap.org,甚至错误是一样的。

2)改变了路径,甚至出现错误。

请建议并帮助我PLZ。

+1

您是否尝试联系Ioannis Filippidis? – scai 2014-09-20 07:34:46

回答

3

你得到的错误信息表明你缺少一个文件,特别是xml2struct_fex28518

对项目的GitHub上挖一些在函数引发错误(load_osm_xml)的history,显示缺少的功能是从xml2struct改名为避免与其他官方,工具箱冲突。

说挖也揭示了一系列依赖项的存在和要求,可以在项目的releases page找到。

去抢dependencies.tar文件,解压缩并将它添加到你的MatLab路径,它应该工作正常。

+0

@Ianannis Filippidis可能值得考虑一个包/名称空间方法,而不必重命名这样的函数! – 2016-09-09 22:35:35

+1

@Tasos Papastylianou:我完全同意名称空间是解决这类问题的好方法。正如[PEP 20](https://www.python.org/dev/peps/pep-0020/)所说的那样:“命名空间是一个好主意 - 让我们做更多这些!”。在过去的几年中,我一直在使用Python,并没有使用MATLAB。这种情况出现的主要原因之一是缺乏与PyPI相似的组织(如果事情自从演变以来可能是错误的)。这个问题相当于一个新的标准库模块,它以PyPI上现有的模块命名,而不是使用命名空间'bioinformatics'。 – 2016-09-10 23:07:35

+0

这在一定程度上是正确的,但同时“包”(不要与“工具箱”混淆)[matlab中的更低级别](http://uk.mathworks.com/help/matlab/ matlab_oop/scoping-classes-with-packages.html),所以在这种情况下事情要简单得多。如果你有一个像这样的文件夹定义的函数:'/ root/+ MyPackage/myfunction.m',那么你可以像这样调用/ root的函数:'MyPackage.myfunction()'。我建议的不是将xml2struct重命名为xml2struct_blabla,而是简单地将它放在“+ OSM”文件夹中,并在代码中将其命名为“OSM.xml2struct”。 – 2016-09-10 23:17:01