You are not logged in.
- Topics: Active | Unanswered
Announcement
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<>'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
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
Offline
#30 2011-01-24 18:27:00
- siberiano
- Moderator
- From: Novosibirsk
- Registered: 2010-02-25
- Posts: 1,006
- Website
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
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
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