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

siberiano, “пейте сладкий чай” (ц) кое-кто.
mapnik 0.7.1 - на данный момент текущая ревизия мапника. Она же есть и в svn.
В транке - лежит mapnik2, новая ветка, несовместимая стилями со старой (и слава Богу).
А “откатываться на старую ревизию” и после этого на что-то жаловаться… Где вы, кстати, такой вариант вообще нашли и по какому руководству ставите?

Кроме того, generate_image / generate_tiles - отладочные скрипты. Никто в здравом уме ими в production не пользуется.

Я сейчас с конфетами пью. Ставил по вот этому.

0.7.1!!! Ррррррр.

Посмотрел, в какой ревизии сделана строка про версию, и решил откатить. Не работает.

Неужели для рисования каждый пишет свой скрипт?

ээээ скрипт? для рисования я запускаю жосм.
для рендеринга мне достаточно нелюбимых котярой generate_*.py. Лишь прописываю в эти скрипты нужные мне области, да путь к апачевскому каталогу.

а стили — да, каждый пишет свои. Затем и мапник ставится — чтобы на своей машине ковыряться и больший контроль иметь.

Нашёл, где я мимо блока инструкциий проскочил и выкачал не то. Пробую поставить правильно.

Рисует тайлы Новосибирской области, только почему-то от 1 до 9 зума он считает, что область находится в океане. Экстент - по bounding box области. В чём может быть дело?

Для рендера запускаю команду так:

render_tiles((82.57681, 54.70948, 83.27714, 55.2735), os.path.join(os.getcwd(), 'osm.xml'), os.path.join(os.getcwd(), 'tiles/'), 5, 18, name="Novosibirsk", num_threads=2)

Содержимое world boundaries.

