You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
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: Валідатор назв вулиць

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,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: Валідатор назв вулиць

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

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

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: 731
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,605

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

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

Board footer

Powered by FluxBB