2014-09-20 451 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