-rw-r--r--  1 siberiano siberiano  29M 2010-02-27 04:59 10m_populated_places.dbf
-rw-r--r--  1 siberiano siberiano  145 2010-02-27 02:56 10m_populated_places.prj
-rw-r--r--  1 siberiano siberiano  68K 2010-02-27 04:59 10m_populated_places.sbn
-rw-r--r--  1 siberiano siberiano 3.3K 2010-02-27 04:59 10m_populated_places.sbx
-rw-r--r--  1 siberiano siberiano 201K 2010-02-27 04:59 10m_populated_places.shp
-rw-r--r--  1 siberiano siberiano  58K 2010-02-27 04:59 10m_populated_places.shx
-rw-r--r--  1 siberiano siberiano 9.0K 2010-03-26 01:16 110m_admin_0_boundary_lines_land.dbf
-rw-r--r--  1 siberiano siberiano  145 2010-03-26 01:16 110m_admin_0_boundary_lines_land.prj
-rw-r--r--  1 siberiano siberiano 1.8K 2010-03-26 01:16 110m_admin_0_boundary_lines_land.sbn
-rw-r--r--  1 siberiano siberiano  276 2010-03-26 01:16 110m_admin_0_boundary_lines_land.sbx
-rw-r--r--  1 siberiano siberiano  52K 2010-03-26 01:16 110m_admin_0_boundary_lines_land.shp
-rw-r--r--  1 siberiano siberiano 1.3K 2010-03-26 01:16 110m_admin_0_boundary_lines_land.shp.xml
-rw-r--r--  1 siberiano siberiano 1.4K 2010-03-26 01:16 110m_admin_0_boundary_lines_land.shx
-rw-r--r--  1 siberiano siberiano 3.4M 2007-03-10 16:05 builtup_area.dbf
-rw-r--r--  1 siberiano siberiano 273K 2007-03-10 16:05 builtup_area.index
-rw-r--r--  1 siberiano siberiano  513 2007-03-10 16:05 builtup_area.prj
-rw-r--r--  1 siberiano siberiano  13M 2007-03-10 16:05 builtup_area.shp
-rw-r--r--  1 siberiano siberiano 285K 2007-03-10 16:05 builtup_area.shx
-rw-r--r--  1 siberiano siberiano  16K 2007-03-10 16:07 places.dbf
-rw-r--r--  1 siberiano siberiano  333 2007-03-10 16:07 places.prj
-rw-r--r--  1 siberiano siberiano 7.0K 2007-03-10 16:07 places.shp
-rw-r--r--  1 siberiano siberiano 2.1K 2007-03-10 16:07 places.shx
-rw-r--r--  1 siberiano siberiano 5.0M 2011-01-02 05:19 processed_p.dbf
-rw-r--r--  1 siberiano siberiano 2.3M 2011-01-02 05:19 processed_p.index
-rw-r--r--  1 siberiano siberiano 456M 2011-01-02 05:19 processed_p.shp
-rw-r--r--  1 siberiano siberiano 4.0M 2011-01-02 05:19 processed_p.shx
-rw-r--r--  1 siberiano siberiano 2.9M 2011-01-02 03:54 shoreline_300.dbf
-rw-r--r--  1 siberiano siberiano 1.3M 2011-01-02 03:54 shoreline_300.index
-rw-r--r--  1 siberiano siberiano 6.4M 2011-01-15 00:41 shoreline_300.shp
-rw-r--r--  1 siberiano siberiano 2.0M 2011-01-02 03:54 shoreline_300.shx
-rw-r--r--  1 siberiano siberiano 4.0M 2007-03-09 17:31 world_bnd_m.dbf
-rw-r--r--  1 siberiano siberiano 246K 2007-09-10 02:28 world_bnd_m.index
-rw-r--r--  1 siberiano siberiano  355 2007-03-09 17:31 world_bnd_m.prj
-rw-r--r--  1 siberiano siberiano  47M 2007-03-09 17:32 world_bnd_m.shp
-rw-r--r--  1 siberiano siberiano 244K 2007-03-09 17:32 world_bnd_m.shx
-rw-r--r--  1 siberiano siberiano 659K 2008-03-31 04:42 world_boundaries_m.dbf
-rw-r--r--  1 siberiano siberiano  85K 2008-03-31 04:48 world_boundaries_m.index
-rw-r--r--  1 siberiano siberiano  355 2008-03-31 04:51 world_boundaries_m.prj
-rw-r--r--  1 siberiano siberiano 6.4M 2008-03-31 04:42 world_boundaries_m.shp
-rw-r--r--  1 siberiano siberiano  30K 2008-03-31 04:42 world_boundaries_m.shx

Вот мой стиль , давно делал.

Список файлов совпадает с моим. Ты используешь стандартный osm.xml? Проверь путь к каталогу с шейпами в inc/settings.xml.inc.

По-моему, это не та ссылка. Стиль 29057 - это мой. :slight_smile:

в файле layer-shapefiles.xml.inc нашёл такие пути:

<Datasource>
      <Parameter name="type">shape</Parameter>
      <Parameter name="file">&world_boundaries;/10m_populated_places</Parameter>
      <Parameter name="encoding">latin1</Parameter>
    </Datasource>

У некоторых были .shp на конце, у некоторых - нет. Попробовал и добавить везде, и убрать - всё равно вода получается.

Ну да, здесь ссылка на settings.xml.inc, где определяется путь к world_boundaries. А поскольку шейпы — это несколько файлов, здесь название написано без расширения.

Можно попробовать в settings.xml.inc написать полный путь, а не относительный.

Вот мой стиль , давно делал.

Ня, мой стиль.

Спасибо!

Не нравится мне, что в КМ нельзя редактировать natural=heath. Написал им тикет.

Кстати, похоже, в Мапнике изменили стиль: теперь райцентры рисуются до 9 зума, а раньше - до 12.

Нет, это просто кто-то переделал райцентры в town, как рекомендует вики :slight_smile: А они издавна на 9-м зуме рисовались.

Понятно.

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

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

Вот попытка исправить это. Переписаны запросы из 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>

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

Результаты опытов:

Мои глаза!


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

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