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.***

#26 2011-01-15 16:00:17

siberiano
Moderator
From: Novosibirsk
Registered: 2010-02-25
Posts: 1,006
Website

Re: Свои собственные стили карт, Mapnik, CloudMade

Понятно.

Помните, тут обсуждали, чтобы города и деревни рисовать не точками, а полигонами, чтобы не дублировать точкой то, что сделано полигоном?

Сейчас мапник криво рисует (на более низких зумах) то, что сделано полигонами. Из-за этого под него многое просто рисуют точками.

Вот попытка исправить это. Переписаны запросы из layer-placenames.xml.inc, последние 2 блока Layer:

<Layer name="placenames-medium" status="on" srs="&osm2pgsql_projection;">
    <StyleName>city</StyleName>
    <StyleName>town</StyleName>
    <Datasource>
      <Parameter name="table">
      (select way,place,name
      from &prefix;_point
      where place in ('city','metropolis','town','large_town','small_town')
        and (capital is null or capital&lt;&gt;'yes')
      union
      select way,place,name
      from &prefix;_polygon
      where place in ('city','metropolis','town','large_town','small_town')
      ) as placenames</Parameter>
      &datasource-settings;
    </Datasource>
</Layer>
<Layer name="placenames-small" status="on" srs="&osm2pgsql_projection;">
    <StyleName>suburb</StyleName>
    <StyleName>village</StyleName>
    <StyleName>hamlet</StyleName>
    <Datasource>
      <Parameter name="table">
      (
        select way,place,name
        from &prefix;_point
        where place in ('suburb','village','large_village','hamlet','locality','isolated_dwelling')
        union
        select way,place,name
        from &prefix;_polygon
        where place in ('suburb','village','large_village','hamlet','locality','isolated_dwelling')
       ) as placenames</Parameter>
      &datasource-settings;
    </Datasource>
</Layer>

Просто к местам-точкам были добавлены места-полигоны.
В первом блоке Layer второй запрос не содержит условия на capital, т.к. в таблице полигонов такой колонки нет.

Однако есть проблема: не все деревни рисуются.

Вот деревня, которая рисуется из полигона (её точку я удалил из базы вручную):

  <way id="58704171" version="3" timestamp="2010-05-31T04:10:49Z" uid="243916" user="titanlis" changeset="4859141">
    (точки)
    <tag k="addr:country" v="RU"/>
    <tag k="addr:district" v="Мошковский район"/>
    <tag k="addr:postcode" v="633145"/>
    <tag k="addr:region" v="Новосибирская область"/>
    <tag k="cladr:code" v="5401900003500"/>
    <tag k="cladr:name" v="Старый Порос"/>
    <tag k="cladr:suffix" v="Село"/>
    <tag k="landuse" v="residential"/>
    <tag k="name" v="Старый Порос"/>
    <tag k="place" v="village"/>
  </way>

А вот эта деревня даже не записана из .osm в БД (select * from planet_osm_polygon where osm_id=89434804; => 0 строк).

<way id="89434804" version="3" timestamp="2010-12-13T18:19:21Z" uid="237049" user="siberiano" changeset="6650537">
    (точки)
    <tag k="name" v="Журавка"/>
    <tag k="name:en" v="Zhuravka"/>
    <tag k="place" v="village"/>
    <tag k="place_name" v="Журавка"/>
  </way>

Я хочу довести это до рабочего патча и отправить разработчикам, либо попросить права коммитить в осм-мапник. У кого какие предложения по поводу деревни?

Last edited by siberiano (2011-01-15 16:27:11)

Offline

#27 2011-01-15 16:49:04

siberiano
Moderator
From: Novosibirsk
Registered: 2010-02-25
Posts: 1,006
Website

Re: Свои собственные стили карт, Mapnik, CloudMade

Результаты опытов:
nsk-new_.png

Offline

#28 2011-01-15 17:09:39

Hind
Member
From: Moscow
Registered: 2009-05-25
Posts: 3,950

Re: Свои собственные стили карт, Mapnik, CloudMade

Мои глаза!

Offline

#29 2011-01-16 07:59:14

siberiano
Moderator
From: Novosibirsk
Registered: 2010-02-25
Posts: 1,006
Website

Re: Свои собственные стили карт, Mapnik, CloudMade

google_osm_merged_.jpg
Повозившись с дорогами, понял, в чём проблема с прозрачностью мапника.

Last edited by siberiano (2011-01-16 10:18:57)

Offline

#30 2011-01-24 18:27:00

siberiano
Moderator
From: Novosibirsk
Registered: 2010-02-25
Posts: 1,006
Website

Re: Свои собственные стили карт, Mapnik, CloudMade

Кое-что получаться стало
google3_.jpg

Offline

#31 2011-01-24 19:32:00

Jekader
Member
From: Chisinau, Moldova
Registered: 2010-10-10
Posts: 167

Re: Свои собственные стили карт, Mapnik, CloudMade

в правильном направлении движешься! Я тоже как-то думал сделать стиль для гибридного слоя, но быстро поутих энтузиазм, когда не смог почему-то увязать свои тайлы с google satellite.

Offline

#32 2011-01-24 19:48:22

siberiano
Moderator
From: Novosibirsk
Registered: 2010-02-25
Posts: 1,006
Website

Re: Свои собственные стили карт, Mapnik, CloudMade

