You are not logged in.

#1 2010-04-14 10:31:59

Dmytro Ovdiienko
Member
From: Kraków
Registered: 2010-02-15
Posts: 307

Автоматичне створення тегів name:en

Вчора переглядав карту Китаю і Японії. В Китаї що-небудь зрозуміти абсолютно не можливо. Треба користуватися локалізованим рендером. В Японії майже до всіх великих міст/вулиц додається англійске ім'я. Це дуже зручно але не правильно.

От я й подумав, що для наших туристів/гостей (може ще євро 2012 буде) треба обов'зково вказувати англійскі назви. Але ж вулиць/міст/ багато.... А якщо написати програму, яка автоматично за правилами транслітерації заповнить ці теги? smile

Last edited by Dmytro Ovdiienko (2010-04-14 10:32:41)

Offline

#2 2010-04-14 15:07:08

andygol
Moderator
From: Дніпро
Registered: 2009-07-31
Posts: 1,951
Website

Re: Автоматичне створення тегів name:en

Ідея слушна. Але для цього треба щоб теґ «name» мав вірні українські найменування. Бо, наприклад в Дніпропетровську, повна мішанина з назвами; в значеннях «name» присутні як назви російською, українською так і латиницею. В міру сил намагаюсь виправляти: для назв російською змінюю теґ «name» на «name:ru», додаючи відповідну назву у «name» українською.

Offline

#3 2010-04-21 15:45:42

vicel
Member
From: Kiev
Registered: 2009-05-26
Posts: 62

Re: Автоматичне створення тегів name:en

Всегда стараюсь всем улицам, что правлю добавить "name:en" и "name:ru". Только вот вопрос - где такое используется? Нет, конечно, может быть использовано итд, но по большому счету, именно поэтому в Японии так и пишут - что наверное никакой программой такие тэги не используются... (Я призываю всех добавлять "name:en" и "name:ru").

Offline

#4 2010-04-21 19:51:32

iONiX
Member
Registered: 2009-08-14
Posts: 196

Re: Автоматичне створення тегів name:en

Київ російською і англійською мовами, правда тайли на високих рівнях приближення дуже повільно завантажуються.

Offline

#5 2010-06-21 00:12:45

iONiX
Member
Registered: 2009-08-14
Posts: 196

Re: Автоматичне створення тегів name:en

Ще один сайт, на якому можна подивитися карту різними мовами. Мова вибирається через "плюс" в правому верхньому куту.

Offline

#6 2010-06-29 20:21:42

rsh
Member
From: Бердянськ
Registered: 2010-05-17
Posts: 121

Re: Автоматичне створення тегів name:en

А ніхто не стикався з такою штукою як TagChecker? Це я так розумію одне з доповнень Validator plugin JOSM яке дозволяє перевіряти значення тегу згідно з якимись критеріями. Але документації про ньго щось зовсім не бачу. Хіба що тут

А до чого я про нього згадав - в принципі можна написати валідатор, що буде перевіряти теги name на предмет не Українських імен. Наприклад наявність букви "ы", "ул.", тощо. Крім того було б файно мати вальдатор наявності відповідних російських та англійських тегів. Тоді роботу можна було б організувати на зразок лаунчпаду - хто має час та бажання переводить.

В принципі можна таке реалізувати і на томуж Perl але не хочеться вигадувати велосипед.

В примітиві це виглядає якось так:

