You are not logged in.
- Topics: Active | Unanswered
Announcement
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***
#6151 2014-04-24 16:42:31
- Kostik
- Member

- From: Moscow
- Registered: 2011-01-02
- Posts: 2,114
Re: Конвертация OSM в Navitel
Zverik, Могу. Но жду пока поднимут нормальные выгрузки на гислабе. Да и границы поправят. Хотя как на переходный момент сам подумывал так сделать. Но опять таки только в ручном режиме.
Offline
#6152 2014-04-27 18:08:18
- zdforum
- Member

- From: Пермский край
- Registered: 2010-02-04
- Posts: 373
- Website
Re: Конвертация OSM в Navitel
zdforum wrote:Пермский край
ПРЕДУПРЕЖДЕНИЕ: В карте содержится слишком много объектов. Пожалуйста, разрежьте карту на меньшие части. ОШИБКА: Экспорт не удался.Тажа самая проблема что и с Карелией. Надо резать на части.
сделали ведь и не разрезая на части
Last edited by zdforum (2014-04-27 18:08:46)
Offline
#6153 2014-04-27 21:34:09
- Kostik
- Member

- From: Moscow
- Registered: 2011-01-02
- Posts: 2,114
Re: Конвертация OSM в Navitel
сделали ведь и не разрезая на части
Ага. Скачал. В GME генерализовал и отконвертировав залил. Я так делать могу... иногда, но не всегда.
PS: Почему то скрипт CompressMP.vbs работающий у меня локально с теми же скриптами, на сервере не отрабатывает.
Last edited by Kostik (2014-04-27 21:35:38)
Offline
#6154 2014-04-28 05:53:15
- chnav
- Member

- From: Russia, mapping Kazakhstan
- Registered: 2010-03-18
- Posts: 3,303
Re: Конвертация OSM в Navitel
zdforum wrote:сделали ведь и не разрезая на части
Ага. Скачал. В GME генерализовал и отконвертировав залил. Я так делать могу... иногда, но не всегда.
PS: Почему то скрипт CompressMP.vbs работающий у меня локально с теми же скриптами, на сервере не отрабатывает.
А что за CompressMP.vbs, где можно посмотреть ? Под GME сложно писать скрипты, никакой документации нет. Вот и собираю всё что работает, чтобы потом разбираться на примерах.
Offline
#6155 2014-04-28 06:14:44
- Kostik
- Member

