SlideShare a Scribd company logo
1 of 92
Download to read offline
Александр Сапожников
Южно-Уральский государственный университет




OpenStreetMap
            на вашем сайте
UWDC 2013
На прошлых конференциях
— Google Maps
— Яндекс.Карты

— 2GIS — вчера




  02
02
Встраиваемые карты
— Google Maps
— Яндекс.Карты
— Bing
— Космоснимки

— 2GIS
— Navitel




  04
04
  OpenStreetMap
— openstreetmap.org = osm.org
— openstreetmap.ru




  05
05

   Что не так

в других картах?
Покрытие по Уралу
  bit.ly/XdQx33 (сентябрь 2012)


— Областные центры — везде
— + Магнитогорск — Google, Яндекс; + Березники — Космоснимки
— + дорожная сеть в нескольких десятках городов — Bing
— + крупные города и города-спутники = 15 городов — 2ГИС
— + десятки городов + физическая карта — Навител



  07
07
  Crowdsourcing maps
— OpenStreetMap
— Google Map Maker
— Яндекс Народная карта
— Wikimapia




  08
08



Внешний вид
Ограничения




“
    developers.google.com/maps/faq#usagelimits
    Web sites and applications using the Google Maps API may at no cost
    generate up to 25,000 map loads per day for each service.




    12
12



Сравним с OSM
Бесплатно*
Итого
—     Качество
—     Стиль
—     Цена




    20
20



     Как?
google://

openstreetmap api
Разобьём на подзадачи
— Подобрать механизм отображения
— Найти тайлы




  23
23
  Библиотеки, допускающие замену тайлов
— GeoMixer (kosmosnimki.ru)
— Google Maps
— Яндекс.Карты




  24
24
GeoMixer
kosmosnimki.ru/geomixer/docs/api_samples/ex_only_osm.html
<citcetFaha(
 srp>raelsMp

     dcmn.eEeetyd"a","S"
      ouetgtlmnBI(mp) OM,
          fnto(a)}
           ucinmp{
);
<srp>
 /cit




25
25
OSM в Google Maps
fnto iiilz( {
ucin ntaie)
    vrmp=nwgol.asMpdcmn.eEeetyd"a",{)
     a a      e ogemp.a(ouetgtlmnBI(mp) };
    mpstetrnwgol.asLtn(5105,6.152)
     a.eCne(e ogemp.aLg5.671 1421);
    mpstom1)
     a.eZo(8;
    vroeSre =nwgol.asIaeaTp(
     a pntet      e ogemp.mgMpye{
      gtier:fnto(l z {
       eTlUl ucinl, )
        vrX=l. %( < z; / wa
         a     lx  1 < ) / rp
        rtr "tp/tl.pnteta.r/
         eun ht:/ieoesrempog"
            +z+""+X+""+l. +"pg;
                /     /  ly   .n"
      },
      tlSz:nwgol.asSz(5,26,
       ieie e ogemp.ie26 5)
      mxom 1,
       aZo: 8
      nm:"S"
       ae OM
    };
     )
    mpmpye.e(om,oeSre)
     a.aTpsst's' pntet;
    mpstaTpI(om)
     a.eMpyed's';
    mpstpin(
     a.eOtos{
      mpyeotoOtos {
       aTpCnrlpin:
        mpyed:[
         aTpIs
          's'
           om,
          gol.asMpyedRAMP
           ogemp.aTpI.ODA,
          gol.asMpyedTRAN
           ogemp.aTpI.ERI,
          gol.asMpyedSTLIE
           ogemp.aTpI.AELT,
          gol.asMpyedHBI
           ogemp.aTpI.YRD
        ],
        sye gol.asMpyeotoSyeDODW_EU
         tl: ogemp.aTpCnrltl.RPONMN
      }
    };
     )




27
  }