$ cat dnepr.osm | grep -G k=\'name\' | grep -F -f words
    <tag k='name' v='Калініна, провул.' />
    <tag k='name' v='Кедріна, вул.' />
    <tag k='name' v='вул. Макарова' />
    <tag k='name' v='Соціалістична, вул.' />
    <tag k='name' v='вул. Вакуленчука' />
    <tag k='name' v='ул. Строителей' />
    <tag k='name' v='Бабушкіна, вул.' />
    <tag k='name' v='ул. Ульянова' />
    <tag k='name' v='Юрія Савченка, вул.' />
    <tag k='name' v='вул. Григоренка' />
    <tag k='name' v='вул. Вакуленчука' />
    <tag k='name' v='Щепкіна, вул.' />
    <tag k='name' v='Меренкова, вул.' />
    <tag k='name' v='Щепкіна, вул.' />
    <tag k='name' v='Братів Міллер, вул.' />
    <tag k='name' v='Виборзька, вул.' />
    <tag k='name' v='Щепкіна, вул.' />
    <tag k='name' v='Нєстерова, вул.' />
    <tag k='name' v='Курчатова, вул.' />
    <tag k='name' v='Курчатова, вул.' />
    <tag k='name' v='вул. Макарова' />
    <tag k='name' v='вул. Гавриленка' />
    <tag k='name' v='вул. Ушакова' />
    <tag k='name' v='Свердлова, вул.' />
    <tag k='name' v='Героїв Сталінграду, вул.' />
    <tag k='name' v='Героїв Сталінграду, вул.' />
    <tag k='name' v='Юрія Савченка, вул.' />
    <tag k='name' v='Шмідта, вул.' />
    <tag k='name' v='Філософська, вул.' />
    <tag k='name' v='вул. Нахімова' />
    <tag k='name' v='Детский открытый' />
    <tag k='name' v='вул. Карла Лібкнехта' />
    <tag k='name' v='Леваневського, вул.' />
    <tag k='name' v='Леваневського, вул.' />
    <tag k='name' v='Камчатська, вул.' />
    <tag k='name' v='Меренкова, вул.' />
    <tag k='name' v='Червоночечелівська, вул.' />
    <tag k='name' v='Виборзька, вул.' />
    <tag k='name' v='Юрія Савченка, вул.' />
    <tag k='name' v='вул. Вакуленчука' />
    <tag k='name' v='вул. Ушакова' />
    <tag k='name' v='Робоча, вул.' />
    <tag k='name' v='вул. Мостова' />

$ cat words
ул.
ы
ё
ъ
улица

В принципі усе що вивели ці команди є невалідне з точки зору правил іменування об'єктів

Last edited by rsh (2010-06-29 20:41:30)

Offline

#7 2010-06-30 15:09:41

andygol
Moderator
From: Дніпро
Registered: 2009-07-31
Posts: 1,951
Website

Re: Автоматичне створення тегів name:en

Хм, цікаво! такий підхід мені подобається.

до файлу words треба додати всю латинську абетку, а для того, що виловлювати «ул.» треба щось ще вигадати smile, хоча може й не треба, бо таким чином можна повиловлювати наявні скорочення, що не відповідають правилам найменування.

