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.***
#51 2012-03-14 10:36:19
- olehz
- Member
- From: Lviv
- Registered: 2011-08-11
- Posts: 731
- Website
Re: Валідатор назв вулиць
якщо не дуже складно - додайте будь ласка на сторінку інформацію коли було останнє оновлення
або може можна зробити розсилку коли оновлюються дані?
Ок, виведу на сторінку час останнього оновлення. Вся проблема впирається в сервак. Я на разі не можу дозволити собі поставити osmosis чи osm2pgsql прямо в себе на сервері і автоматизувати вигрузку в БД по крону раз на добу. Не вистачає ресурсів, а тому довидиться робити це на домашній машині.
Можливо в когось будуть ідеї де можна захостити валідатор?
Last edited by olehz (2012-03-19 13:39:59)
Offline
#52 2012-03-14 10:42:50
- dudka
- Member
- From: Київ
- Registered: 2011-04-22
- Posts: 1,605
Re: Валідатор назв вулиць
А які функції osmosis'a використовуються?
Обрізання по poly-файлу значно швидше виконує Pbftoosm
http://wiki.openstreetmap.org/wiki/Pbftoosm
Також варто всюди де можливо уникати використання osm-формату і замість нього використовувати pbf
Offline
#53 2012-03-14 11:02:24
- olehz
- Member
- From: Lviv
- Registered: 2011-08-11
- Posts: 731
- Website
Re: Валідатор назв вулиць
А які функції osmosis'a використовуються?
Обрізання по poly-файлу значно швидше виконує Pbftoosm
http://wiki.openstreetmap.org/wiki/Pbftoosm
Також варто всюди де можливо уникати використання osm-формату і замість нього використовувати pbf
osmosis -v --read-pbf file="UA.osm.pbf" --buffer --write-pgsql-dump enableBboxBuilder=yes enableLinestringBuilder=yes nodeLocationStoreType="CompactTempFile"
Перший етап pbf => sql_dump - 597476 milliseconds
Другий етап sql_dump => Postgres
При цьому дуже активно пожирається, як дисковий простір для тимчасових файлів, так і MEM+CPU, яких на моєму VPS просто нема
Offline
#54 2012-03-14 11:11:09
- dudka
- Member
- From: Київ
- Registered: 2011-04-22
- Posts: 1,605
Re: Валідатор назв вулиць
може допоможе спочатку відфільтрувати тільки необхідні об'єкти
щось типу
--rb UA.osm.pbf --wk keyList="highway,building,place,boundary" --used-node --tf reject-relations outPipe.0=myways
--rb UA.osm.pbf --tf accept-relations type=boundary,street,associatedStreet --used-way --used-node outPipe.1=myrels
--merge inPipe.0=myways inPipe.1=myrels
і далі
--buffer --write-pgsql-dump enableBboxBuilder=yes enableLinestringBuilder=yes nodeLocationStoreType="CompactTempFile"
Last edited by dudka (2012-03-14 11:21:58)
Offline
#55 2012-03-14 11:27:31
- olehz
- Member
- From: Lviv
- Registered: 2011-08-11
- Posts: 731
- Website
Re: Валідатор назв вулиць
Хороша ідея - cпробую сьогодні оптимізувати. Але проблему це не вирішить. З 256Mb MEM і 2Gb вільного простору на диску - нема сенсу навіть пробувати. Потрібна значно потужніша конфігурація сервера.
Offline
#56 2012-03-14 11:39:08
- dudka
- Member
- From: Київ
- Registered: 2011-04-22
- Posts: 1,605
Re: Валідатор назв вулиць
також, судячи з імені файлу, використовуються гіслабівські вигрузки
не багато, але можна виграти використовуючи дані геофабрік.дє (на 15% менший файл)
http://download.geofabrik.de/osm/europe/
Альтернативные источники дампов стран: Geofabrik, CloudMade. Отличаются от представленных здесь более редким (еженедельным) обновлением, отсутствием режима completeWays=yes, а также не всегда подходящими poly-файлами.
ці completeWays=yes якраз не потрібні в рамках Валідатора вулиць
Offline
#57 2012-03-14 19:50:59
- olehz
- Member
- From: Lviv
- Registered: 2011-08-11
- Posts: 731
- Website
Re: Валідатор назв вулиць
А можно сгруппировать города по регионам (АРК, области)?
Было бы немного удобней.
Попробовал сгруппировать по областям, вот что вышло - http://nadoloni.com/streets.html
Last edited by olehz (2012-03-15 11:26:53)
Offline
#58 2012-03-14 20:04:08
- dudka
- Member
- From: Київ
- Registered: 2011-04-22
- Posts: 1,605
Re: Валідатор назв вулиць
На вихідних якийсь румун поламав кордон Чернівецької області, а всі інші мультиполігони областей коректні
http://tools.geofabrik.de/osmi/?view=mu … not_closed
Offline
#59 2012-03-14 22:07:50
- Larry0ua
- Member
- Registered: 2010-09-19
- Posts: 1,061
Re: Валідатор назв вулиць
Шкода, що owl зараз тормозить, раніше таке виявлялось ним
завтра подивлюсь
Offline
#60 2012-03-15 10:47:31
- Larry0ua
- Member
- Registered: 2010-09-19
- Posts: 1,061
Re: Валідатор назв вулиць
пофіксив кордони України, Румунії, Чернівецької області і нашого Глибоцького району.
Last edited by Larry0ua (2012-03-15 10:55:27)
Offline
#61 2012-03-15 11:32:44
- olehz
- Member
- From: Lviv
- Registered: 2011-08-11
- Posts: 731
- Website
Re: Валідатор назв вулиць
На рахунок групування по областям. Єдина можливість, яку я побачив, це вибірка за ISO 3166-2. Тому додав ці теги для Київа і Севастополя. Після завтрашнього оновлення ці два міста зявляться у списку
Offline
#62 2012-03-15 17:40:52
- Sanjak
- Member
- From: Волинський край
- Registered: 2010-04-12
- Posts: 219
Re: Валідатор назв вулиць
Валідатор групує по областях. Буквально кілька хвилин тому з'явилося
Offline
#63 2012-03-15 17:56:01
- dudka
- Member
- From: Київ
- Registered: 2011-04-22
- Posts: 1,605
Re: Валідатор назв вулиць
продовжую писати свої прохання:)
викиньте будь ласка зі списку об'єктів, що перевіряються
highway=footway і highway=path
http://www.openstreetmap.org/browse/way/132809068
Offline
#64 2012-03-17 19:52:48
- olehz
- Member
- From: Lviv
- Registered: 2011-08-11
- Posts: 731
- Website
Re: Валідатор назв вулиць
Оновив дані і код - nadoloni.com/streets.html
1. Викинув зі списку об'єктів, що перевіряються highway=footway і highway=path
2. Додав підсвітку будинків зв'язаних через relation.
Паралельно виявив ряд проблем:
1. Присутні 68 відношень, у котрих відсутні атрибут name - такі відношення ігноруються
2. У відношеннях в якості будинків присутні об'єкти з геометрією LINESTRING (також багато POINT, хоча це і не помилка, здається) - такі об'єкти також ігноруються
Загалом, на поточний момент підсвічується 34477 будинки з 69255 пронумерованих по Україні.
Last edited by olehz (2012-03-18 08:17:32)
Offline
#65 2012-03-17 21:26:48
- _sev
- Moderator
- Registered: 2010-10-12
- Posts: 721
Re: Валідатор назв вулиць
2. У відношеннях в якості будинків присутні об'єкти з геометрією LINESTRING (також багато POINT, хоча це і не помилка, здається) - такі об'єкти також ігноруються
То правильно, це напевно будинки за схемою Карлсруе, тобто будинки точкою, плюс інтерполяція адрес. Їх теж потрібно обробляти.
Offline
#66 2012-03-17 23:26:29
- Paultergeist
- Member
- From: Київ
- Registered: 2010-12-04
- Posts: 99
Re: Валідатор назв вулиць
1. Присутні 32 відношення, у котрих відсутній атрибут name - такі відношення ігноруються
Якщо ви про відношення associatedStreet, то в ньому атрибут name опціональний. Назва вулиці має братися з name мембера ролі street.
Offline
#67 2012-03-18 08:15:35
- olehz
- Member
- From: Lviv
- Registered: 2011-08-11
- Posts: 731
- Website
Re: Валідатор назв вулиць
olehz wrote:1. Присутні 32 відношення, у котрих відсутній атрибут name - такі відношення ігноруються
Якщо ви про відношення associatedStreet, то в ньому атрибут name опціональний. Назва вулиці має братися з name мембера ролі street.
optional but recommended... Проблема у тому, що мембери одного відношення часто мають різні name. Ось список:
http://www.openstreetmap.org/browse/relation/416568
http://www.openstreetmap.org/browse/relation/1316746
http://www.openstreetmap.org/browse/relation/1353268
http://www.openstreetmap.org/browse/relation/1353269
http://www.openstreetmap.org/browse/relation/1353271
http://www.openstreetmap.org/browse/relation/1353272
http://www.openstreetmap.org/browse/relation/1353273
http://www.openstreetmap.org/browse/relation/1552690
http://www.openstreetmap.org/browse/relation/1563329
http://www.openstreetmap.org/browse/relation/1612043
http://www.openstreetmap.org/browse/relation/1656289
http://www.openstreetmap.org/browse/relation/1656347
http://www.openstreetmap.org/browse/relation/1656348
http://www.openstreetmap.org/browse/relation/1656349
http://www.openstreetmap.org/browse/relation/1657144
http://www.openstreetmap.org/browse/relation/1666661
http://www.openstreetmap.org/browse/relation/1666663
http://www.openstreetmap.org/browse/relation/1666664
http://www.openstreetmap.org/browse/relation/1666665
http://www.openstreetmap.org/browse/relation/1666666
http://www.openstreetmap.org/browse/relation/1666668
http://www.openstreetmap.org/browse/relation/1666670
http://www.openstreetmap.org/browse/relation/1666671
http://www.openstreetmap.org/browse/relation/1666672
http://www.openstreetmap.org/browse/relation/1667269
http://www.openstreetmap.org/browse/relation/1672414
http://www.openstreetmap.org/browse/relation/1672432
http://www.openstreetmap.org/browse/relation/1679900
http://www.openstreetmap.org/browse/relation/1679901
http://www.openstreetmap.org/browse/relation/1679902
http://www.openstreetmap.org/browse/relation/1685556
http://www.openstreetmap.org/browse/relation/1685557
http://www.openstreetmap.org/browse/relation/1685559
http://www.openstreetmap.org/browse/relation/1685560
http://www.openstreetmap.org/browse/relation/1685561
http://www.openstreetmap.org/browse/relation/1685562
http://www.openstreetmap.org/browse/relation/1693540
http://www.openstreetmap.org/browse/relation/1693541
http://www.openstreetmap.org/browse/relation/1694119
http://www.openstreetmap.org/browse/relation/1694120
http://www.openstreetmap.org/browse/relation/1694469
http://www.openstreetmap.org/browse/relation/1694470
http://www.openstreetmap.org/browse/relation/1694471
http://www.openstreetmap.org/browse/relation/1694472
http://www.openstreetmap.org/browse/relation/1707292
http://www.openstreetmap.org/browse/relation/1707293
http://www.openstreetmap.org/browse/relation/1707294
http://www.openstreetmap.org/browse/relation/1707295
http://www.openstreetmap.org/browse/relation/1707297
http://www.openstreetmap.org/browse/relation/1707298
http://www.openstreetmap.org/browse/relation/1711115
http://www.openstreetmap.org/browse/relation/1711116
http://www.openstreetmap.org/browse/relation/1748426
http://www.openstreetmap.org/browse/relation/1749542
http://www.openstreetmap.org/browse/relation/1832907
http://www.openstreetmap.org/browse/relation/1837642
http://www.openstreetmap.org/browse/relation/1863990
http://www.openstreetmap.org/browse/relation/1914036
http://www.openstreetmap.org/browse/relation/2044196
http://www.openstreetmap.org/browse/relation/2052034
http://www.openstreetmap.org/browse/relation/2054977
http://www.openstreetmap.org/browse/relation/2060065
http://www.openstreetmap.org/browse/relation/2060931
http://www.openstreetmap.org/browse/relation/2060932
http://www.openstreetmap.org/browse/relation/2060933
http://www.openstreetmap.org/browse/relation/2077813
http://www.openstreetmap.org/browse/relation/2082607
http://www.openstreetmap.org/browse/relation/2085774
Last edited by olehz (2012-03-18 09:01:09)
Offline
#68 2012-03-18 18:28:07
- dudka
- Member
- From: Київ
- Registered: 2011-04-22
- Posts: 1,605
Re: Валідатор назв вулиць
Валідатор стає все гарнішим, дякую
трохи повиправляв: один спочатку і десь десять з кінця списку(крім 2060931-206093, там взагалі неправильні звязки).
потім подумав, що дійсно якась дивна вимога вказувати ще й name для relation'a
з вказаних вами звязків, наприклад
http://www.openstreetmap.org/browse/relation/1552690
чому він некоректний? усі вулиці мають одну і ту ж назву
http://www.openstreetmap.org/browse/relation/1694471
у цього взагалі тільки один член з роллю street
помилковими мабуть треба вважати ті лінії, що входять в більш ніж один звязок типу street/associatedStreet
а також ті звязки у яких є лінії з різними назвами, хоча можуть бути виключення: вулиця, що включає міст, який має власну назву, яка прописана в name
можливо ще є виключення
Offline
#69 2012-03-18 22:53:57
- Paultergeist
- Member
- From: Київ
- Registered: 2010-12-04
- Posts: 99
Re: Валідатор назв вулиць
Проблема у тому, що мембери одного відношення часто мають різні name
От такі випадки було б непогано виявляти і помічати як помилки.
Offline
#70 2012-03-19 08:40:02
- Sanjak
- Member
- From: Волинський край
- Registered: 2010-04-12
- Posts: 219
Re: Валідатор назв вулиць
olehz
Пропав Володимир-Волинський
Поясніть ще раз по тих зв'язках стріт. Питався в російському ірц-каналі - пишуть, що не потрібно використовувати, а ставити кожному будинку addr:street
Тут бачу використовують і type=street, і type=associatedStreet - можливо прийдем до спільного знаменника?
Offline
#71 2012-03-19 08:48:58
- Paultergeist
- Member
- From: Київ
- Registered: 2010-12-04
- Posts: 99
Re: Валідатор назв вулиць
У мене про street і associatedStreet теж колись були аналогічні питання.
Offline
#72 2012-03-19 09:12:29
- _sev
- Moderator
- Registered: 2010-10-12
- Posts: 721
Re: Валідатор назв вулиць
olehz
Пропав Володимир-ВолинськийПоясніть ще раз по тих зв'язках стріт. Питався в російському ірц-каналі - пишуть, що не потрібно використовувати, а ставити кожному будинку addr:street
Тут бачу використовують і type=street, і type=associatedStreet - можливо прийдем до спільного знаменника?
З моєї точки зору, addr:street на будинках додає занадто багато ручної роботи. Також дуже легко зробити помилку, тобто, якщо людина з якихось причин написала в name російську назву, а потім з часом поставили правильно український напис, то треба йти по всіх будинках, і змінювати там, бо шукатися вони ну будуть. Ще й буде проблема їх знайти, тобто будинки у містах, особливо у мікрорайонах не стоять уздовж веїв вулиць. "Загубиш дім", адресний пошук працювати не буде. Те ж саме, коли людина напише "вул. Дорошенка", яке потім буде згідно угоди перейменоване у "Дорошенка вуліця".
Також зв'язки дозволяють правильно поставити будинок на дві вулиці, вказавши дрібний номер "1/23", а не тулити addr2:street, які зараз ніде не підтримуються.
Про те, як ці теґи використовуються, можна дивитися тут: addr:street, 4 мільйони домів, 9 мільйонів нод (очевидно Карлсруе), 20 тисяч відношень. associatedStreet – 57 тисяч, street – 12 тисяч. Слід зауважити, що дуже багато домів було заімпортовано. При імпорті набагато легше вказати addr:street на будинку. Я у своїх імпортах створював відношення окремою програмою у другому проході, після вивантаження домів і вулиць.
Але якщо ви у своєму місті будете ставити addr:street на будинки, це не буде помилкою.
Offline
#73 2012-03-19 09:41:48
- dudka
- Member
- From: Київ
- Registered: 2011-04-22
- Posts: 1,605
Re: Валідатор назв вулиць
Так є ж узгоджена схема
http://wiki.openstreetmap.org/wiki/Prop … ptional.29
дозволяє писати type=street/associatedStreet
і ролі street/house/address
Київська область теж пропала
Last edited by dudka (2012-03-19 09:42:12)
Offline
#74 2012-03-19 09:59:23
- Larry0ua
- Member
- Registered: 2010-09-19
- Posts: 1,061
Re: Валідатор назв вулиць
у нас було вирішено використовувати зв"язки, в Росії - addr:street на кожній будівлі. тому на ірц таке радили.
на рахунок кількох номерів на будинку - або вказувати лише по більш головній вулиці (у нас, наприклад, практично всюди примусово познімали номери з кутових будинків, щоб залишався лише один), або другий ставити точкою на лінії будівлі у місці розташування номера.
Offline
#75 2012-03-19 13:31:57
- olehz
- Member
- From: Lviv
- Registered: 2011-08-11
- Posts: 731
- Website
Re: Валідатор назв вулиць
Дуже багато різних способів адресації, що сильно ускладнює запити до БД. Зараз валідатор обробляє лише будинки, що входять у відношення street, чи associatedStreet і для яких вказаний тег name. Валідатор працює з даними імпортованими за допомогою osm2pgsql з ключами -k -s -G. Для будинків використовується наступний запит:
SELECT
osm_id,
ASTEXT(ST_MakePolygon(ST_ExteriorRing(way))) AS the_geom,
X(CENTROID(way)) AS x,
Y(CENTROID(way)) AS y,
"addr:housenumber" AS num
FROM planet_osm_rels rel, planet_osm_polygon
WHERE
ST_Within(way, ST_PolygonFromText('Геометрія межі міста')) AND
GEOMETRYTYPE(way) = 'POLYGON' AND
hstore(rel.tags)->'name' = 'Назва вулиці' AND
(hstore(rel.tags)->'type' = 'associatedStreet' OR hstore(rel.tags)->'type' = 'street') AND
osm_id=ANY(ARRAY(
SELECT
CAST(replace(replace(members[k*2-1], 'w', ''),'r','-') AS int)
FROM (SELECT generate_subscripts(parts, 1) AS k, id, parts, members
FROM planet_osm_rels
WHERE id = rel.id
) sub
WHERE members[k*2] = 'house' AND
(substring(members[k*2-1], 1, 1) = 'w' OR substring(members[k*2-1], 1, 1) = 'r')
))
ORDER BY
CAST(substring("addr:housenumber" FROM '^\d+') AS int),
LENGTH("addr:housenumber"),
"addr:housenumber"
Будуть пропозиції щодо вдосконалення такої вибірки, аби враховувались усі наведені вище варіанти адресації?
Offline