- From: Moscow
- Registered: 2011-01-02
- Posts: 2,114
Re: Конвертация OSM в Navitel
CompressMP.vbs Делает генерализацию и ещё что то. Файл становится значительно меньше по размеру.
Option Explicit
Dim a
Set a = CreateObject ("GPSMapEdit.Application.1")
a.MinimizeWindow
Dim fso
Set fso = CreateObject ("Scripting.FileSystemObject")
Dim strRoot
strRoot = fso.GetAbsolutePathName (WScript.ScriptFullName + "\..\")
Dim pMapsFolder
Set pMapsFolder = fso.GetFolder (strRoot)
Dim pFile
For Each pFile In pMapsFolder.Files
Dim strExt
strExt = LCase (fso.GetExtensionName (pFile.Path))
If strExt = "img" Or strExt = "ntm" Or strExt = "rus" Or strExt = "mp" Then
a.Open pFile.Path, False
Dim strOutFile
strOutFile = fso.GetParentFolderName(pFile.Path) + "\" + fso.GetBaseName (pFile.Path) + ".mp"
a.SaveAs strOutFile, "polish"
End if
Next
a.ExitОбрабатывает все файлы в папке в которой был запущен. Т.е. нельзя сказать из командной строки обработать конкретный файл. Если кто доработает, то это решило бы некоторые проблемы.
Offline
#6156 2014-04-28 06:48:25
- freeExec
- Moderator
- From: Ульяновск,Модератор всех слоёв
- Registered: 2012-07-31
- Posts: 8,547
Re: Конвертация OSM в Navitel
Возможно так
Option Explicit
Dim a
Set a = CreateObject ("GPSMapEdit.Application.1")
a.MinimizeWindow
Dim fso
Set fso = CreateObject ("Scripting.FileSystemObject")
Dim strRoot
strRoot = fso.GetAbsolutePathName (WScript.ScriptFullName + "\..\")
Set objArgs = WScript.Arguments
Dim pFile_Path = objArgs(0)
Dim strExt
strExt = LCase (fso.GetExtensionName (pFile_Path))
If strExt = "img" Or strExt = "ntm" Or strExt = "rus" Or strExt = "mp" Then
a.Open pFile.Path, False
Dim strOutFile
strOutFile = fso.GetParentFolderName(pFile_Path) + "\" + fso.GetBaseName (pFile_Path) + ".mp"
a.SaveAs strOutFile, "polish"
End if
a.ExitOffline
#6157 2014-04-28 07:01:45
- Monitor
- Member
- From: Нижний Новгород
- Registered: 2010-03-01
- Posts: 206
Re: Конвертация OSM в Navitel
CompressMP.vbs Делает генерализацию и ещё что то. Файл становится значительно меньше по размеру.
Скорее всего этот скрипт только открывает и заново записывает файл в mp. В результате убираются лишние пробелы и др. символы которые не нужны mp формата. Но генерализация не проводиться и размер nm2 остается таким же.
Провел опыт:
взял файл нижегородской области, mp 134Мб конвертировал в nm2 получилось 18.4М
запустил CompressMp, mp стал 107Мб , nm2 не изменился 18.4М
провел вручную генерализацию, mp стал 100Мб, nm2 получился 18.1 М
Offline
#6158 2014-04-28 07:11:14
- chnav
- Member

- From: Russia, mapping Kazakhstan
- Registered: 2010-03-18
- Posts: 3,303
Re: Конвертация OSM в Navitel
провел вручную генерализацию, mp стал 100Мб, nm2 получился 18.1 М
Найти бы как это сделать в скрипте, какая функция за это отвечает. Но скорее всего будет работать только на лицензионном GME.
Last edited by chnav (2014-04-28 07:11:43)
Offline
#6159 2014-04-28 07:19:55
- Monitor
- Member
- From: Нижний Новгород
- Registered: 2010-03-01
- Posts: 206
Re: Конвертация OSM в Navitel
http://forum.navitel.ru/index.php?showt … ntry187088
Last edited by Monitor (2014-04-28 07:22:54)
Offline
#6160 2014-04-28 07:55:30
- Kostik
- Member

- From: Moscow
- Registered: 2011-01-02
- Posts: 2,114
Re: Конвертация OSM в Navitel
Но скорее всего будет работать только на лицензионном GME.
На сервере лицензионный GME, сами же тут скидывались на обновлении лицензии не так давно.
За генерализацию отвечает метод GeneralizeNodesOfPolylinesAndPolygons() COM-интерфейса IEdit (он доступен только при наличии лицензионного ключа).
И как это должно выглядеть в vbs скрипте?
Last edited by Kostik (2014-04-28 08:02:14)
Offline
#6161 2014-04-28 09:11:32
- Monitor
- Member
- From: Нижний Новгород
- Registered: 2010-03-01
- Posts: 206
Re: Конвертация OSM в Navitel
Добавить строки перед сохранением файла
Dim e
Set e = a.Edit
e.GeneralizeNodesOfPolylinesAndPolygons()У меня сразу в файле конвертации прописаны https://www.dropbox.com/s/e7727zktuprnc … tToNm2.vbs
Offline
#6162 2014-04-28 14:07:05
- Kostik
- Member

- From: Moscow
- Registered: 2011-01-02
- Posts: 2,114
Re: Конвертация OSM в Navitel
У меня сразу в файле конвертации прописаны
На сервере используется скрипт mp2nm2.vbs, пока что с ходу не понял куда этот код добавить.
Offline
#6163 2014-04-28 14:13:46
- freeExec
- Moderator
- From: Ульяновск,Модератор всех слоёв
- Registered: 2012-07-31
- Posts: 8,547
Re: Конвертация OSM в Navitel
пока что с ходу не понял куда этот код добавить.
перед - a.SaveAs strOutFile, "polish"
Offline
#6164 2014-04-28 14:23:53
- Kostik
- Member

- From: Moscow
- Registered: 2011-01-02
- Posts: 2,114
Re: Конвертация OSM в Navitel
перед - a.SaveAs strOutFile, "polish"
Там такого нет, вот текст скрипта.
Offline
#6165 2014-04-28 14:28:16
- freeExec
- Moderator
- From: Ульяновск,Модератор всех слоёв
- Registered: 2012-07-31
- Posts: 8,547
Re: Конвертация OSM в Navitel
После этого
'Export to nm2
if scrKey ="-NOVERIFY" or scrKey = "" then
if tmpNavitel = -1 then
dim nm2Path
nm2Path = mapFolder+mapName+".nm2"
On Error Resume Next
Err.ClearНу это если без всякого извращения с возможными ошибками и их обработкой
Last edited by freeExec (2014-04-28 14:29:18)
Offline
#6166 2014-04-28 16:21:02
- Kostik
- Member

- From: Moscow
- Registered: 2011-01-02
- Posts: 2,114
Re: Конвертация OSM в Navitel
freeExec
'Export to nm2
if scrKey ="-NOVERIFY" or scrKey = "" then
if tmpNavitel = -1 then
dim nm2Path
nm2Path = mapFolder+mapName+".nm2"
On Error Resume Next
Err.Clear
Dim e
Set e = a.Edit
e.GeneralizeNodesOfPolylinesAndPolygons()
GME.SaveAs nm2Path, "navitel-nm2"
On Error GoTo 0
if fso.FileExists(nm2Path) then
' call LogMsg("Exported file: "&nm2Path)
else
' call LogMsg("File: "&nm2Path&" does't exported. Use VerifyMap.")
end if
End If
End if
GME.ExitНа выходе файл не генерализованый получается.
Offline
#6167 2014-04-28 16:35:07
- freeExec
- Moderator
- From: Ульяновск,Модератор всех слоёв
- Registered: 2012-07-31
- Posts: 8,547
Re: Конвертация OSM в Navitel
Dim e
Set e = a.Edit
e.GeneralizeNodesOfPolylinesAndPolygons()
GME.GeneralizeNodesOfPolylinesAndPolygons()
Offline
#6168 2014-04-28 18:50:42
- edward17
- Member
- Registered: 2013-08-26
- Posts: 1,849
- Website
Re: Конвертация OSM в Navitel
GME.GeneralizeNodesOfPolylinesAndPolygons()
Это удаляет точки для упрощения карты? А можно ли их не удалять, а то карта выглядит как-то "криво". Или это из-за округления координат точек? В таком случае, можно ли их не округлять, чтобы квадратные здания были квадратами, а не четырёхугольниками? Неужели размер карты очень сильно увеличится?
Все жители частного сектора, вешающие таблички с названием улицы и номером дома, попадают в рай без очереди.
Offline
#6169 2014-04-28 19:39:32
- chnav
- Member

- From: Russia, mapping Kazakhstan
- Registered: 2010-03-18
- Posts: 3,303
Re: Конвертация OSM в Navitel
freeExec wrote:GME.GeneralizeNodesOfPolylinesAndPolygons()
Это удаляет точки для упрощения карты? А можно ли их не удалять, а то карта выглядит как-то "криво". Или это из-за округления координат точек? В таком случае, можно ли их не округлять, чтобы квадратные здания были квадратами, а не четырёхугольниками? Неужели размер карты очень сильно увеличится?
Нет, кривые здания от притягивания координат к сетке. При 26 бит сетка мелкая, при 24 - крупная (зато выходной nm2 меньше размером).
Генерализация, которая указана как функция выше, удаляет лишние точки в линиях. Видели наверное дороги, сконвертированные из треков ? Вот они прореживаются в полише.
Last edited by chnav (2014-04-28 19:41:55)
Offline
#6170 2014-04-28 20:24:33
- Kostik
- Member

- From: Moscow
- Registered: 2011-01-02
- Posts: 2,114
Re: Конвертация OSM в Navitel
freeExec
'Export to nm2
if scrKey ="-NOVERIFY" or scrKey = "" then
if tmpNavitel = -1 then
dim nm2Path
nm2Path = mapFolder+mapName+".nm2"
On Error Resume Next
Err.Clear
GME.GeneralizeNodesOfPolylinesAndPolygons()
GME.SaveAs nm2Path, "navitel-nm2"
On Error GoTo 0
if fso.FileExists(nm2Path) then
' call LogMsg("Exported file: "&nm2Path)
else
' call LogMsg("File: "&nm2Path&" does't exported. Use VerifyMap.")
end if
End If
End if
GME.ExitТоже самое. На выходе файл не генерализованый получается.
Offline
#6171 2014-04-28 20:42:14
- edward17
- Member
- Registered: 2013-08-26
- Posts: 1,849
- Website
Re: Конвертация OSM в Navitel
Нет, кривые здания от притягивания координат к сетке. При 26 бит сетка мелкая, при 24 - крупная (зато выходной nm2 меньше размером)
И насколько сильно это уменьшение размера? Я лично готов скачивать карту большего размера. В идеале, хотелось бы иметь 2 версии nm2 карты: большая и красивая (26 бит) и маленькая, но некрасивая (24 бит). Но это пока только просьба.
Все жители частного сектора, вешающие таблички с названием улицы и номером дома, попадают в рай без очереди.
Offline
#6172 2014-04-28 21:10:46
- Kostik
- Member

- From: Moscow
- Registered: 2011-01-02
- Posts: 2,114
Re: Конвертация OSM в Navitel
большая и красивая (26 бит)
Я для 7дорог только в 26бит и собираю, для Навитела это не прокатит. Упрёмся в:
ПРЕДУПРЕЖДЕНИЕ: В карте содержится слишком много объектов. Пожалуйста, разрежьте карту на меньшие части.
ОШИБКА: Экспорт не удался.Offline
#6173 2014-04-28 21:23:03
- edward17
- Member
- Registered: 2013-08-26
- Posts: 1,849
- Website
Re: Конвертация OSM в Navitel
edward17 wrote:большая и красивая (26 бит)
Я для 7дорог только в 26бит и собираю, для Навитела это не прокатит. Упрёмся в:
ПРЕДУПРЕЖДЕНИЕ: В карте содержится слишком много объектов. Пожалуйста, разрежьте карту на меньшие части. ОШИБКА: Экспорт не удался.
Да... Резать область на части - уже извращение. То есть, на данный момент решения нет. Обидно
Все жители частного сектора, вешающие таблички с названием улицы и номером дома, попадают в рай без очереди.
Offline
#6174 2014-04-29 05:24:11
- freeExec
- Moderator
- From: Ульяновск,Модератор всех слоёв
- Registered: 2012-07-31
- Posts: 8,547
Re: Конвертация OSM в Navitel
Попробуй так и на этом я сдаюсь.
'Export to nm2
if scrKey ="-NOVERIFY" or scrKey = "" then
if tmpNavitel = -1 then
dim nm2Path
nm2Path = mapFolder+mapName+".nm2"
On Error Resume Next
Err.Clear
Dim edit
Set edit = GME.Edit
edit.GeneralizeNodesOfPolylinesAndPolygons()
GME.SaveAs nm2Path, "navitel-nm2"
On Error GoTo 0
if fso.FileExists(nm2Path) then
' call LogMsg("Exported file: "&nm2Path)
else
' call LogMsg("File: "&nm2Path&" does't exported. Use VerifyMap.")
end if
End If
End if
GME.ExitOffline
#6175 2014-04-29 06:23:21
- Kostik
- Member

- From: Moscow
- Registered: 2011-01-02
- Posts: 2,114
Re: Конвертация OSM в Navitel
Попробуй так и на этом я сдаюсь.
К сожалению, не генерализует. Но на сервере сработал CompressMP.vbs с добавленными строчками генерализации. Но как выяснилось этого мало (для Карелии по крайней мере), нужно ещё "Удалять дупликаты объектов":
Может кому то попадалось как это делать пакетно?
Offline