Лишилось тільки ще глянути документацію про API, щоб дізнатись як потім ці зміни звантажити на сервер, я на жаль не знаю:(.

rsh а звідки dnepr.osm? де брав? Якщо в тебе вже є готові скрипти міг би ти ними поділитись?

Offline

#8 2010-06-30 17:07:04

iONiX
Member
Registered: 2009-08-14
Posts: 196

Re: Автоматичне створення тегів name:en

Я теж використовую файли регіонів. Щоб отримати їх, я спочатку качаю лише Україну з geofabrik.de, а потім нарізаю цей файл, за домогою osmosis і координат меж областей, на окремі файли по цим областям.

Команда для запуску osmosis

./osmosis/bin/osmosis --read-xml enableDateParsing=yes file=ukraine.osm --tee 26 \
    --bp file=polygons/ukraine/cherkaska.poly clipIncompleteEntities=true --wx ukraine/cherkaska.osm \
    --bp file=polygons/ukraine/chernigivska.poly clipIncompleteEntities=true --wx ukraine/chernigivska.osm \
    --bp file=polygons/ukraine/chernivetska.poly clipIncompleteEntities=true --wx ukraine/chernivetska.osm \
    --bp file=polygons/ukraine/dnipropetrovska.poly clipIncompleteEntities=true --wx ukraine/dnipropetrovska.osm \
    --bp file=polygons/ukraine/donetska.poly clipIncompleteEntities=true --wx ukraine/donetska.osm \
    --bp file=polygons/ukraine/ivano-frankivska.poly clipIncompleteEntities=true --wx ukraine/ivano-frankivska.osm \
    --bp file=polygons/ukraine/kharkivska.poly clipIncompleteEntities=true --wx ukraine/kharkivska.osm \
    --bp file=polygons/ukraine/khersonska.poly clipIncompleteEntities=true --wx ukraine/khersonska.osm \
    --bp file=polygons/ukraine/khmelnytska.poly clipIncompleteEntities=true --wx ukraine/khmelnytska.osm \
    --bp file=polygons/ukraine/kirovogradska.poly clipIncompleteEntities=true --wx ukraine/kirovogradska.osm \
    --bp file=polygons/ukraine/krym.poly clipIncompleteEntities=true --wx ukraine/krym.osm \
    --bp file=polygons/ukraine/kyiv.poly clipIncompleteEntities=true --wx ukraine/kyiv.osm \
    --bp file=polygons/ukraine/kyivska.poly clipIncompleteEntities=true --wx ukraine/kyivska.osm \
    --bp file=polygons/ukraine/luganska.poly clipIncompleteEntities=true --wx ukraine/luganska.osm \
    --bp file=polygons/ukraine/lvivska.poly clipIncompleteEntities=true --wx ukraine/lvivska.osm \
    --bp file=polygons/ukraine/mykolajivska.poly clipIncompleteEntities=true --wx ukraine/mykolajivska.osm \
    --bp file=polygons/ukraine/odeska.poly clipIncompleteEntities=true --wx ukraine/odeska.osm \
    --bp file=polygons/ukraine/poltavska.poly clipIncompleteEntities=true --wx ukraine/poltavska.osm \
    --bp file=polygons/ukraine/rivnenska.poly clipIncompleteEntities=true --wx ukraine/rivnenska.osm \
    --bp file=polygons/ukraine/sumska.poly clipIncompleteEntities=true --wx ukraine/sumska.osm \
    --bp file=polygons/ukraine/ternopilska.poly clipIncompleteEntities=true --wx ukraine/ternopilska.osm \
    --bp file=polygons/ukraine/vinnytska.poly clipIncompleteEntities=true --wx ukraine/vinnytska.osm \
    --bp file=polygons/ukraine/volynska.poly clipIncompleteEntities=true --wx ukraine/volynska.osm \
    --bp file=polygons/ukraine/zakarpatska.poly clipIncompleteEntities=true --wx ukraine/zakarpatska.osm \
    --bp file=polygons/ukraine/zaporizska.poly clipIncompleteEntities=true --wx ukraine/zaporizska.osm \
    --bp file=polygons/ukraine/zhytomyrska.poly clipIncompleteEntities=true --wx ukraine/zhytomyrska.osm

Файли координат областей повинні лежати в

./polygons/ukraine/*

Offline

#9 2010-06-30 18:07:32

andygol
Moderator
From: Дніпро
Registered: 2009-07-31
Posts: 1,951
Website

Re: Автоматичне створення тегів name:en

Ще питання. Як створити файл dniepropetrovsk.poly коли межі міста описані зв'язком - http://www.openstreetmap.org/browse/relation/1017311 ?

Offline

#10 2010-06-30 19:58:23

iONiX
Member
Registered: 2009-08-14
Posts: 196

Re: Автоматичне створення тегів name:en

Для цього я використовую perl скрипт boundaries.pl
Там треба трохи розбиратися, через те я згенерував файл полігону для Дніпропетровська:

Дніпропетровськ
1
   3.486753E+01   4.850657E+01
   3.485295E+01   4.849737E+01
   3.483886E+01   4.849295E+01
   3.482402E+01   4.849652E+01
   3.480581E+01   4.848506E+01
   3.478469E+01   4.848713E+01
   3.476624E+01   4.849253E+01
   3.476382E+01   4.848498E+01
   3.474912E+01   4.848425E+01
   3.476357E+01   4.847507E+01
   3.477174E+01   4.847321E+01
   3.475755E+01   4.845073E+01
   3.475947E+01   4.844057E+01
   3.477920E+01   4.843984E+01
   3.478460E+01   4.843434E+01
   3.477676E+01   4.843167E+01
   3.478286E+01   4.842706E+01
   3.479152E+01   4.843384E+01
   3.479600E+01   4.842922E+01
   3.479435E+01   4.842665E+01
   3.480017E+01   4.842478E+01
   3.480200E+01   4.842702E+01
   3.480186E+01   4.843009E+01
   3.480379E+01   4.843032E+01
   3.480292E+01   4.843430E+01
   3.481129E+01   4.843535E+01
   3.481216E+01   4.843128E+01
   3.481688E+01   4.843210E+01
   3.481711E+01   4.843448E+01
   3.482594E+01   4.843100E+01
   3.484105E+01   4.843281E+01
   3.484625E+01   4.843570E+01
   3.485123E+01   4.843951E+01
   3.485530E+01   4.844135E+01
   3.485618E+01   4.844240E+01
   3.485626E+01   4.844376E+01
   3.486113E+01   4.844691E+01
   3.486350E+01   4.844690E+01
   3.486563E+01   4.844583E+01
   3.486937E+01   4.844100E+01
   3.487529E+01   4.843674E+01
   3.488457E+01   4.843542E+01
   3.489383E+01   4.843667E+01
   3.490173E+01   4.844032E+01
   3.490764E+01   4.844476E+01
   3.491355E+01   4.844737E+01
   3.493181E+01   4.844338E+01
   3.493502E+01   4.843853E+01
   3.493809E+01   4.843734E+01
   3.494143E+01   4.843752E+01
   3.494674E+01   4.843391E+01
   3.494225E+01   4.842878E+01
   3.494060E+01   4.842887E+01
   3.493378E+01   4.842255E+01
   3.492934E+01   4.842182E+01
   3.492696E+01   4.842663E+01
   3.492069E+01   4.842434E+01
   3.492646E+01   4.841784E+01
   3.490210E+01   4.842017E+01
   3.490050E+01   4.841894E+01
   3.489986E+01   4.841573E+01
   3.490292E+01   4.841518E+01
   3.490439E+01   4.841330E+01
   3.490448E+01   4.840960E+01
   3.490100E+01   4.840932E+01
   3.490187E+01   4.840374E+01
   3.490837E+01   4.840236E+01
   3.490979E+01   4.839948E+01
   3.491318E+01   4.839774E+01
   3.491675E+01   4.839714E+01
   3.492128E+01   4.839705E+01
   3.492466E+01   4.839556E+01
   3.493232E+01   4.839920E+01
   3.493761E+01   4.840278E+01
   3.493563E+01   4.840486E+01
   3.493574E+01   4.840658E+01
   3.493860E+01   4.840651E+01
   3.494006E+01   4.840497E+01
   3.494476E+01   4.840242E+01
   3.494269E+01   4.840049E+01
   3.494834E+01   4.839906E+01
   3.495227E+01   4.839298E+01
   3.494619E+01   4.838940E+01
   3.495771E+01   4.838805E+01
   3.496358E+01   4.838876E+01
   3.496507E+01   4.838492E+01
   3.497545E+01   4.838247E+01
   3.496780E+01   4.837875E+01
   3.496601E+01   4.837367E+01
   3.496812E+01   4.836750E+01
   3.498983E+01   4.836680E+01
   3.498847E+01   4.836222E+01
   3.499348E+01   4.836108E+01
   3.499834E+01   4.835793E+01
   3.500371E+01   4.835578E+01
   3.500864E+01   4.835678E+01
   3.501093E+01   4.835987E+01
   3.500807E+01   4.836852E+01
   3.500786E+01   4.837324E+01
   3.500957E+01   4.837667E+01
   3.501308E+01   4.837968E+01
   3.501801E+01   4.838790E+01
   3.503175E+01   4.838940E+01
   3.504148E+01   4.838654E+01
   3.505713E+01   4.838850E+01
   3.506401E+01   4.839363E+01
   3.506888E+01   4.839599E+01
   3.508161E+01   4.839763E+01
   3.509248E+01   4.838969E+01
   3.509656E+01   4.838840E+01
   3.509871E+01   4.839148E+01
   3.510414E+01   4.839112E+01
   3.510666E+01   4.839283E+01
   3.512637E+01   4.839265E+01
   3.513885E+01   4.839273E+01
   3.514318E+01   4.839462E+01
   3.515672E+01   4.839870E+01
   3.515980E+01   4.840901E+01
   3.517081E+01   4.841222E+01
   3.516903E+01   4.841737E+01
   3.516087E+01   4.841802E+01
   3.515737E+01   4.842403E+01
   3.515443E+01   4.842439E+01
   3.515365E+01   4.842803E+01
   3.514993E+01   4.842782E+01
   3.514964E+01   4.843805E+01
   3.514685E+01   4.843905E+01
   3.514227E+01   4.844563E+01
   3.514020E+01   4.844756E+01
   3.513905E+01   4.845293E+01
   3.514449E+01   4.846108E+01
   3.515186E+01   4.846573E+01
   3.515415E+01   4.847010E+01
   3.516430E+01   4.847439E+01
   3.518705E+01   4.845701E+01
   3.519578E+01   4.846065E+01
   3.520458E+01   4.845429E+01
   3.520765E+01   4.844964E+01
   3.520866E+01   4.844434E+01
   3.519286E+01   4.844511E+01
   3.519277E+01   4.843132E+01
   3.519814E+01   4.842682E+01
   3.520250E+01   4.842832E+01
   3.520708E+01   4.842875E+01
   3.520630E+01   4.843254E+01
   3.521159E+01   4.843376E+01
   3.521359E+01   4.843547E+01
   3.521280E+01   4.843762E+01
   3.521509E+01   4.843826E+01
   3.522039E+01   4.843326E+01
   3.522926E+01   4.843140E+01
   3.523713E+01   4.842875E+01
   3.524263E+01   4.843383E+01
   3.522861E+01   4.843948E+01
   3.522493E+01   4.844602E+01
   3.523927E+01   4.845386E+01
   3.521438E+01   4.847138E+01
   3.521545E+01   4.847274E+01
   3.521209E+01   4.847596E+01
   3.521016E+01   4.847560E+01
   3.519928E+01   4.848712E+01
   3.520501E+01   4.849821E+01
   3.521102E+01   4.849985E+01
   3.520694E+01   4.850651E+01
   3.520651E+01   4.850887E+01
   3.520129E+01   4.850994E+01
   3.517904E+01   4.850708E+01
   3.516008E+01   4.850668E+01
   3.515369E+01   4.850185E+01
   3.514570E+01   4.850078E+01
   3.513812E+01   4.850300E+01
   3.512417E+01   4.850672E+01
   3.512424E+01   4.851130E+01
   3.512217E+01   4.851409E+01
   3.512074E+01   4.851688E+01
   3.512024E+01   4.852031E+01
   3.511988E+01   4.852403E+01
   3.512038E+01   4.852639E+01
   3.512010E+01   4.852940E+01
   3.512146E+01   4.853055E+01
   3.512153E+01   4.853319E+01
   3.512396E+01   4.853755E+01
   3.512167E+01   4.853820E+01
   3.512267E+01   4.854113E+01
   3.511466E+01   4.854385E+01
   3.511194E+01   4.854056E+01
   3.510815E+01   4.854092E+01
   3.510736E+01   4.853999E+01
   3.510844E+01   4.853906E+01
   3.510557E+01   4.853484E+01
   3.510078E+01   4.853462E+01
   3.509370E+01   4.853748E+01
   3.509434E+01   4.853963E+01
   3.508977E+01   4.854059E+01
   3.508354E+01   4.852746E+01
   3.506436E+01   4.853340E+01
   3.505962E+01   4.853527E+01
   3.506218E+01   4.853767E+01
   3.505779E+01   4.853836E+01
   3.504498E+01   4.853398E+01
   3.503297E+01   4.852768E+01
   3.502839E+01   4.853019E+01
   3.503547E+01   4.853512E+01
   3.503239E+01   4.853720E+01
   3.502824E+01   4.853426E+01
   3.501899E+01   4.854018E+01
   3.501995E+01   4.854120E+01
   3.500900E+01   4.854886E+01
   3.501251E+01   4.855150E+01
   3.501816E+01   4.854714E+01
   3.503218E+01   4.855587E+01
   3.501830E+01   4.856495E+01
   3.500030E+01   4.855322E+01
   3.498790E+01   4.854592E+01
   3.498132E+01   4.854914E+01
   3.497967E+01   4.854807E+01
   3.496959E+01   4.855494E+01
   3.496522E+01   4.855708E+01
   3.496458E+01   4.855594E+01
   3.497230E+01   4.854678E+01
   3.496787E+01   4.854828E+01
   3.496723E+01   4.855057E+01
   3.496258E+01   4.855372E+01
   3.494605E+01   4.855730E+01
   3.494061E+01   4.856073E+01
   3.494133E+01   4.856173E+01
   3.493711E+01   4.856459E+01
   3.494061E+01   4.856989E+01
   3.492961E+01   4.857603E+01
   3.492087E+01   4.856574E+01
   3.491765E+01   4.856431E+01
   3.491901E+01   4.856137E+01
   3.491686E+01   4.855987E+01
   3.491329E+01   4.855830E+01
   3.491078E+01   4.855780E+01
   3.490795E+01   4.855641E+01
   3.489412E+01   4.856030E+01
   3.487945E+01   4.856187E+01
   3.487866E+01   4.855451E+01
   3.488153E+01   4.855394E+01
   3.488081E+01   4.854471E+01
   3.488811E+01   4.854328E+01
   3.489040E+01   4.853956E+01
   3.488932E+01   4.852897E+01
   3.490191E+01   4.852482E+01
   3.491587E+01   4.852178E+01
   3.492851E+01   4.852089E+01
   3.493593E+01   4.851847E+01
   3.493486E+01   4.851351E+01
   3.492317E+01   4.851375E+01
   3.489370E+01   4.852335E+01
   3.487818E+01   4.852152E+01
   3.487969E+01   4.851497E+01
   3.486753E+01   4.850657E+01
END
END

Offline

#11 2010-07-01 08:32:56

rsh
Member
From: Бердянськ
Registered: 2010-05-17
Posts: 121

Re: Автоматичне створення тегів name:en

Ні, той dnepr.osm що в мене був, то просто збережений з JOSM файл.
Але завдяки йому iONiX розколовся smile За що iONiX окреме спасибі, досить цінна інформація!
А з якими ключами запускався boundaries.pl щоб зняти контури Дніпропетровська? Я допетрав тільки через -adminlevel=7 бо схоже тільки в Дніпрі він є.
Взагалі той хлопець що написав boundaries.pl має багато скриптів.

Offline

#12 2010-07-01 19:36:27

iONiX
Member
Registered: 2009-08-14
Posts: 196

Re: Автоматичне створення тегів name:en

Хм, зовсім офтопік пішов. Можливо модератору варто розділити, або переіменувати тему.

Я і не приховував нічого smile
boundaries.pl запускав так:

perl ./boundaries.pl -in=./ukraine.osm -poly -html=./ukraine.html -polybase=./ukraine -pics

Правда у мене ще стара версія boundaries.pl, хоча нічого там особливо помінятися не повинно було.

rsh wrote:

Взагалі той хлопець що написав boundaries.pl має багато скриптів.

Я ще користуюся скриптом checkdoublenodes.pl для пошуку і виправлення точок, які лежать одна на одній. Запускається так:

perl ./checkdoublenodes.pl ./ukraine.osm ./doublenodes.html ./doublenodes.gpx

Offline

#13 2010-07-02 13:08:42

andygol
Moderator
From: Дніпро
Registered: 2009-07-31
Posts: 1,951
Website

Re: Автоматичне створення тегів name:en

rsh wrote:

В принципі можна таке реалізувати і на томуж Perl але не хочеться вигадувати велосипед.

В примітиві це виглядає якось так:

$ cat dnepr.osm | grep -G k=\'name\' | grep -F -f words
    <tag k='name' v='Калініна, провул.' />
    <tag k='name' v='Кедріна, вул.' />
    <tag k='name' v='вул. Макарова' />
   ======== cut ==========
    <tag k='name' v='Робоча, вул.' />
    <tag k='name' v='вул. Мостова' />

$ cat words
ул.
ы
ё
ъ
улица

В принципі усе що вивели ці команди є невалідне з точки зору правил іменування об'єктів

Погрався трохи днями з цим. Зробив для себе виводи - одним grep тут не обійдешся. Мабуть все ж таки треба писати якийсь сценарій, бо крім самих теґів name потрібні елементи до яких вони належать, щоб потім також можливо було надіслати зроблені зміни на сервер.

Якщо в когось є щось подібне, або хтось щось чув/читав - дайте знати

Offline

#14 2010-12-03 01:35:25

rsh
Member
From: Бердянськ
Registered: 2010-05-17
Posts: 121

Re: Автоматичне створення тегів name:en

Знаю як! smile
БУДЬТЕ ОБЕРЕЖНІ. Усе що далі розказано, лише для ознайомлення і не рекомендується для повсякденної роботи.

Це можна зробити за допомогою validation втулка.
Перший момент полягає у тому що з ревізії JOSM 3670, цей втулок було інтегровано у ядро. Тому для того аби повторити вдалий експеримент, беремо піддослідного пацюка JOSM звідси: http://josm.openstreetmap.de/download/j … t-3670.jar

Заходимо всередину архіву (адже усі ми хнаємо, що jar то є zip) та шукаємо там файл /data/tagchecker.cfg.
Цей файл задає правила для перевірки пат теґ-значення.

У самому кінці додаємо таке:

*    : W : name == /.*(ё|ул\.|ъ|э).*/

Потім знаходимо всередені jar файлу
/META-INF/JOSM.SF та видаляємо його ( швидкий та не правильний спосіб як заставити усе це працювати. Правильний це зібрати з сирцевих кодів, але я ж описую простий спосіб wink)
у файлі
/META-INF/MANIFEST.MF залишаємо лише таке:

Manifest-Version: 1.0
Main-class: JOSM

Запускаємо java -jar josm-snapshot-3670.jar і якщо усе зроблено правильно, то усі об'єкти в імені яких присутні символи що відповідають наведеному регекспу будуть позначені як "Невірне тег-значення"

Це гарні новини. Тепер проблеми та як це можна зробити по-людськи.
Головна проблема - интеграція валідатора в кору починається з ревізії 3670, тобто девелопмент гілка. Простий валідатор тягне свої дані з інтернету і в мене не вийшло його заставити читати мої регекспи.

Є така пропозиція - прикрутити до валідатора так звані користувацькі правила, які можна було б вказувати в налаштуваннях плагіну (або джосма коли їх нарешті інтегрують).

Цікавить думка спільноти про все це.

Offline

#15 2010-12-03 12:17:51

_sev
Moderator
Registered: 2010-10-12
Posts: 719

Re: Автоматичне створення тегів name:en

Слушна ідея.

Але в свому боті я ще перевіряю на:

  ы, ая\s+, [уУ]лица, ^[вВ]ул, [Пп]р-т, ^[Пп]ро?\   і так далі.

Користувацькі правила -- це було б дуже добре, потім можна опублікувати офіційні валідатори для України.


Eugene

Offline

#16 2010-12-03 23:54:38

rsh
Member
From: Бердянськ
Registered: 2010-05-17
Posts: 121

Re: Автоматичне створення тегів name:en

І чому я вважав, що описую простий спосіб? smile Три години ночі після робочого дня певно не краща пора для розумової праці. wink
Як би там не було, сьогоднішній аналіз сирцевого коду дав кращі результати.

Простий та правильний спосіб в студію (працює навіть з тестед версією, тому підходить усім бажаючим):
1. Маємо встановлений валідатор.
2. F12->Іконка з галочкою (налаштування валідатора)->Джерело даних (Data sources)->Додати(Add)
3. Вказуємо абсолютний шлях до файлу з власними правилами.
4. Перезапускаємо JOSM (після цього варто зайти знову в налаштування та перевірити аби вони збереглись - остання SVN версія не зберігає. Якщо зміна не збереглись можна спробувати добавити в файл ~/.josm/preferences:

validator.TagChecker.sources=/home/rsh/temp/tagchecker.cfg;/home/rsh/temp/tagchecker1.cfg

В джерела даних можна додавати файли трьох типів.
Тип файлу визначається вмістом першого рядка:
# JOSM TagChecker validator file - файл перевірки значень тегів за регекспами.

Складається з так-званих правил. Кожне правило це рядок, поділений на поля символом ":".
<тип даних> : тип помилки : <ключ><вираз><значення>

Тип даних - може бути

  • node        - точка

  • way         - лінія

  • relation    - відношення

  • *           - любий з означених

Тип помилки

  • E помилка

  • W попередження

  • I інформація

Ключ назва тегу, або регексп що захоплює декілька тегів. Регексп пишеться між двома символами "/".
highway == /motorway|trunk|primary|secondary|tertiary|residential|pedestrian/
Якщо наприкінці додати символ "i", регексп буде не чутливим до регістру.

Вираз може бути "!=" або "==". Кілька виразів може бути об'єднано за допомогою оператора && (логічний OR схоже відсутній, але фактично він емульований можливістю додати декілька правил, вони об'єднуються по "або").
Значення - значення або регексп, з яким порівнюється

Коментарій у кінці правила буде використаний як назва повідомлення про помилку.

Наприклад:
*    : E : name == /.*(ё|ъ|э).*/                          # Російські літери в назвах об'єктів

Я не зовсім розібрався, як працюють інші типи # JOSM IgnoreTags та speller_words, тому нічого тут про них не писатиму wink

З огляду на все це, пропоную почати створення файлів правил, на приклад тут

Зовсім забув! Все це UTF-8

Last edited by rsh (2010-12-03 23:56:53)

Offline

Board footer

Powered by FluxBB