геокодування по назвам пунктів

63 views
Skip to first unread message

devrand

unread,
May 18, 2012, 12:13:12 PM5/18/12
to Data Visualization in Ukraine
Прохання до власника групи написати про технологію, як роблять
візуалізації на кшталт гео-кодованих статей вікіпедії.

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

Як правильно закодувати назви нас. пунктів?
Наскільки це довга робота, зробити таку гео-прив'язку?

Vityok

unread,
May 19, 2012, 12:06:50 PM5/19/12
to Data Visualization in Ukraine


День добрий!

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

При створені картограми з геокодованими статтями Вікіпедії було
простіше: там не було потреби співставляти назвам нас. пунктів їхні
координати, оскільки:

1. назви там ніде не використані, то ж вони взагалі не потрібні

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

У випадку візуалізації бази даних назв вулиць, на яких знаходяться
адміністративні установи, ситуація відмінна: тут доведеться
співставляти, і все залежатиме від її змісту та джерела походження.

Якщо не помиляюсь, такі дані оприлюднені на сайті Верховної Ради, і
були використані для заповнення карток населених пунктів в статтях на
Вікіпедії.

Однак, найбільша проблема в тому, що назви деяких населених пунктів не
унікальні, наприклад:

http://uk.wikipedia.org/wiki/Приморське

І статті про них у Вікіпедії мають довшу назву, яка не ідентична
офіційній назві населеного пункту.

Також, теоретично (ще не перевіряв на практиці), можна скористатись
службами геокодування карт Гугл.

Однак, все залежить від формату бази даних (таблиці) з населеними
пунктами, адресами рад, та класифікацією.

В найкращому випадку, кожен рядок такої бази даних мав би містити
назву статті Вікіпедії, офіційну назву, адресу ради, та тип за
класифікацією (радянський, не радянський, тощо).

Але, остаточно щось можна буде казати тільки подивившись на дані цієї
бази.

Віктор

P.S. про технологію створення неінтерактивних точкових картограм ще
напишу. Якщо виявиться, що 30тис нас. пунктів не дуже велике число, то
вдасться створити й інтерактивну версію (на основі D3JS.org).

Vityok

unread,
May 21, 2012, 11:38:05 AM5/21/12
to Data Visualization in Ukraine
On 18 Тра, 19:13, devrand <devr...@gmail.com> wrote:

До речі, а чи є можливість запросити Віктора, який зібрав дані про
населені
пункти та назви вулиць, на яких знаходяться місцеві органи влади, до
цієї
групи?

З ним можна було б обговорити формат даних та подальші кроки з їхньої
візуалізації.

Дякую,
Віктор (інший)

Гирган Деврандич

unread,
May 21, 2012, 3:24:31 PM5/21/12
to datav...@googlegroups.com
У нього інформація лише по декільком десяткам населених пунктів,
наскільки я розумію. Однак запросити варто, звичайно - я зараз це
зроблю. Обговорювати візуалізацію краще з нами, бо скоріше за все ми
цим і будемо займатися.


2012/5/21 Vityok <bob...@ua.fm>:

Vityok

unread,
May 23, 2012, 7:42:49 AM5/23/12
to Data Visualization in Ukraine

On 21 Тра, 22:24, Гирган Деврандич <devr...@gmail.com> wrote:
> У нього інформація лише по декільком десяткам населених пунктів,
> наскільки я розумію. Однак запросити варто, звичайно - я зараз це
> зроблю. Обговорювати візуалізацію краще з нами, бо скоріше за все ми
> цим і будемо займатися.

Ну коли йдеться лише про кілька десятків точок, то тут можна
координати і вручну проставити. Не велике діло.

Далі можна скористатись тим самим R та пакетом ggplot2. Де взяти
контури України та областей написано в першому кроці тут: http://bit.ly/Ka9rWB

Малювати контури країни та областей може geom_polygon; точки
проставляє geom_point.

Оформлення там те саме, як і в решті випадків. Наприклад, так:
http://uchicagoconsulting.wordpress.com/tag/r-ggplot2-maps-visualization/

Замість растру можна згенерувати векторний SVG та доробити його в
ілюстраторі чи інкскейпі.

Отже, все що залишилось, так це отримати дані.

Віктор

roman Kulchynskyj

unread,
May 23, 2012, 7:50:25 AM5/23/12
to datav...@googlegroups.com
Наша ідея полягала в тому, щоб зробити карту на основі  УСІХ населених пунктів, а не тільки тих, що вибрав Віктор

23 травня 2012 р. 14:42 Vityok <bob...@ua.fm> написав:

Vityok

