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.

#51 2012-03-14 10:36:19

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

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

dudka wrote:

якщо не дуже складно - додайте будь ласка на сторінку інформацію коли було останнє оновлення
або може можна зробити розсилку коли оновлюються дані?

Ок, виведу на сторінку час останнього оновлення. Вся проблема впирається в сервак. Я на разі не можу дозволити собі поставити 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,564

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: 707
Website

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

dudka wrote:

А які функції 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,564

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: 707
Website

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

Хороша ідея - cпробую сьогодні оптимізувати. Але проблему це не вирішить. З 256Mb MEM і 2Gb вільного простору на диску - нема сенсу навіть пробувати. Потрібна значно потужніша конфігурація сервера.

Offline

#56 2012-03-14 11:39:08

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

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

також, судячи з імені файлу, використовуються гіслабівські вигрузки
не багато, але можна виграти використовуючи дані геофабрік.дє (на 15% менший файл)
http://download.geofabrik.de/osm/europe/

gis-lab.info wrote:

Альтернативные источники дампов стран: Geofabrik, CloudMade. Отличаются от представленных здесь более редким (еженедельным) обновлением, отсутствием режима completeWays=yes, а также не всегда подходящими poly-файлами.

ці completeWays=yes якраз не потрібні в рамках Валідатора вулиць

Offline

#57 2012-03-14 19:50:59

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

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

Землемер wrote:

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

Попробовал сгруппировать по областям, вот что вышло - 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,564

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 зараз тормозить, раніше таке виявлялось ним smile

завтра подивлюсь

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: 707
Website

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

На рахунок групування по областям. Єдина можливість, яку я побачив, це вибірка за ISO 3166-2. Тому додав ці теги для Київа і Севастополя. Після завтрашнього оновлення ці два міста зявляться у списку

Offline

#62 2012-03-15 17:40:52

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

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

Валідатор групує по областях. Буквально кілька хвилин тому з'явилося big_smile

Offline

#63 2012-03-15 17:56:01

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

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: 707
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: 719

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

olehz wrote:

2. У відношеннях в якості будинків присутні об'єкти з геометрією LINESTRING (також багато POINT, хоча це і не помилка, здається) - такі об'єкти також ігноруються

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

Offline

#66 2012-03-17 23:26:29

Paultergeist
Member
From: Київ
Registered: 2010-12-04
Posts: 99

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

olehz wrote:

1. Присутні 32 відношення, у котрих відсутній атрибут name - такі відношення ігноруються

Якщо ви про відношення associatedStreet, то в ньому атрибут name опціональний. Назва вулиці має братися з name мембера ролі street.

Offline

#67 2012-03-18 08:15:35

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

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

Paultergeist wrote:
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,564

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

Валідатор стає все гарнішим, дякую smile

трохи повиправляв: один спочатку і десь десять з кінця списку(крім 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: Валідатор назв вулиць

olehz wrote:

Проблема у тому, що мембери одного відношення часто мають різні 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: 719

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

Sanjak wrote:

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,564

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: 707
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

Board footer

Powered by FluxBB