#Челябинск, ночь на двадцать второе июня. Перед памятником танкистам-добровольцам горят свечи, стоя́щие в форме цифр 7 и 5.
Архив рубрики: география
Красим школы и стоянки
В прошлых сериях экспериментов с ТайлМиллом доводилось раскрашивать находящиеся в университетском городке здания и добавлять номера домов. Теперь попробуем раскрасить какую-нибудь территорию, да и здания можно перекрасить как-нибудь иначе. Заодно и повод подвернулся: авторы сайта mapstr.ru решили поменять самодельную карту Стерлитамака на OpenStreetMap — там город неплохо отрисован (хотя, конечно, есть ещё, что улучшать), им в целом нравится стиль, которым отрисована карта окрестностей нашего университета, но им хочется, чтоб было как в ДубльГИСе — чтоб стоянки, дворы и частный сектор были залиты разными цветами. Ну и школы с детсадами хочется выделить цветом.
Делаем так:
1. Перед импортом данных OSM в PostGIS в файле imposm-mapping.py указываем, что нам нужно предназначение здания, а относится ли оно к университету, нас не интересует:
buildings = Polygons(
name = 'buildings',
fields = (
('area', PseudoArea()),
('addr:housenumber',String()),
('building:levels',Integer()),
('height',Integer()),
('amenity',String()),
),
mapping = {
'building': (
'__any__',
),
'railway': (
'station',
),
'aeroway': (
'terminal',
),
}
)
там же указываем, что у территорий нас интересует тэг residential
— его значение rural
можно использовать для обозначения деревенских жилых территорий.
landusages = Polygons(
name = 'landusages',
fields = (
('area', PseudoArea()),
('residential', String()),
('z_order', ZOrder([
'pedestrian',
...
2. Импортируем данные.
3. Запускаем TileMill, выбираем нужный проект, идём в свойства слоёв, путём редактирования фрагмента SQL-запроса добавляем поля:
- amenity — к слою #buildings
- residential — к слоям #landuse, #landuse_gen0, #landuse_gen1
4. Исправляем стилевые правила:
В базовом файле base.mss указываем необходимость особенной заливки частного сектора
#landuse[zoom>12] {
[type='allotments'] { polygon-fill: @agriculture; }
// ...
[type='residential'] {
polygon-fill: @residential;
[residential='rural'] {
polygon-fill: @rural;
}
}
}
а также зданий образовательных учреждений: детских садов, школ, ПТУ/техникумов/колледжей и институтов/академий/университетов:
// At the highest zoom levels, render buildings in fancy pseudo-3D.
// Ordering polygons by their Y-position is necessary for this effect
// so we use a separate layer that does this for us.
[type != 'hedge'] {
building-fill: @building;
building-height: 2 + [building:levels] * 2;
[height>0] {
building-height: 2 + [height] / 1.5;
}
// Our buildings
[amenity = 'kindergarten'] {
building-fill: @kindergarten_building;
line-color:darken(@kindergarten_building,10%);
}
[amenity = 'school'] {
building-fill: @school_building;
line-color:darken(@school_building,10%);
}
[amenity = 'college'] {
building-fill: @college_building;
line-color:darken(@college_building,10%);
}
[amenity = 'university'] {
building-fill: @university_building;
line-color:darken(@university_building,10%);
}
}
[type = 'hedge'] {
building-fill:@wooded;
building-height:1.25;
}
}
}
добавляем цвета в палитру palette.mss
@residential: #e9e1cd;
@rural: #ece2b5;
@commercial: #e7e0f4;
@industrial: #eeeeee;
@parking: #e5eaf0;
/* Buildings */
@building: #bbaa99;
@educational_mix: #0099ff;
@kindergarten_building: mix(@building, @educational_mix, 90%);
@school_building: mix(@building, @educational_mix, 85%);
@college_building: mix(@building, @educational_mix, 80%);
@university_building: mix(@building, @educational_mix, 75%);
Результат — на http://mapstr.ru/map/
Воздух!
Некуда бежать
В комнату из коридора доносится запах краски. Открываешь окно, чтоб проветрить — врывается запах металлургического комбината (фиг знает, которого из двух — я их по запаху не различаю).
Нелегко жить в промышленном городе
Конкуренция меж жёлто-синим и зелёным
Челябинская «Касторама» с апреля продлевает своё рабочее время — будут работать, если верить тому, что у них в магазине говорят, с 6 до 23 часов. Чую, этим и ограничатся — не сто́ит ждать других улучшений. Сейчас по сравнению с ними в «Леруа Мерлене» цены в среднем чуть ниже (как мне показалось), сайт сделан лучше да и ассортимент побогаче. От дома до обоих магазинов растояние одинаково, а вот с работы до жёлто-синего можно через парк прогуляться, а до зелёного — нет. Так что у жёлто-синих ещё есть шанс увидеть меня в качестве покупателя.
Не пизанская и не башня
Ёлки и не ёлки
Решив в очередной раз разобраться с названиями на импортных языках новогодних конусообразных растущих на Южном Урале хвойных деревьев, полез в википедию, хоть она и не авторитетный источник — нашёл. Запишу и тут, чтоб не забыть:
А теперь — слайды! обои: 2400×1600 (3:2), 2134×1600 (4:3), 2000×1600 (5:4), 2560×1600 (16:10), 2560×1440 (16:9). Пихта.
30.01.2010, Южный Урал, хребет Зигальга́.
Челябинская область, Ката́в-Ива́новский район, окрестности села Тюлю́к.
Трудности перевода
Всё-таки в английском с его вагоном значений для каждого слова, не всегда легко.
Вот, скажем, есть фотография с местными птицами:
И как её подписать? Вот по-русски можно вообще не задумываясь написать «Синицы». Или, обчитавшись википедии — «Большие синицы». А по-английски? Одна птица — tit. Или даже great tit. А две? Great tits? Гугл, например, по такому запросу выдаёт не только синиц
Сосна
Челябинская область, Миасский городской округ, между станциями Сыростан и Тургояк. Декабрь 2009 года.
Обои: 2400×1600 (3:2), 2134×1600 (4:3), 2000×1600 (5:4), 2560×1600 (16:10),
2560×1440 (16:9).
Рельеф и дороги
Недавняя запись в ЖЖ-сообществе «Челябинский Челябинск» напомнила, что хотел я как-то собрать рельеф с дорогами на одной карте. Хотел — сделал.
Сделано при помощи 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.