Спасибо!
karasuk_.jpg

Offline

#33 2012-07-09 09:11:27

сvisto
Member
Registered: 2012-07-09
Posts: 3

Re: Свои собственные стили карт, Mapnik, CloudMade

А можно ли взять (загрузить себе) стили карт, созданные в редакторе стилей cloudmade, чтобы использовать при самостоятельном рендеринге? Как использовать эти стили на maps.cloudmade.com - здесь все ясно. А вот как забрать у них свое творчество - не ясно.

Offline

#34 2012-11-30 06:11:52

progserega
Member
From: Владивосток
Registered: 2009-12-31
Posts: 456

Re: Свои собственные стили карт, Mapnik, CloudMade

Jekader wrote:
Surly wrote:

заставить рисовать те объекты, которые не рисует стандартный рендерер, было бы очень ценно.

с мапником это крайне просто - сначала рихтуем стиль импорта osm2pgsql, чтобы нужные нам map features попали в базу, затем дополняем стиль мапника как пожелаем.

А не могли бы поконкретнее - как это сделать? Может есть документация какая внятная? То, что я нашёл на вики - не совсем внятно и мало.


matrix.org: @progserega:rsprim.ru

Offline

#35 2012-11-30 08:10:32

Jekader
Member
From: Chisinau, Moldova
Registered: 2010-10-10
Posts: 167

Re: Свои собственные стили карт, Mapnik, CloudMade

ну для начала - берём и правим стандартный стиль импорта osm2pgsql - копируем /usr/share/osm2pgsql/default.style к себе в папочку и правим.
Я например к нему добавил такое:

node,way   name:ru      text         linear
node,way   design       text         linear
node,way   design:ref   text         linear
node,way   voltage      text         linear

Эти строки добавят в импорт теги name:ru, design, design:ref и voltage.
После этого запускаем импорт с новым стилем: osm2pgsql -S rus_names.style planet.osm.bz2
Всё, файлы у нас в базе.
Теперь правим/создаём стиль мапника с нужными нам параметрами.
Например, вот что я сделал с тегом voltage указанным вверху:
1) Правила

<Style name="power">
    <Rule>
      <Filter>[voltage] = '380' or [voltage] = '400' or [voltage] = '220'</Filter>
      <MinScaleDenominator>10000</MinScaleDenominator>
         <LineSymbolizer>
          <CssParameter name="stroke">green</CssParameter>
          <CssParameter name="stroke-width">1.2</CssParameter>
        <CssParameter name="stroke-opacity">0.6</CssParameter>
         </LineSymbolizer>
    </Rule>
    <Rule>
      <Filter>[voltage] = '35000' or [voltage] = '33000'</Filter>
      <MinScaleDenominator>10000</MinScaleDenominator>
         <LineSymbolizer>
          <CssParameter name="stroke">orange</CssParameter>
        <CssParameter name="stroke-width">2.5</CssParameter>
        <CssParameter name="stroke-opacity">0.6</CssParameter>
         </LineSymbolizer>
    </Rule>
    <Rule>
      <Filter>[voltage] = '110000'</Filter>
      <MinScaleDenominator>10000</MinScaleDenominator>
         <LineSymbolizer>
          <CssParameter name="stroke">red</CssParameter>
        <CssParameter name="stroke-width">2.5</CssParameter>
        <CssParameter name="stroke-opacity">0.6</CssParameter>
         </LineSymbolizer>
    </Rule>
    <Rule>
      <Filter>[voltage] = '330000'</Filter>
      <MinScaleDenominator>10000</MinScaleDenominator>
         <LineSymbolizer>
          <CssParameter name="stroke">#F0A</CssParameter>
        <CssParameter name="stroke-width">3</CssParameter>
        <CssParameter name="stroke-opacity">0.7</CssParameter>
         </LineSymbolizer>
    </Rule>
    <Rule>
    <ElseFilter/>
      <MinScaleDenominator>10000</MinScaleDenominator>
      <LineSymbolizer>
        <CssParameter name="stroke">#AAA</CssParameter>
        <CssParameter name="stroke-width">2.5</CssParameter>
        <CssParameter name="stroke-opacity">0.6</CssParameter>
        <CssParameter name="stroke-dasharray">10,1</CssParameter>
      </LineSymbolizer>
    </Rule> 
</Style>

тут мы описываем, по каким критериям отбирать нужные нам линии и как именно их рисовать
2) Сам слой:

<Layer name="power" status="on" srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs +over">
    <StyleName>power</StyleName>
    <Datasource>
      <Parameter name="type">postgis</Parameter>
      <Parameter name="user">jekader</Parameter>
      <Parameter name="dbname">gis</Parameter>
      <Parameter name="estimate_extent">false</Parameter>
      <Parameter name="table">(select way,voltage from planet_osm_line where "power"='line' ) as power</Parameter>
      <Parameter name="extent">-20037508,-19929239,20037508,19929239</Parameter>
    </Datasource>
</Layer>

тут Мы указываем откуда брать геометрии (включая SELECT из базы)

Эти правки делаются к примеру в файле osm.xml - больше подробностей тут:
http://wiki.openstreetmap.org/wiki/RU:Mapnik

Last edited by Jekader (2012-11-30 08:19:59)

Offline

Board footer

Powered by FluxBB