2014-09-20 10 views
0

Я хочу импортировать файл osm в matlab. Для этого я прочитал функции OpenStreetMap от Ioannis Filippidis.Импорт файла 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); 

Затем я прочитал различные комментарии из этой страницы и Google, а затем я попытался следующие

1) Я извлек файл меньшего размера карты от www.openstreetmap.org, даже ошибка такая же.

2) изменил путь, даже появляется ошибка.

Просьба предложить и помочь мне плз.

+1

Вы пытались связаться с Ioannis Filippidis? – scai

ответ

3

Полученное сообщение об ошибке указывает, что вам не хватает файла, в частности xml2struct_fex28518.

Некоторых рытье на GitHub проекта в history функции метания ошибки (load_osm_xml), показывает, что недостающая функция была переименована из xml2struct, чтобы избежать конфликта с другими, официальным, инструментами.

Указанное копание также выявило наличие и требование набора зависимостей, которые могут быть найдены на releases page проекта.

Зайдите в архив dependencies.tar, распакуйте его и добавьте в него путь MatLab, и он должен работать нормально.

+0

@ Ioannis Filippidis может стоить рассматривать подход пакета/пространства имен вместо того, чтобы переименовывать такие функции! –

+1

@ Tasos Papastylianou: Я полностью согласен с тем, что пространства имен являются хорошим подходом к этой проблеме. Поскольку [PEP 20] (https://www.python.org/dev/peps/pep-0020/) указывает, что «Пространства имен - одна отличная идея, давайте сделаем больше!». В последние несколько лет я работал с Python и не использовал MATLAB. Одной из основных причин возникновения этой ситуации является отсутствие организации, аналогичной PyPI (может быть, неверно, если с тех пор развивались вещи). Эта проблема будет эквивалентна новому стандартному библиотечному модулю, названному по имени существующего в PyPI, вместо использования пространства имен «bioinformatics». –

+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 »в коде. –