- PVSM.RU - https://www.pvsm.ru -

Районы… Кварталы…

Совсем недавно на хабре была статья от AirBnb — «Создавая карту мира» [1]. Хорошая и красивая статья про административное деление мира. Один минус — у статьи один комментарий, и то мой.

Пользуясь случаем проведу опрос — хотели ли бы вы такую карту административных делений?

А то она у меня есть:

Районы… Кварталы… - 1

Вы наверное замечали, что Google.Карты умеют подсвечивать контура городов [2]. С недавнего времени такое есть и на Яндекс.Картах [3]. Мало кто знает, что геометрия есть и на eSosedi [4].

А вот когда такая возможность появится на вашем сайте — теперь зависит только от тебя %username%.

Для достижения эффекта достаточно зайти на data.esosedi.org [5] или GitHub [6], ознакомиться с документацией библиотеки osmeRegions и начать использовать.

P.S.: 3 признака того, что год минувший все сделал красиво: 1. Районы 2. Кварталы. 3. Детализация до «Жилые массивы» доступна для некоторых городов.

OSMeRegions — это и библиотека и сервис, который позволяет отображать данные административного деления на основе OpenStreetMap на карте. Старшый брат модуля регионов [7] Яндекс.Карт.

Изначальная задача заключалась в попытке улучшить адресацию гео-привязанных обьектов на esosedi. Потому что работа у нас такая. Как говорилось на спарке [8]:

«Представим, что в вашем городе есть Улица Ленина. Так вот — в соседнем городе она тоже есть».

Все началось с стандарта ISO3166-2, который определяет буквенную индексацию стран и регионов. Москва, для примера — RU-MOW. Лично мне никогда не нравилось адресация обьектов на «гео» сайтах — в урле нет никакого «ЧПУ подобного» указания локации. Все ссылки одинаковые и не понятно про что идет речь. Одновременно были проблемы с геокодером — с определением административного адреса.
В общем это была присказка, впереди было обьединение данных OSM с GeoNames, парсинг Wikipedia, реализация прямых и обратный геокодеров, нахождение смерти Кащеевой [9], и написание пачки «детранслитеризаторов» чтобы получить читабельные нашим человеком названия регионов.

Районы… Кварталы… - 2
(не умею я такие гифки делать, картинка из топика AirBnb)

Что вы хотите — раскрашивать страны по некой схеме [10], или делать из Новой Москвы Старую [11] — ваше дело.

Команда только одна:

osmeRegions.geoJSON(addr, options, callback)

Где addr — имя региона мира(или просто мира), код страны или региона в формате 3166-2, или OpenStreetMap RelationId. А остальное — схемы, фильтры, рекомбинации — по желанию.

Hint: relationId можно получить зайдя на нужное место на esosedi [12] — вся информация так указана. Либо воспользоваться «навигатором» на data.esosedi.org [13] — он для этого и создан.

Это не какой-то там topojson [14], это АПИ к «ручке» которая готова отдавать вам данные по паре сотен тысяч административных элементов. При этом из ручки выходит GeoJSON, которым можно кормить тот же d3. В общем это решение.

Мир
Районы… Кварталы… - 3
Большая Москва
Районы… Кварталы… - 4
Старая Москва (рекомбинация)
Районы… Кварталы… - 5
Новая Москва
Районы… Кварталы… - 6
Крым Наш (рекомбинация)
Районы… Кварталы… - 7
Крым Ваш
Районы… Кварталы… - 8

Рекомбинация — это когда уже на клиенте вы сами определяете как собрать регионы.

P.S.: Сервис может содержать, содержит и будет содержать ошибки.
P.P.S.: Ручка отдачи данных будет работать «вечно» на свой страх и риск. Когда начинала писаться эта статья я хотел дополнить эту фразу «покуда евро по 70 не будет». Как в воду глядел. Но ни что не мешает сохранять json файлы данных себе.
P.P.P.S.: Лицензия простая, но не одна — esosedi, OSM, Wikipedia, GeoNames. Отдельное спасибо всеми забытому geo.webnabor.com [15].

Эта история началась 7 лет назад, в 2008 году, в глубинах Wikimapia [16]. Это топик писался два раза с промежутком в год, и в итоге написан на полтора года позже первых сроков. Было много интерлюдий, комедий и трагедий, и сейчас время антракта. Кушать подано — github.com/esosedi/regions [6]

Автор: kashey

Источник [17]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/86355

Ссылки в тексте:

[1] «Создавая карту мира»: http://habrahabr.ru/company/airbnb/blog/251627/

[2] подсвечивать контура городов: https://goo.gl/maps/NOY04

[3] есть и на Яндекс.Картах: https://maps.yandex.ru/-/CVG85ZZS

[4] геометрия есть и на eSosedi: http://ru.esosedi.org/RU/MOW/

[5] data.esosedi.org: http://data.esosedi.org

[6] GitHub: https://github.com/esosedi/regions

[7] модуля регионов: https://tech.yandex.ru/maps/doc/jsapi/2.1/dg/concepts/regions-docpage/

[8] говорилось на спарке: http://spark.ru/startup/eSosedi/blog/4827

[9] смерти Кащеевой: http://habrastorage.org/files/0a0/da8/121/0a0da8121ad748e49f5accc9c545cd82.gif

[10] раскрашивать страны по некой схеме: http://jsfiddle.net/9o9ak7fb/7/

[11] Новой Москвы Старую: http://jsfiddle.net/9o9ak7fb/17/

[12] esosedi: http://ru.esosedi.org/

[13] data.esosedi.org: http://data.esosedi.org/

[14] topojson: https://github.com/mbostock/topojson

[15] geo.webnabor.com: http://geo.webnabor.com/

[16] Wikimapia: http://wikimapia.org/

[17] Источник: http://habrahabr.ru/post/253515/