не игнорируют, не добраться пока. Дело минутное, знаю, но… Еще и ноут сдох
Fortress: На сайте Geopainting вроде написано, что платить можно и с WM, и с Яндекс. Или как везде в России? На заборе написано одно, а за забором совсем другое? ;).
Подождем.
П.С. Пока писал ответ, оригинал куда-то делся.
Вообще не туда написал
переместили в тему “скидываемся”
Господа, не подскажите к кому обратиться, чтобы тут http://navitel.osm.rambler.ru/countries.php запустили сборку бывших союзных республик Центральной Азии (Казахстан, Киргизию, Таджикистан). Пока присутствует только Узбекистан. Спасибо !
И Эстонию, пожалуйста, а то она совсем древняя (06.02.2011)
Планирую. Все сразу не получается, дел много. Эстония запущена.
add: лицензия куплена. сегодня-завтра прикручу.
Задумано. Крупные города (place=city) видны на всех уровнях с Level0 по Level4, но на обзорном уровне (Level4) они выводятся более мелкими. На самом деле конвертация городов ровно та же, что и в Garmin, чтобы не было правок под навигатор.
UPD: Немного подчистил POI (объединены варианты тегов OSM, конвертируемые в одни и те же типы НН).
(At revision: 111)
Не знаю с чем связано такое количество ошибок, но 10Mb html на Ленинградскую область - это как-то слишком.
У меня на этом не то, что браузер - AkelPad тормозит.
Upd: Также проблемы с кодировками - шапка в UTF8, заголовки в ANSI
После решения этой проблемы становится видно, что 90% ошибок это “Внутренние части полигонов перекрываются”
Думаю, что уже нужно 2 колонки с ошибками - 1. критические для конвертирования (Дублирующиеся узлы) 2. не критические (всё остальное)
“Всего ошибок: 16805” на 7,36М - кто БОЛЬШЕ??? (Мурманская). Можно недельки 2-3(а то и больше) “свежей” карты не ждать. У меня мало времени всю эту кашу править, да и знаний маловато.
Видимо, что-то случилось…
Интересно, это бага конвертера или вандализм в OSM?
Это фича
Это полный список ошибок, которые лицензионный GPSMapedit находит при экспорте в nm2. В основном это предупреждения (например, полигон домика внутри полигона жилого массива, что потенциально ведет к неотрисовке домика в навигаторе), но есть и близкие к критическим ошибки типа слишком близких узлов.
Наверное, надо просить уважаемого автора GPSMapedit регулировать уровень критичности выводимых ошибок…
Fortress,
предлагаю оставить только “+4 - Find misaligned/duplicated nodes”, чтобы остались только критические ошибки (как у меня было). Т.е. в скрипте найти где задается
DetailedVerify = 268435456+4
В общем, я немного попилил chilin’овский скрипт, когда налаживал конвертацию
всё тоже самое, только в html вываливаются лишь критические ошики:
'mp2nm2.vbs
'Based on open source code published by (c) Konstantin Galichsky, http://www.geopainting.com
'
'Developers:
' Konstantin Galichsky (kg@geopainting.com)
' Chilin (chilin dog rambler dot ru)
'
'This script uses GPSMapEdit to verify and convert map to NM2 format.
'Save report as HTML file for OpenStreetMap project.
'
'Usage: mp2nm2.vbs [-noVerify/-onlyVerify] <file.mp>
' Without Key - verify & convert map
' -noVerify - only convert to NM2
' -onlyVerify - only verify map
'
Option Explicit
Dim WS,fso,log, logPath
Set fso = CreateObject ("Scripting.FileSystemObject")
Set WS = WScript.CreateObject("WScript.Shell")
logPath = fso.GetAbsolutePathName(WScript.ScriptFullName + "\..\") +"\"+ fso.GetBaseName(WScript.ScriptName)+".log"
if fso.FileExists(logPath) then
set log = fso.OpenTextFile(logPath,8)
else
Set log = fso.CreateTextFile (logPath)
end if
call LogMsg("Starting script "&WScript.ScriptName)
dim mapName,scrKey
Select Case WScript.Arguments.Count
Case 1
scrKey = ""
mpName = WScript.Arguments(0)
Case 2
scrKey = UCase( WScript.Arguments(0))
mpName = WScript.Arguments(1)
if not (scrKey = "-NOVERIFY" or scrKey = "-ONLYVERIFY") then
call ErrMSG("Script called with wrong parameter. Use key: ''-noVerify'' or ''-onlyVerify''")
end if
Case else
call ErrMSG("Script called without the required parameter. Please, use: "&WScript.ScriptName&" [-noVerify/-onlyVerify] <file.mp>")
End Select
Dim mapPath,mpName,mapFolder
mapFolder = fso.GetAbsolutePathName (mpName + "\..\") + "\"
mapPath = fso.GetAbsolutePathName(mpName)
mapName = LCase (fso.GetBaseName (mapPath))
if not fso.FileExists(mapPath) Then
call ErrMSG("File ''"&mpName&"'' does't exist")
end if
'Check type of verify
' 536870911 - Check all error
' 268435456+... - Detailed verify
' +1 - Check polygons for self-interselection
' +2 - Check routable polylines for self-interselection in nodes
' +4 - Find misaligned/duplicated nodes
' +8 - Check polygons for overlapping
' +16 - Find to close nodes
' +32 - Check routable roads roundabouts for way-1
' +64 - Not used (reserved)
' +128 - Check Road DeadEnds
'Warning - +4 is critical error for nm2 format
Const CriticalError = "Duplicated nodes"
Dim DetailedVerify, tmpNavitel
DetailedVerify = 268435456+4
'Connect to GPSMapEdit
On Error Resume Next
Err.Clear
Dim GME,GMEVersion
Set GME = CreateObject ("GPSMapEdit.Application.1")
'Check connect and check version of GPSMapEdit
GMEVersion = GME.Version
if err.number <> 0 then
GME.Exit
call ErrMSG("Internal error: "&err.number&" - "&err.description)
end if
On Error GoTo 0
If GMEVersion < "1.0.61.4" Then
GME.Exit
call ErrMSG("Obsolete version of GPSMapEdit is used. Current version: "&GMEVersion&", please upgrade to 1.0.61.4 or higher.")
End If
GME.MinimizeWindow
'Open map in GPSMapEdit
GME.Open mapPath, False
tmpNavitel = -1
if scrKey <> "-NOVERIFY" then
'Connect to GPSMapEdit.IEdit /only registered version GPSMapEdit/
Dim pEdit
Set pEdit = GME.Edit
If pEdit Is Nothing Then
GME.Exit
call ErrMSG("IEdit may be used only registered version GPSMapEdit")
End If
'Verifing Map
lReportLines = pEdit.VerifyMap (DetailedVerify, strReport)
call LogMsg("Verified file "&mapPath &" - "& lReportLines & " errors.")
'Spliting report lines into array
dimReport = Split(strReport,vbCrLf)
Dim lReportLines,nReportLines,strReport,dimReport,dicReport
Dim strLine,strCoo,GMEErr,nGMEErr,nPoint,dPoint,arrGMEe()
Set dicReport = CreateObject("Scripting.Dictionary")
'Parsing report lines
ReDim arrGMEe(1)
nGMEErr = 0
nPoint = 0
dPoint = 0
If lReportLines > 0 Then
for nReportLines = 1 to lReportLines
strLine = dimReport(nReportLines)
strCoo = "lat="+Split(strLine,",")(0)+"&lon="+Split(strLine,",")(1) +"&mlat="+Split(strLine,",")(0)+"&mlon="+Split(strLine,",")(1)
GMEErr = MID(Split(strLine,",")(3),2,Len(Split(strLine,",")(3))-2)
If Not dicReport.Exists(strCoo) Then
dicReport.Add strCoo,GMEErr
nPoint = nPoint + 1
else
if GMEErr = CriticalError then
dicReport.Item(strCoo) = CriticalError
end if
dPoint = dPoint + 1
End If
if IsInDim(arrGMEe,GMEErr) = -1 Then
arrGMEe(nGMEErr) = GMEErr
nGMEErr = nGMEErr + 1
ReDim Preserve arrGMEe(nGMEErr)
End if
Next
call LogMsg("Parsing complited. Error lines: "&lReportLines&". Types of error: "&nGMEErr&". Real error point: "&nPoint&". Double error point: "&dPoint)
'Up critical error in array
tmpNavitel = IsInDim(arrGMEe,CriticalError)
if tmpNavitel > -1 then
arrGMEe(tmpNavitel) = arrGMEe(0)
arrGMEe(0) = CriticalError
call LogMsg(".nm2 does't exported. See html File.")
end if
End If
End if
'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.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
if scrKey <> "-NOVERIFY" then
'Export to HTML
if nPoint <> 0 then
Dim fHtml,nErr,aErr, i1,i2,htmlPath
htmlPath = mapFolder+mapName+"-osm-err.html"
Set fHtml = fso.CreateTextFile(htmlPath, true)
fHtml.WriteLine strConv("<body><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'/><title>"&mapName&": Картографические ошибки</title></head><CENTER><h2>Протокол проверки данных OpenStreetMap</h2></CENTER>","windows-1251","utf-8")
fHtml.WriteLine strConv("Ниже, перечислены ссылки на критические картографические ошибки, обнаруженные при конвертации данных OpenStreetMap в формат Навител (.nm2).<br>Вы можете помочь проекту исправив их.<br>Нажатие на букву P рядом с номером ошибки загружает онлайновый редактор Potlatch 2 с местом ошибки.","windows-1251","utf-8")
if tmpNavitel <> -1 then
fHtml.WriteLine strConv("<p><b>Обратите внимание!</b> При наличии этих ошибок автоматическая конвертация невозможна. Таким образом, если Вы обнаружите, что область на главной странице не обновляется - исправьте эти ошибки, и в следующий раз актуальная карта станет доступна для загрузки.</p>","windows-1251","utf-8")
end if
fHtml.WriteLine "<div align='center'><table width='100%' border=1 cellspacing=0 cellpadding=0 align=center>"
if dicReport.Count > 0 then
aErr = 0
for i1 = 0 to UBound(arrGMEe)-1
NErr = 0
For Each i2 In dicReport
if arrGMEe(i1) = dicReport.Item(i2) then
if arrGMEe(i1) = CriticalError then
NErr = NErr + 1
if NErr = 1 then
fHtml.WriteLine "<tr><th><p style='background:#FA8072'>"&strConv(arrGMEe(i1),"windows-1251","utf-8")&"</p></th></tr><tr><td>"
end if
fHtml.WriteLine "<a href=http://osm.org/?" & i2 & "&zoom=18 target='_blank'>" & NErr & "</a>(<a href=http://www.openstreetmap.org/edit?" & i2 & "&zoom=18 target='_blank'>P</a>)"
end if
end if
next
aErr = aErr+NErr
next
end if
fHtml.WriteLine strConv("</td></tr></table></div>Карта: "&mapName&".mp<br>Последняя проверка: "&Now()&"<br/>Всего критических ошибок: "&aErr&"</br></br><a href='javascript:window.history.back();'>Назад</a></body>","windows-1251","utf-8")
fHtml.Close
call LogMsg("Exported file: "&htmlPath)
end if
End if
call LogMsg("End of script.")
log.Close
'WS.Run "%comspec% /c echo " & Chr(7), 0, True
WScript.Quit (0)
Function IsInDim(Arr,Var)
IsInDim = -1
Dim i
For i = LBound(Arr) To UBound(Arr)
if Arr(i) = Var then
IsInDim = i
Exit For
end if
next
End Function
Sub ErrMSG(Text)
call LogMsg("Error: "&Text)
call LogMsg("Script halted")
WScript.Quit(1)
End Sub
Sub LogMsg(Text)
log.WriteLine now()&": "&Text
End Sub
Function StrConv(Text,SourceCharset,DestCharset)
dim Stream
Set Stream = CreateObject("ADODB.Stream")
Stream.Type = 2
Stream.Mode = 3
Stream.Open
Stream.Charset = DestCharset
Stream.WriteText Text
Stream.Position = 0
Stream.Charset = SourceCharset
StrConv = mid(Stream.ReadText,4)
End Function
Можете сконвертить карту Армении для навител 5? Заранее спс.
Небольшие багфиксы конфигурации:
- устранено дублирование некоторых полигонов;
- не присваиваются имена заборам (но остаются у объектов, обнесенных забором);
- добавлена обработка building=church (в дополнение к amenity=place_of_worship);
- добавлена обработка мест отдыха, оборудованных мангалами (amenity=bbq);
- постпроцессор теперь удаляет пустые имена и заметки (Label= и Text=).
(At revision: 112)
Скопировал я твой скрипт. Что-то у меня теперь вообще странички без ошибок выдаются… И Ленобласть и Московская без ошибок
Fostress, поправь кодировку на страничке ашыбок. Там UTF вперемешку с 1251.
И прямую сцылку на правку в JOSM-е неплохо бы возродить.
Скрипт явно косячет. Взял для проверки карту Бурятии, которая не обновлялась с 07/июн/2011 13:08 и в самом деле gpsmapedit нашёл 1 критическую ошибку.
Добрый день.
Навител 5.0.0.964. Карты взяты здесь http://navitel.osm.rambler.ru/
Такие наблюдения.Например:
Есть 4 нас.пункта Екатериновка.
- Екатериновка, Безенчукский р-н, Самарская обл
- Екатериновка, Кинель-Черкасский р-н, Самарская обл
- Екатериновка, Красноярский р-н, Самарская обл
- Екатериновка, Приволжский р-н, Самарская обл
В навителе, в поиске города показывает только 1 нас. пункт, у которого наименование района начинается с буквы, которая стоит раньше в алфавите (в данном случае это Екатериновка, Безенчукский р-н, Самарская обл), остальные нас. пункты в поиске отсутствуют. Их можно найти только в мену “Ближайшие”.
Я пробовал так:
взял карту в МП, к наименованию нас. пункта дописал Екатериновка (Приволжский р-н) и после конвертации этот нас. пункт появился в поиске.
И таких нас. пунктов несколько. Только в моем и ближайшем районе это Федоровка, Владимировка и Екатериновка.
Подскажите плиз как правильно устранить эту ошибку.