Красим школы и стоянки
May. 17th, 2016 07:30 amВ прошлых сериях экспериментов с ТайлМиллом доводилось раскрашивать находящиеся в университетском городке здания и добавлять номера домов. Теперь попробуем раскрасить какую-нибудь территорию, да и здания можно перекрасить как-нибудь иначе. Заодно и повод подвернулся: авторы сайта mapstr.ru решили поменять самодельную карту Стерлитамака на OpenStreetMap — там город неплохо отрисован (хотя, конечно, есть ещё, что улучшать), им в целом нравится стиль, которым отрисована карта окрестностей нашего университета, но им хочется, чтоб было как в ДубльГИСе — чтоб стоянки, дворы и частный сектор были залиты разными цветами. Ну и школы с детсадами хочется выделить цветом.
Делаем так:
1. Перед импортом данных OSM в PostGIS в файле imposm-mapping.py указываем, что нам нужно предназначение здания, а относится ли оно к университету, нас не интересует:
там же указываем, что у территорий нас интересует тэг
2. Импортируем данные.
3. Запускаем TileMill, выбираем нужный проект, идём в свойства слоёв, путём редактирования фрагмента SQL-запроса добавляем поля:
4. Исправляем стилевые правила:
В базовом файле base.mss указываем необходимость особенной заливки частного сектора
а также зданий образовательных учреждений: детских садов, школ, ПТУ/техникумов/колледжей и институтов/академий/университетов:
добавляем цвета в палитру palette.mss
Результат — на http://mapstr.ru/map/

http://shoorick.ru/2016/05/17/school-painging/
Делаем так:
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/

http://shoorick.ru/2016/05/17/school-painging/