unread,
May 23, 2012, 9:09:05 AM5/23/12
to Data Visualization in Ukraine
On 23 Тра, 14:50, roman Kulchynskyj <roman.ku...@gmail.com> wrote:
> Наша ідея полягала в тому, щоб зробити карту на основі  УСІХ населених
> пунктів, а не тільки тих, що вибрав Віктор

А, ну це також можливо.

Ця інформація є в статтях Вікіпедії, в картках населених пунктів.
Там же є і координати. Або можна взяти вже наявні координати.

Проблема буде в категоризації вулиць понад 30 тис. нас. пунктів.

Але і там може статись так, що ці назви матимуть обмежену кількість
через наявність дуже популярних вулиць (Леніна, Миру, тощо).

Задача не тривіальна, але можлива...

Гирган Деврандич

unread,
May 23, 2012, 11:13:09 AM5/23/12
to datav...@googlegroups.com
Класифікацію я беру на себе, для мене найважча частина - це геоприв'язка

2012/5/23 Vityok <bob...@ua.fm>:

Наталка Зубар

unread,
Jun 14, 2012, 1:56:08 PM6/14/12
to datav...@googlegroups.com
Слухайте, подільться кунгфу, а як ви витягаєте назви пунктів нормальною мовою?

Мені довелося вирішити задачу витягти всі населенні пункти України з населенням більше 15 тисяч. Ну по перше не у всіх навіть таких великих міст є дані про населення в геонеймс. 

А по друге і це головне. Це ж просто повний алес з назвами!

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

Так на додаток є назви які написані просто невідомо якою мовою. 

Приклади

Винныцька область
Волынська область
'Debal’tsevo', 'Донецька область'
Броварі
'Ivano-Frankivs’k', 'Івано-Франківська область'
'Dobropol’ye', 'Донецька область'

І так далі.... 

Як з цим боротися? Бо мені звісно довелося руками перебити базу, але... в довготерміновій перспективі це не вихід!

Дякую

Гирган Деврандич

unread,
Jun 15, 2012, 2:59:13 AM6/15/12
to datav...@googlegroups.com
Тут було щось схоже -
http://groups.google.com/group/datavis-ua/t/8189388f14ec1aac
Деталі можна з'ясувати у автора, він у цій розсилці - найбільший
фахівець по гео-прив'язці


2012/6/14 Наталка Зубар <panim...@gmail.com>:

Vityok

unread,
Jun 15, 2012, 4:37:37 AM6/15/12
to Data Visualization in Ukraine

Саме так, і тому geonames тут не були використані. Натомість, я
скористався даними з дампів Вікіпедії. Один, з географічними
координатами дав зв'язку між назвою статті у Вікіпедії та
географічними координатами. Цей дамп можна отримати тут:

http://de.wikipedia.org/wiki/Wikipedia:WikiProjekt_Georeferenzierung/Hauptseite/Wikipedia-World/en

Там є дані для *багатьох* Вікіпедій. Для української вікіпедії можна
отримати дані завдяки скрипту:

gunzip < ../new_C-link.gz | egrep "^uk" > uk.txt

Потім звідти слід буде вирізати три стовпчики після першого (бо перший
код мови).


Дані по населених пунктах можна отримати з іншого дампу Вікіпедії. Тут
шукаєте ukwiki:

http://dumps.wikimedia.org/backup-index.html

А потім найсвіжіший дамп "pages-articles.xml.bz2".

Там буде просто затиснений архіватором BZ2 величезний XML файл.

Аналізувати його слід SAX аналізатором або чимось таким, що аналізує
XML потоково.

Дані про нас. пункти можна видерти з карток (Місто, Село, Селище, Смт,
Місто України, Село України, Селище України, Смт України). Для цього
підійдуть регулярні вирази. Наприклад:

(concatenate 'string "{{\\s*(([Шш]аблон|[Tt]emplate)\\s*:\\s*)?
([Кк]артка\\s*:\\s*)?" *infobox-templates* )

може знаходити картку, а окреме поле з неї можна отримати:

"\\|\\s*адреса\\s*=\\s*([^\\n]+)\\n"

Потім отримані дані слід буде переглянути та підчистити.

Зв'язати координати та дані тепер можна командою merge в R.

Ще раз переглянути дані та підчистити.

І отримаєте результат.

Теоретично, було б дуже добре мати можливість перетворювати картки
населених пунктів в структуровані бази даних (або реляційні, або RDF).
Щось подібне пропонує dbpedia
http://uk.wikipedia.org/wiki/DBpedia
Але дані для української вікіпедії вони не пропонують.

Тобто, правильніше було б спонукати DBPedia пропонувати дані для
української вікіпедії. Тоді весь процес був би набагато простіше
(майже елементарним).

Ну от і все. Якщо є якісь запитання або ідеї з поліпшенням, пишіть.

Віктор

Reply all
Reply to author
Forward
0 new messages