27
Вычисляем адрес тайла
vroeSre =nwgol.asIaeaTp(
 a pntet  e ogemp.mgMpye{
 gtier:fnto(l z {
  eTlUl ucinl, )
  vrX=l. %( < z; / wa
   a   lx  1 < )  / rp
  rtr "tp/tl.pnteta.r/
   eun ht:/ieoesrempog"

       +z+""+X+""+l. +"pg
           /    /  ly  . n ";
 },
/ ..
 / .



28
28
Адреса тайлов
http://tile.openstreetmap.org/z /x /y .png




29
29
В Яндекс.Картах

и OSM — разные
   проекции
Слой OSM на Яндекс.Картах
yaslyrsoaead's#asre' fnto ( {
 mp.ae.trg.d(ommpufr, ucin )
  vrlyr=nwyasLyr
   a ae  e mp.ae(

       'tp/19267.4:01tsrah?=xy%&=z
        ht:/2.0.42580/m_.sxx%&=yz%'
       { poeto:yaspoeto.peiaMrao }
          rjcin mp.rjcinshrclectr
  );
  rtr lyr
   eun ae;
});



33
yasmpyesoaead's#asre' nwyasMpye'p
 mp.aTp.trg.d(ommpufr, e mp.aTp(O
33
GeoMixer
 Google Maps
 Яндекс.Карты




35
35
   Если делаем новую карту
— OpenLayers
— Leaflet
— ...




   36
36


openlayers.org




37
37


leafletjs.com



38
38




39
39
  Возможности Leaflet
— Отображение растрового слоя: тайлы и большие изображения
— Отображение маркеров
— Отображение векторных слоёв

      А с плагинами?
— Разные форматы данных, кластеризация, адресный поиск...




  40
40
Код для создания карты
<ikrl"tlset he=ht:/d.efej.o/efe-.
 ln e=syehe" rf"tp/cnlaltscmlalt0
  <-[fleI 8>
   !-i t E ]

       <ikrl"tlset he=ht:/d.efej.o/e
        ln e=syehe" rf"tp/cnlaltscml
  <[ni]-
   !edf->
<citsc"tp/cnlaltscmlalt05laltj"<
 srp r=ht:/d.efej.o/efe-./efe.s>
<ha>
 /ed
<oy<i i=mp sye"egt 60x>/i>
 bd>dv d"a" tl=hih: 0p"<dv



41
41
Код для создания карты
<cit
 srp>
  vrmp=Lmp'a'.eVe(5.7 6.9,1)
   a a  .a(mp)stiw[51, 13] 6;

  LtlLyr'tp/{}tl.s.r/z/x/y.n' {
   .ieae(ht:/s.ieomog{}{}{}pg,
  }.dT(a)
   )adomp;
<srp>
 /cit




42
42
Шаблон URL тайлов
http:// {s} .tile.osm.org/ {z} / {x} / {y} .png




44
44
   Плагины
— Форматы данных: GeoJSON, CSV, GPX, KML...
— Кластеризация

— Дополнительные элементы управления
— Адресный поиск
— Дополнительные проекции
— ...




   45
45
Адресный поиск в Leaflet
Leaflet GeoSearch




46
46
  Адресный поиск в Leaflet
  Leaflet GeoSearch
— Bing
— ESRI
— Google
— Nokia

— OpenStreetMap




  47
47
Nominatim
Nominatim (лат. по имени) — адресный поиск на основе данных OSM.




48
48
  Использование Nominatim
— Принимает запросы методом GET
— Возвращает до 10 результатов в виде XML либо JSON

— Каждый элемент содержит много информации




  49
49
Доступ к Номинатиму из Перла
github.com/shoorick/bing-imagery-tools/blob/master/watch.pl
ueGo:oe:OM
 s e:Cdr:S;

..
 .
m $ecdr=Go:oe:OM>e(;
 y gooe  e:Cdr:S-nw)
m @lcs=$ecdr>ecd(
 y pae  gooe-gooe
     lcto = $ef>aa(ades)
      oain > sl-prm'drs',
);



50
frahm $lc (@lcs){
 oec y pae  pae
     pit$lc-{ln}
      rn pae>'o';
50
MapQuest
developer.mapquest.com/web/products/open/sdk




51
51
  Другие библиотеки
— MapBox → Wax
— Stamen → Modest Maps




  52
52
  Mapstraction
  mapstraction.com
— Разные библиотеки, включая OpenLayers, Leaflet, MapQuest

— Разный адресный поиск




  53
53
*.tile.openstreetmap.org




54
54

“
    Because the OpenStreetMap Foundation is a non-profit organisation
    with limited resources, you can’t just slot in the tiles from openstreetmap.org
    as a replacement


    См. также Tile usage policy.




    55
55
cloudmade.com




       CloudMade
Подключение тайлов CloudMade в Leaflet
LtlLyr
 .ieae(
  'tp/{}tl.lumd.o/
   ht:/s.iecodaecm'
  +' c804779edfdcb7e4
    be5b3d43a1b11c7e '
  +' 97 26{}{}{}pg,
    / 9 /5/z/x/y.n'
  {trbto:'атгаиекедны ©Уатии< he=
   atiuin Крорфчси ане  чснк a rf"

  mxom 1}.dT(a)
   aZo: 8)adomp;




60
60
А можно и так
LtlLyr'tp/{}tl.lumd.o/
 .ieae(ht:/s.iecodaecm'
     +' ky / syed /5/z/x/y.n' {
       {e} {tlI} 26{}{}{}pg,

     ky кю,
      e : лч
     atiuin ..
      trbto: .,
     syed нмрсия
      tlI : ое_тл
}.dT(a)
 )adomp;




61
leafletjs.com/examples/choropleth.html
61
   Самодельные тайлы
— Mapnik
— Maperitive

— TileMill




   62
62



 Maperitive
TileMill
Y перевернулся?
Y перевернулся?
LtlLyr ..
 .ieae( .
     {
          ts tu
           m : r e,
          ..
           .



TMS — Tile Map Service




67
67



Для ленивых
Модули CMS




69
69
Ещё проще
shtosm.ru/2013/02/05/1/ + MapBox




75
75
Редактирование
— Самостоятельно
— Попросить кого-нибудь




  81
81
  Чем
— встроенный, на сайте osm.org

   — Potlach (Flash)
   —   Будет iD? (JavaScript)

— внешний:
   —        JOSM — josm.ru
   — Merkaartor
   — ...



  82
82
Будете много рисовать —




  берите JOSM
Не планируете?
Тогда совсем не рисуйте



Попросите кого-нибудь




84
84
  Форум
— forum.openstreetmap.org
   — .../viewtopic.php?id=5981 — Челябинская область




  85
85
Выводы
1. Можно использовать
2. Можно совмещать с другими картами

3. Можно использовать Leaflet для отображения
4. Внешний вид можно менять
5. Можно встраивать модулями CMS и через < f a e
                                          irm>
6. Можно редактировать




  89
89
  Что читать
— openstreetmap.org = osm.org

   — wiki.openstreetmap.org
   — forum.openstreetmap.org
— switch2osm.org
— shtosm.ru — ШТОСМ




  90
90
   Александр Сапожников
   Южно-Уральский государственный университет, Челябинск


— as@susu.ru
— twitter @shoorick77
— эта презентация: shoorick.ru/slide/uwdc/osm.html




   91
91

More Related Content

What's hot

7539 презентація
7539 презентація7539 презентація
7539 презентація
jasperwtf
 
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
AIST
 

What's hot (20)

Разбор алгоритмов генерации псевдослучайных чисел / Андрей Боронников (IT Ter...
Разбор алгоритмов генерации псевдослучайных чисел / Андрей Боронников (IT Ter...Разбор алгоритмов генерации псевдослучайных чисел / Андрей Боронников (IT Ter...
Разбор алгоритмов генерации псевдослучайных чисел / Андрей Боронников (IT Ter...
 
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
 
Найти иглоку в стоге сена
Найти иглоку в стоге сенаНайти иглоку в стоге сена
Найти иглоку в стоге сена
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)
 
7539 презентація
7539 презентація7539 презентація
7539 презентація
 
Erlang
ErlangErlang
Erlang
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
 
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL ModelsTMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
 
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
 
Komarov borba za-miesto-urfu_2013
Komarov borba za-miesto-urfu_2013Komarov borba za-miesto-urfu_2013
Komarov borba za-miesto-urfu_2013
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
 
Sequence recommenders
Sequence recommendersSequence recommenders
Sequence recommenders
 
Динамика и статика — метрики графов социальных сетей - Cергей Зефиров
Динамика и статика — метрики графов социальных сетей - Cергей ЗефировДинамика и статика — метрики графов социальных сетей - Cергей Зефиров
Динамика и статика — метрики графов социальных сетей - Cергей Зефиров
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
 
msumobi2. Лекция 1
msumobi2. Лекция 1msumobi2. Лекция 1
msumobi2. Лекция 1
 
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
 
Числа Фибоначчи
Числа ФибоначчиЧисла Фибоначчи
Числа Фибоначчи
 
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияДракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
 
Задача SLAM
Задача SLAMЗадача SLAM
Задача SLAM
 
Повышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JSПовышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JS
 

Viewers also liked (8)

Nobia Q4 2011 Interim Report
Nobia Q4 2011 Interim ReportNobia Q4 2011 Interim Report
Nobia Q4 2011 Interim Report
 
Visual Literacy Design Project
Visual Literacy Design ProjectVisual Literacy Design Project
Visual Literacy Design Project
 
Nobia Capital Market Day 2011-05-26
Nobia Capital Market Day 2011-05-26Nobia Capital Market Day 2011-05-26
Nobia Capital Market Day 2011-05-26
 
10 07-14 hosting con europe 2014 presentation unannotated
10 07-14 hosting con europe 2014 presentation unannotated10 07-14 hosting con europe 2014 presentation unannotated
10 07-14 hosting con europe 2014 presentation unannotated
 
Nobia Interim Report Q2 2011-07-19
Nobia Interim Report Q2 2011-07-19Nobia Interim Report Q2 2011-07-19
Nobia Interim Report Q2 2011-07-19
 
Nobia Q3 2011 Interim Presentation
Nobia Q3 2011 Interim PresentationNobia Q3 2011 Interim Presentation
Nobia Q3 2011 Interim Presentation
 
Creative Thinking
Creative ThinkingCreative Thinking
Creative Thinking
 
Nobia Q1 2012 presentation
Nobia Q1 2012 presentationNobia Q1 2012 presentation
Nobia Q1 2012 presentation
 

Similar to OpenStreetMap на вашем сайте

TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry Zaitsev
Iosif Itkin
 
Денис Чистяков: DOM, jQuery и все, все, все
Денис Чистяков: DOM, jQuery и все, все, всеДенис Чистяков: DOM, jQuery и все, все, все
Денис Чистяков: DOM, jQuery и все, все, все
Yandex
 
Алексей Иванов: немного о grunt.js #FrontTalks
Алексей Иванов: немного о grunt.js #FrontTalksАлексей Иванов: немного о grunt.js #FrontTalks
Алексей Иванов: немного о grunt.js #FrontTalks
JetStyle
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Mikhail Kurnosov
 
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Mikhail Kurnosov
 

Similar to OpenStreetMap на вашем сайте (20)

Python i18n
Python i18nPython i18n
Python i18n
 
TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry Zaitsev
 
Денис Чистяков: DOM, jQuery и все, все, все
Денис Чистяков: DOM, jQuery и все, все, всеДенис Чистяков: DOM, jQuery и все, все, все
Денис Чистяков: DOM, jQuery и все, все, все
 
Общественный контроль экологического мониторинга: R, R и ещё раз R!
Общественный контроль экологического мониторинга: R, R и ещё раз R!Общественный контроль экологического мониторинга: R, R и ещё раз R!
Общественный контроль экологического мониторинга: R, R и ещё раз R!
 
Алексей Иванов: немного о grunt.js #FrontTalks
Алексей Иванов: немного о grunt.js #FrontTalksАлексей Иванов: немного о grunt.js #FrontTalks
Алексей Иванов: немного о grunt.js #FrontTalks
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
Александр Кошелев: Препарирование работы асинхронного кода
Александр Кошелев: Препарирование работы асинхронного кодаАлександр Кошелев: Препарирование работы асинхронного кода
Александр Кошелев: Препарирование работы асинхронного кода
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 
Php Conf2007 Mapscript
Php Conf2007 MapscriptPhp Conf2007 Mapscript
Php Conf2007 Mapscript
 
Почему Rust стоит вашего внимания
Почему Rust стоит вашего вниманияПочему Rust стоит вашего внимания
Почему Rust стоит вашего внимания
 
Обзор программных средств Майкрософт для графики и визуализации: коммерческой...
Обзор программных средств Майкрософт для графики и визуализации: коммерческой...Обзор программных средств Майкрософт для графики и визуализации: коммерческой...
Обзор программных средств Майкрософт для графики и визуализации: коммерческой...
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
 
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
Tomato Engine: Как мы создавали онлайн шутер с авторитарным сервером
Tomato Engine: Как мы создавали онлайн шутер с авторитарным серверомTomato Engine: Как мы создавали онлайн шутер с авторитарным сервером
Tomato Engine: Как мы создавали онлайн шутер с авторитарным сервером
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
 
Вечный вопрос измерения времени
Вечный вопрос измерения времениВечный вопрос измерения времени
Вечный вопрос измерения времени
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисленияПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
 

OpenStreetMap на вашем сайте