OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

Announcement

A fix has been applied to the login system for the forums - if you have trouble logging in please contact support@openstreetmap.org with both your forum username and your OpenStreetMap username so we can make sure your accounts are properly linked.

#1 2012-02-16 21:28:59

olehz
Member
From: Lviv
Registered: 2011-08-11
Posts: 707
Website

Валідатор назв вулиць

Я наваляв невеличку тулзу для перевірки назв вулиць - OSM Editor, почав виправляти. Можливо комусь також буде корисно.

Списки вулиць по містах в табличній формі з можливістю редагування таблиці зі збереженням змін через OSM API, сортування і групування по рядках, пошуку і візуалізацією на мапі сегментів вулиць і привязаних до них будинків.

Перевіряються наступні помилки (підсвічються червоним):

1. name та name:uk мають відповідати регулярному виразу

~([АаБбВвГ㥴ДдЕеЄєЖжЗзиІіїЇЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщьЮюЯя0-9XVI’\- \.]+)(вулиця|провулок|площа|проспект|бульвар|узвіз|міст|проїзд|набережна|шосе|алея|в’їзд|тупик|спуск|майдан|підйом|лінія|дорога)~

2. name:ru має відповідати регулярному виразу
Для name:ru

~([АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщъыьЭэЮюЯя0-9XVI’\- \.]+)(улица|переулок|площадь|проспект|бульвар|спуск|мост|проезд|набережная|шоссе|аллея|въезд|тупик|спуск|майдан|подъём|линия|дорога)~

3. Кількість слів(пробілів) у name/uk/ru/en має співпадати
4. Класифікатори вулиць мають співпадати:

вулиця|провулок|площа|проспект|бульвар|узвіз|міст|проїзд|набережна|шосе|алея|в’їзд|тупик|спуск|майдан|підйом|лінія|дорога
улица|переулок|площадь|проспект|бульвар|спуск|мост|проезд|набережная|шоссе|аллея|въезд|тупик|спуск|майдан|подъём|линия|дорога
Street|Lane|Square|Avenue|Boulevard|Descent|Bridge|Pass|Embarkment|Road|Alley|Entrance|End|Descent|Square|Ascent|Line|Road

5. Пробіли на початку або в кінці тегу є помилками
6. name має співпадати з name:uk
7. Допустимий апостроф в назвах такий як тут: http://www.openstreetmap.org/browse/way/109925030

Кнопки над таблицею проводять фільтрацію на пошук дублікатів, що мають спільну назву на одній мові, але на інших відрізняються.

Аби проводити редагування, слід провести OSM-аутентифікацію під своїм існуючим юзером (правий верхній кут). Даблклік по ячейці - відкриває редагування. Після змін клікаєте на кнопочку "Зберегти" і дані зберігаються на сервер OSM від імені вашого користувача.

Часто не зберігаються зміни, якщо їх більш ніж 5-20. Поки ця проблема не пофіксана - не забувайте клікати по кнопці Зберегти, роблячи правки невеличкими порціями.

Last edited by olehz (2014-04-06 22:35:12)

Offline

#2 2012-02-16 21:53:07

Alexey Furashev
Member
Registered: 2010-05-30
Posts: 46

Re: Валідатор назв вулиць

Понравилось, очень даже юзабельно. Сильно впечатлило плавность перемещения карты под выделенную улицу.
Из запланированного Вами даже востребовано:
  можливість редагування таблиці зі збереженням змін через OSM API.
Немного не понял, что считается багом, отсутсвие украинского названия?

Offline

#3 2012-02-16 22:03:29

olehz
Member
From: Lviv
Registered: 2011-08-11
Posts: 707
Website

Re: Валідатор назв вулиць

Отсутствие name, или неудовлетворение такой регулярке ~.*(вулиця|провулок|площа|проспект|бульвар|узвіз|міст|проїзд|набережна|шосе|алея)~

Offline

#4 2012-02-17 09:18:21

Lokki
Member
From: Кривой Рог
Registered: 2011-05-07
Posts: 55

Re: Валідатор назв вулиць

Нужная вещь. Пригодится. Особенно с  "можливість редагування таблиці зі збереженням змін через OSM API". Только моего города почему-то нет в списке.

Offline

#5 2012-02-17 09:48:35

olehz
Member
From: Lviv
Registered: 2011-08-11
Posts: 707
Website

Re: Валідатор назв вулиць

Кривой Рог сейчас добавлю. Дайте список нужных городов и убедитесь, что для города указана административная граница. Например для Одессы выборка улиц с таким условием не срабатывает:

