You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
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

Kostik wrote:
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

zdforum wrote:

сделали ведь и не разрезая на части

Ага. Скачал. В 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

Kostik wrote:
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.Exit

Offline

#6157 2014-04-28 07:01:45

Monitor
Member
From: Нижний Новгород
Registered: 2010-03-01
Posts: 206

Re: Конвертация OSM в Navitel

Kostik wrote:

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

Monitor wrote:

провел вручную генерализацию, 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

chnav wrote:

Но скорее всего будет работать только на лицензионном 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

Monitor wrote:

У меня сразу в файле конвертации прописаны

На сервере используется скрипт mp2nm2.vbs, пока что с ходу не понял куда этот код добавить.

Offline

#6163 2014-04-28 14:13:46

freeExec
Moderator
From: Ульяновск,Модератор всех слоёв
Registered: 2012-07-31
Posts: 8,547

Re: Конвертация OSM в Navitel

Kostik wrote:

пока что с ходу не понял куда этот код добавить.

перед - 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

freeExec wrote:

перед - 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

freeExec wrote:

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

edward17 wrote:
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

chnav wrote:

Нет, кривые здания от притягивания координат к сетке. При 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

edward17 wrote:

большая и красивая (26 бит)

Я для 7дорог только в 26бит и собираю, для Навитела это не прокатит. Упрёмся в:

ПРЕДУПРЕЖДЕНИЕ: В карте содержится слишком много объектов. Пожалуйста, разрежьте карту на меньшие части.

ОШИБКА: Экспорт не удался.

Offline

#6173 2014-04-28 21:23:03

edward17
Member
Registered: 2013-08-26
Posts: 1,849
Website

Re: Конвертация OSM в Navitel

Kostik wrote:
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.Exit

Offline

#6175 2014-04-29 06:23:21

Kostik
Member
From: Moscow
Registered: 2011-01-02
Posts: 2,114

Re: Конвертация OSM в Navitel

freeExec wrote:

Попробуй так и на этом я сдаюсь.

К сожалению, не генерализует. Но на сервере сработал CompressMP.vbs с добавленными строчками генерализации. Но как выяснилось этого мало (для Карелии по крайней мере), нужно ещё "Удалять дупликаты объектов":
8e46d9c2fecet.jpg
Может кому то попадалось как это делать пакетно?

Offline

Board footer

Powered by FluxBB