Autodesk.Gis.Map.ImportExport.Importer.SetDriverOptions()

Автор Тема: Autodesk.Gis.Map.ImportExport.Importer.SetDriverOptions()  (Прочитано 3866 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн trirАвтор темы

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63
Пытаюсь вытащить дополнительные поля из tab'а
создал .ipf

Код - C# [Выбрать]
  1.         [CommandMethod("test2")]
  2.         public void test2()
  3.         {
  4.             Importer importer = HostMapApplicationServices.Application.Importer;
  5.             importer.Init("MITAB", @"D:\work\tab\roads  28-В-г.TAB");
  6.             importer.LoadImportFormat(@"D:\work\tab\test2.ipf");
  7.             NameValueCollection nwc = importer.DriverOptions();
  8.             foreach (InputLayer ilay in importer)
  9.             {
  10.                 ilay.SetDataMapping(ImportDataMapping.NewObjectDataOnly, "test1");
  11.             }
  12.             importer.Import();
  13.         }

всё работает
теперь пытаюсь обойтись без .ipf, вытащил параметры из .ipf

Код - C# [Выбрать]
  1.         [CommandMethod("test1")]
  2.         public void test1()
  3.         {
  4.             Importer importer = HostMapApplicationServices.Application.Importer;
  5.             importer.Init("MITAB", @"D:\work\tab\roads  28-В-г.TAB");
  6.             NameValueCollection nwc = importer.DriverOptions();
  7.             StringPair sp;
  8.             sp = new StringPair("META_MACROS", "SourceFME_TABLE_PASSWORD,,Source_MITAB_FULL_ENHANCED_GEOMETRY,YES,SourceENCODING,,SourceEXPOSE_ATTRS_GROUP,FME_DISCLOSURE_OPEN,SourceMITAB_EXPOSE_FORMAT_ATTRS,\"fme_basename, char(50) fme_color, char(50)\",SourceUSE_SEARCH_ENVELOPE,NO,SourceSEARCH_ENVELOPE_MINX,0,SourceSEARCH_ENVELOPE_MINY,0,SourceSEARCH_ENVELOPE_MAXX,0,SourceSEARCH_ENVELOPE_MAXY,0,SourceCLIP_TO_ENVELOPE,NO");
  9.             nwc.Add(sp);
  10.             sp = new StringPair("METAFILE", "MITAB");
  11.             nwc.Add(sp);
  12.             sp = new StringPair("RUNTIME_MACROS", "FME_TABLE_PASSWORD,,_MITAB_FULL_ENHANCED_GEOMETRY,YES,ENCODING,,EXPOSE_ATTRS_GROUP,FME_DISCLOSURE_OPEN,MITAB_EXPOSE_FORMAT_ATTRS,\"fme_basename, char(50) fme_color, char(50)\",USE_SEARCH_ENVELOPE,NO,SEARCH_ENVELOPE_MINX,0,SEARCH_ENVELOPE_MINY,0,SEARCH_ENVELOPE_MAXX,0,SEARCH_ENVELOPE_MAXY,0,CLIP_TO_ENVELOPE,NO,_MERGE_SCHEMAS,YES");
  13.             nwc.Add(sp);
  14.             importer.SetDriverOptions(ref nwc);
  15.            nwc = importer.DriverOptions();
  16.             foreach (InputLayer ilay in importer)
  17.             {
  18.                 ilay.SetDataMapping(ImportDataMapping.NewObjectDataOnly, "test1");
  19.             }
  20.             importer.Import();
  21.         }
не работает - доп атрибуты не появляются
что я делаю не так?
« Последнее редактирование: 07-08-2018, 10:00:53 от trir »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Autodesk.Gis.Map.ImportExport.Importer
« Ответ #1 : 05-08-2018, 21:53:11 »
всё работает
теперь пытаюсь обойтись без .ipf, вытащил параметры из .ipf
Попробуй распечатать importer.DriverOptions() после вызова importer.LoadImportFormat(@"D:\work\tab\test2.ipf");
Тогда ты должен увидеть какие пары в nwc ты должен будешь добавить. А то у меня впечатление, что ты используешь неправильный формат пар в варианте без .ipf
Или попробуй во втором своём коде вызвать Importer.SaveImportFormat и сравнить полученный файл .ipf с исходным.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение trir 07-08-2018, 09:59:33

Оффлайн trirАвтор темы

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63
Re: Autodesk.Gis.Map.ImportExport.Importer
« Ответ #2 : 06-08-2018, 09:46:39 »
Цитировать
fme_basename,_char(50)
проблема была в пробеле, не понял откуда он взялся  :-\ - это ведь былв копипаста из .ipf
кстати в GUI эти настройки из .ipf  не читаются

Итоговый вариант:
Код - C# [Выбрать]
  1.         [CommandMethod("test4")]
  2.         public void test4()
  3.         {
  4.             Importer importer = HostMapApplicationServices.Application.Importer;
  5.             importer.Init("MITAB", @"D:\work\tab\roads  28-В-г.TAB");
  6.             NameValueCollection nwc = importer.DriverOptions();
  7.             StringPair sp;
  8.             sp = new StringPair("META_MACROS", "SourceMITAB_EXPOSE_FORMAT_ATTRS,\"fme_basename,char(50) fme_color,char(50)\"");
  9.             nwc.Add(sp);
  10.             sp = new StringPair("METAFILE", "MITAB");
  11.             nwc.Add(sp);
  12.             sp = new StringPair("RUNTIME_MACROS", "MITAB_EXPOSE_FORMAT_ATTRS,\"fme_basename,char(50) fme_color,char(50)\"");
  13.             nwc.Add(sp);
  14.             importer.SetDriverOptions(ref nwc);
  15.             foreach (InputLayer ilay in importer)
  16.             {
  17.                 ilay.SetDataMapping(ImportDataMapping.NewObjectDataOnly, "test2");
  18.             }
  19.             importer.Import();
  20.         }
« Последнее редактирование: 07-08-2018, 09:59:14 от trir »