ST_Within(way, (SELECT way FROM planet_osm_polygon WHERE name = 'Одеса' AND boundary = 'administrative'))

Offline

#6 2012-02-17 10:01:43

dudka
Member
From: Київ
Registered: 2011-04-22
Posts: 1,564

Re: Валідатор назв вулиць

Може фільтрувати по конкретному way_id/relation_id?
Ось Одеса: http://www.openstreetmap.org/browse/relation/1413934
Ваш фільтр не працюватиме наприклад для Чернівців, які крім обласного центру в Чернівецькій області також існують як районний центр у Вінницькій.
Додайте Чернівці також будь ласка.
У регулярку додайте будь ласка
- "в'їзд" i "тупик" яких чимало у Харкові

І якщо не важко ще одну регулярку перевірки дозволених символів:
   а) кириличні букви
       а') в name:uk не повинно бути ы,ё,ъ
       а'') в name:ru не повинно бути є,і,ї
       а''') в name:en не повинно бути кириличних символів
   б) латинські I,V,X -- для вулиць "Івана Павла II", "XXV з'їзду КПРС"
   в) апостроф '
   г) дефіс

Хм.. форум конвертує апостроф в прямий апостроф
Нам потрібен такий як тут: http://www.openstreetmap.org/browse/way/109925030

Last edited by dudka (2012-02-17 12:09:19)

Offline

#7 2012-02-17 12:09:44

Sanjak
Member
From: Волинський край
Registered: 2010-04-12
Posts: 219

Re: Валідатор назв вулиць

Володимир-Волинський, будь-ласка, додайте!
http://www.openstreetmap.org/browse/relation/2000000

Якраз працюю над вулицями міста. Лишилося близько 35 нанести.

Offline

#8 2012-02-17 13:07:56

olehz
Member
From: Lviv
Registered: 2011-08-11
Posts: 707
Website

Re: Валідатор назв вулиць

Є проблема. Я використовую osm2pgsql -s --keep-coastlines ... Після цього для Одеси, якщо виконати наступні запити отримаємо:

SELECT array_to_string((SELECT parts FROM planet_osm_rels WHERE id = 1413934), ', ') -- список ІД ліній, що складають межу Одеси

"26150437, 4529551, 118116543, 118116544, 118116184, 118116187, 98611821, 42345662, 130190036, 108419031, 130190135, 98611822, 130194756, 4530497"

А тепер якщо спробувати вибрати ці лінії

SELECT array_to_string(ARRAY(SELECT osm_id FROM planet_osm_line WHERE osm_id IN (
SELECT parts[k] AS v
FROM (SELECT generate_subscripts(parts, 1) AS k, id, parts FROM planet_osm_rels) foo
WHERE id = 1413934
)),', ')

Отримуємо обрізаний результат:
"4529551, 108419031, 118116184, 118116187, 130194756, 4530497, 98611821, 118116543, 118116544"

Виходить, що osm2pgsql проігнорував частину ліній, з відношення кордону Одеси. Як це побороти?

Offline

#9 2012-02-17 13:27:10

dudka
Member
From: Київ
Registered: 2011-04-22
Posts: 1,564

Re: Валідатор назв вулиць

А osm-файл звідки брали? В ньому ті лінії є?
26150437 - точка, що позначає Одесу
Схоже, що випали лінії які без тегів?

Last edited by dudka (2012-02-17 13:28:53)

Offline

#10 2012-02-17 13:44:00

olehz
Member
From: Lviv
Registered: 2011-08-11
Posts: 707
Website

Re: Валідатор назв вулиць

Дякую, справа дійсно у відсутності тегів. Спробував з опцією hstore. Не допомогло. Виявляється, osm2psql рілейшини зберігає з айдішками < 0. В різних містах різні теги. Але загалом, кордони багатьох міст вдалось вибрати наступним чином:

SELECT * FROM planet_osm_polygon WHERE name IS NOT NULL AND admin_level IS NOT NULL AND place = 'city' ORDER BY name

Маємо вулиці 31 міста України для правки.

Last edited by olehz (2012-02-17 15:58:33)

Offline

#11 2012-02-17 17:03:33

Землемер
Member
From: г. Харьков
Registered: 2011-12-29
Posts: 37

Re: Валідатор назв вулиць

olehz wrote:

Маємо вулиці 31 міста України для правки.

Очень интересно.
А можно сгруппировать города по регионам (АРК, области)?
Было бы немного удобней.

Last edited by Землемер (2012-02-17 17:05:01)

Offline

#12 2012-02-17 20:30:19

dudka
Member
From: Київ
Registered: 2011-04-22
Posts: 1,564

Re: Валідатор назв вулиць

olehz, я вам вчора дав неправильний url для відкриття ліній в JOSM
Ось правильний варіант:  http://127.0.0.1:8111/load_object?new_l … =w<way_id>
Наприклад: http://127.0.0.1:8111/load_object?new_l … =w23678268
Підправте будь ласка.
Детальніше про RemoteControl-plugin можна почитати тут: http://josm.openstreetmap.de/wiki/Uk%3A … oteControl

Last edited by dudka (2012-02-17 20:30:42)

Offline

#13 2012-02-17 21:00:50

Землемер
Member
From: г. Харьков
Registered: 2011-12-29
Posts: 37

Re: Валідатор назв вулиць

Уважаемый olehz,

В свете последних добавлений на http://nadoloni.com/streets.html, на мой взгляд еще более актуальным становится

"А можно сгруппировать города по регионам (АРК, области)?
Было бы немного удобней."

Также прошу Вас описать процесс редактирования реестра на форуме землеустроителей в теме
OpenStreetMap - источник открытых данных - как сделать полезным в работе землеустроителя?

Землеустроители по роду своей деятельности постоянно работают с адресами, и подобная информация нам очень полезна.

Last edited by Землемер (2012-02-17 21:21:01)

Offline

#14 2012-02-17 21:29:37

olehz
Member
From: Lviv
Registered: 2011-08-11
Posts: 707
Website

Re: Валідатор назв вулиць

Ок, посилання на JOSM змінив. Додав всі міста з тегом place: city і town, в яких позначена хоча б одна вулиця. В списку 87 міст. Всі інші озвучені вище фічі (додаткові перевірки, OSM API, групування по регіонам, будинки і т.д.) постараюсь прикрутити найближчими днями.

Маю питання щодо "Угоди про порядок слів в назві вулиці".

1. Наприклад, маємо в місті X:

Академіка Андрія Сахарова вулиця
Сахарова площа
Андрія Сахарова провулок
Сахарова А. алея

Мабуть потрібно стандартизувати всі назви? Тобто використати найдовшу. Але довгі назви не рендеряться на коротких вулицях. Що дуже хижо.

2. При поточній угоді найменування неможливо відсортувати вулиці за прізвищем. Та й при пошуці більшість орієнтується на прізвище (імя і та й чим прославився той чи інший діяч знають зовсім не всі).

З тим щось треба робити. Я вважаю, поточну угоду про порядок слів в назвах вулиць треба поміняти.

Offline

#15 2012-02-18 14:31:17

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

Re: Валідатор назв вулиць

Щось заглючило. Всі вулиці Феодосії показує у Харкові, сама Феодосія порожня.

edit: перевантаження дерева допомогло, але глюк цікавий.

Last edited by _sev (2012-02-18 14:32:55)

Offline

#16 2012-02-18 14:36:24

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

Re: Валідатор назв вулиць

А можна пояснення, що означає червоне у полі bug, і які кольори там взагалі бувають?

Offline

#17 2012-02-18 18:05:39

Sanjak
Member
From: Волинський край
Registered: 2010-04-12
Posts: 219

Re: Валідатор назв вулиць

_sev wrote:

А можна пояснення, що означає червоне у полі bug, і які кольори там взагалі бувають?

Наскільки зрозумів - відсутність слова вулиця/проспект/провуток... в name, а також name на російській мові. Запускай свого бота smile

Last edited by Sanjak (2012-02-18 18:06:00)

Offline

#18 2012-02-18 22:25:29

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

Re: Валідатор назв вулиць

Sanjak wrote:
_sev wrote:

А можна пояснення, що означає червоне у полі bug, і які кольори там взагалі бувають?

Наскільки зрозумів - відсутність слова вулиця/проспект/провуток... в name, а також name на російській мові. Запускай свого бота smile

Схоже на те. Але не роспізнаються в'їзди та підйоми.

Offline

#19 2012-02-19 12:20:27

olehz
Member
From: Lviv
Registered: 2011-08-11
Posts: 707
Website

Re: Валідатор назв вулиць

Якщо

~([АаБбВвГ㥴ДдЕеЄєЖжЗзиІіїЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщьЮюЯя0-9XVI’\- \.]+)(вулиця|провулок|площа|проспект|бульвар|узвіз|міст|проїзд|набережна|шосе|алея|в’їзд|тупик|спуск)~ для name

і

~([АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщъыьЭэЮюЯя0-9XVI’\- \.]+)(улица|переулок|площадь|проспект|бульвар|спуск|мост|проезд|набережная|шоссе|аллея|въезд|тупик|спуск)~ name:ru не спрацьовують поле Bug = 1.

Зараз колір лише один. Можна і кілька поставити. Будуть пропозиції які кольори при яких умовах ставити?

І проставте тег place для кордонів тих міст, які не попали у список (Богодухів, Ялта, Євпаторія, Севастополь...):

SELECT DISTINCT osm_id, name FROM planet_osm_polygon WHERE name IS NOT NULL AND admin_level IS NOT NULL AND (place = 'city' OR place='town') ORDER BY name

Пробував у JOSM - щось не виходить.

Offline

#20 2012-02-19 19:05:16

dudka
Member
From: Київ
Registered: 2011-04-22
Posts: 1,564

Re: Валідатор назв вулиць

olehz wrote:

Маю питання щодо "Угоди про порядок слів в назві вулиці".
1. Наприклад, маємо в місті X:
Академіка Андрія Сахарова вулиця
Сахарова площа
Андрія Сахарова провулок
Сахарова А. алея

Мабуть потрібно стандартизувати всі назви? Тобто використати найдовшу. Але довгі назви не рендеряться на коротких вулицях. Що дуже хижо.

В кожному місті Х є чітко прописана назва вулиці. Таку і треба прописувати.
В одному місті може бути вулиця Сахарова, а в іншому - Академіка Сахарова. Нічого поганого в цьому не бачу.
Те що вони не реднеряться на openstreetmap.org - теж нічого поганого.
Як то кажуть OpenStreetMap - в першу чергу є базою даних і далеко не в першу чергу є тією картою що бачимо на openstreetmap.org.
І - класичне - не малюємо під рендерер:)

olehz wrote:

2. При поточній угоді найменування неможливо відсортувати вулиці за прізвищем.

Я так розумію ви це хочете робити на своєму сайті?
Можна спробувати так:
- беремо значення з name-тегу
- відрізаємо всі можливі префікси типу "Полковника","Князя","Імператора","Генерала" тощо
- відрізаємо всі можливі префікси імен
- сортуємо обрізані значення
Якщо треба - напишу вам зібрані мною префікси

olehz wrote:

Та й при пошуці більшість орієнтується на прізвище (імя і та й чим прославився той чи інший діяч знають зовсім не всі).

Зовсім не бачу проблем для пошуку.

olehz wrote:

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

Теж думаю, що її варто переглянути. Особисто мені більше подобається російський варіант угоди.
Основна відмінність - у них використовується звичний/розмовний порядок слів:
- вулиця Академіка Сахарова
- Львівська вулиця
- Майдан Незалежності -- до речі ми його так і пишемо зараз, хоча це не відповідає угоді.
- Радянська площа

Offline

#21 2012-02-19 19:09:18

dudka
Member
From: Київ
Registered: 2011-04-22
Posts: 1,564

Re: Валідатор назв вулиць

olehz wrote:

~([АаБбВвГ㥴ДдЕеЄєЖжЗзиІіїЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщьЮюЯя0-9XVI’\- \.]+)(вулиця|провулок|площа|проспект|бульвар|узвіз|міст|проїзд|набережна|шосе|алея|в’їзд|тупик|спуск)~ для name

Додайте будь ласка велике Ї, а також підйом, дорога, майдан.

Чи можна якось підсвічувати рядки/помилки такого типу:
  в межах міста є дві лінії з однаковими name, але різними name:ru. І навпаки. Плюс теж саме з name:en, name:uk.

Offline

#22 2012-02-19 19:52:17

Землемер
Member
From: г. Харьков
Registered: 2011-12-29
Posts: 37

Re: Валідатор назв вулиць

olehz, посмотрите список улиц по г. Запорожье здесь

Offline

#23 2012-02-19 21:49:23

olehz
Member
From: Lviv
Registered: 2011-08-11
Posts: 707
Website

Re: Валідатор назв вулиць

dudka wrote:

В одному місті може бути вулиця Сахарова, а в іншому - Академіка Сахарова. Нічого поганого в цьому не бачу.

Якщо вулиця/майдан названа в честь одного конкретного діяча - вона мусить бути однаковою для усіх міст. Чому в місті Х є вулиця Академіка Сахарова і площа Сахарова. Вам відомий якийсь ще діяч "Андрій Сахаров" окрім академіка Сахарова? В народі всеодно вживається найкоротший варіант, тобто просто "Сахарова". А префікс є сенс ставити лише у випадку, коли існують кілька діячів, у котрих співпадає прізвище та імя. Але ж ми не використовуємо топонім "Поета Тараса Шевченка вулиця". В ідеалі було б добре створити таблицю з усіма діячами і посиланням на вікіпедію і перекладами на кількох мовах.

dudka wrote:

Те що вони не рендеряться на openstreetmap.org - теж нічого поганого.
Як то кажуть OpenStreetMap - в першу чергу є базою даних і далеко не в першу чергу є тією картою що бачимо на openstreetmap.org.
І - класичне - не малюємо під рендерер:)

Отож-бо, я говорю якраз про дані, а не про mapnik. Прізвище має більший пріорітет за імя та префікс. Тобто його треба винести на початок. А не виконувати різні операції над текстом кожного разу, як виникне бажання щось розрендерити чи провести елементарні операції над даними. Тим більше при використанні будь-якого рендера питання довжини написів є критичним. І знову ж повертаючись до БД, навіщо нам надлишковість? Якщо писати не "вулиця", а "вул." ми зекономимо і час при редагуванні і місце при рендерінгу. Але ж ми пишемо "вулиця".

Як я зрозумів, ОСМ в Україні просто скалькували англомовний стандарт написання, де тип Street/Avenue стоїть в кінці. Мені видається, що написи на мапі "Майдан незалежності" чи "Незалежності майд." - однаково зрозумілі. Якби прізвище стояло спочатку, просто відсортувавши по name, ми побачили б, що у Харкові є "Гагаріна вулиця", "Гагаріна провулок" і "Юрія Гагаріна проспект" і нам би не доводилось проводити текстовий пошук для кожного діяча по прізвищу.

dudka wrote:

Я так розумію ви це хочете робити на своєму сайті?
Можна спробувати так:
- беремо значення з name-тегу
- відрізаємо всі можливі префікси типу "Полковника","Князя","Імператора","Генерала" тощо
- відрізаємо всі можливі префікси імен
- сортуємо обрізані значення
Якщо треба - напишу вам зібрані мною префікси

Так, це єдина можливість щось з тим зробити. Давайте спробуємо, хоча "всі можливі" - не означає, що завтра хтось не додасть щось новеньке.

dudka wrote:

Теж думаю, що її варто переглянути. Особисто мені більше подобається російський варіант угоди.
Основна відмінність - у них використовується звичний/розмовний порядок слів:
- вулиця Академіка Сахарова
- Львівська вулиця
- Майдан Незалежності -- до речі ми його так і пишемо зараз, хоча це не відповідає угоді.
- Радянська площа

Ну так буде точно повна каша, хоча і більш традиційно.

Offline

#24 2012-02-19 21:55:51

olehz
Member
From: Lviv
Registered: 2011-08-11
Posts: 707
Website

Re: Валідатор назв вулиць

Землемер wrote:

olehz, посмотрите список улиц по г. Запорожье здесь

Посмотрел. Только не совсем понимаю, что мне с ним делать

Offline

#25 2012-02-19 22:21:03

dudka
Member
From: Київ
Registered: 2011-04-22
Posts: 1,564

Re: Валідатор назв вулиць

Одразу згадався тільки один приклад: є вулиця "Матроса Желєзняка" в одному місті і "Партизана Желєзняка" - в іншому. Названі на честь однієї і тієї ж людини.
Не впевнений що вдасться створити таку таблицю. Прикладів неоднозначної транслітерації прізвищ дуже багато:
   "Белінського вулиця""Бєлінського вулиця"
   "Васнецова вулиця""Васнєцова вулиця"
   "Єсеніна вулиця""Єсєніна вулиця"
   "Юліуса Фучика вулиця""Юліуса Фучіка вулиця"
   "Фабриціуса вулиця""Фабріциуса вулиця""Фабріціуса вулиця"
Я не бачу можливості вибрати один з них, а інший - замінити на перший.
Мені навіть якось дорікнули що я виправив "Героїв Сталінграда проспект" на "Героїв Сталінграду проспект". Аргументували тим що треба вказувати офіційні назви вулиць з точністю до букви і не виправляючи помилок.

Пропонуєте Прізвище на початок?
Ну не знаю.
Українки Лесі? Галицького Данила?
Княгині Ольги, Святого Миколая -- як напишете?
А вулицю Митрополита Андрея Шептицького?

Крім названих на честь історичних осіб є ще тисяча варіантів Радянська/Советська/Совєтська, "Балаклійська вулиця"/"Балакліївська вулиця".
Або в Дніпропетровську є "Діамантна вулиця"/"Алмазная улица". Офіційна сучасна назва - Діамантна, назва радянських часів - Алмазная. Ну не відповідають слова одне одному, ну то й що smile

Offline

Board footer

Powered by FluxBB