Недавняя запись в ЖЖ-сообществе «Челябинский Челябинск» напомнила, что хотел я как-то собрать рельеф с дорогами на одной карте. Хотел — сделал.
Сделано при помощи Maperitive — он кроссплатформенный (хоть и выглядит по-виндовому), написан на питоне, падает часто. Делаем так:
1. Масштабируем карту, чтоб захватить нужную область.
2. Генерируем фон, с цветом, зависящим от высоты. Если запустить генерацию без дополнительных параметров, то всё зальёт зелёным без заметного контраста, поэтому надо указать свои цвета:
generate-hypsometric ramps=-200:#003399;200:#33cc66;250:#eeee99;350:#993300
Что даст шкалу, где наиболее заметный контраст приходится на высоты от 200 до 350 метров над уровнем моря
3. Для красоты добавляем отмывку: Tools → Generate Hillshading. В меню три подобных пункта — можно выбрать тот, чьи результаты больше нравятся. Если хочется большего контраста, добавлени слоя с отмывкой можно повторить.
4. Скачиваем данные OpenStreetMap для выбранной области: Map → Download Data (Overpass API) Ctrl+Shift+D
5. Создаём стилевой файл с дорогами и границами, но без всего остального, например, такой:
// rendering rules for Maperitive - roads and boundaries
// http://maperitive.net
// Created by Alexander Sapozhnikov, based on style by Igor Brejc
// Released under the Creative Commons Attribution-ShareAlike 3.0 License (http://creativecommons.org/licenses/by-sa/3.0/)
features
lines
road major : highway=motorway OR highway=trunk OR highway=primary
road minor : highway=motorway_link OR highway=trunk_link OR highway=primary_link OR highway=secondary
boundary country : relation[type=boundary AND boundary=administrative AND admin_level=2]
boundary region : relation[type=boundary AND boundary=administrative AND admin_level=4]
boundary province : relation[type=boundary AND boundary=administrative AND admin_level=6]
boundary municipal : relation[type=boundary AND boundary=administrative AND admin_level=7]
properties
map-background-color : #F1EEE8
map-background-opacity : 1
map-sea-color : #B5D0D0
map.rendering.lflp.min-buffer-space : 5
map.rendering.lflp.max-allowed-corner-angle : 40
rules
target : road*
if : road major
define
line-color : #ff9900
line-width : 2
border-width : 10%
border-color : #000000
border-style : solid
elseif : road minor
define
line-color : #cc6600
line-width : 1
draw : line
target : boundary*
define
line-color : #cc3399
line-style : dash
if : boundary country
define
line-width : 5
elseif : boundary region
define
line-width : 4
elseif : boundary province
define
line-width : 2
elseif : boundary municipal
define
line-width : 1
draw : line
6. Выбираем этот стиль:
use-ruleset location="/home/as/map/osm/maperitive/rules/road.mrules"
7. Получившуюся карту экспортируем в желаемый формат — см. меню Tools.
Вы должны авторизоваться чтобы опубликовать комментарий.