Страница 1 из 1
Градиентная заливка полигонов или Ваши предложения
Добавлено: 22 ноя 2013, 10:00
SPunkY
Доброго времени суток!
Есть Openlayers карта, есть json, приходящий с GeoServer-a, и задача раскрасить карту в соответствии, например, с температурой воздуха. Значит выполнил триангуляцию, построил много треугольных полигонов, раскрасил их в зависимости от среднего значения температур в точках составляющих полигон. Теперь задача каким то образом сгладить углы этих треугольников. Посоветуйте чего нибудь хорошего, пожалуйста!
По поводу градиентной заливки, не удалось что либо найти, если это вообще возможно, подскажите как это сделать

Re: Градиентная заливка полигонов или Ваши предложения
Добавлено: 22 ноя 2013, 10:40
Максим Дубинин
нужен растр, а не вектор
Re: Градиентная заливка полигонов или Ваши предложения
Добавлено: 22 ноя 2013, 12:59
Донецков
либо попробуйте другой тип интерполяции вместо триангуляции...
Re: Градиентная заливка полигонов или Ваши предложения
Добавлено: 27 ноя 2013, 10:47
SPunkY
Создал WMS-слой, теперь, полагаю, ему нужен правильный SLD-стиль.
Нашел примеры стилей, с очень похожими на желаемый результат картинками
http://docs.geoserver.org/stable/en/use ... sters.html
Добавил стиль в GeoServer, указал его в свойствах слоя и... ничего. Розовые квадраты. Собственно вопрос, что я не так сделал? (другие стили, например показать точки красными квадратами, работают исправно)
Re: Градиентная заливка полигонов или Ваши предложения
Добавлено: 27 ноя 2013, 10:55
Vladimir_R
нужен растр, а не вектор
Если внимательнее почитаете текст по ссылке, которую вы приводите, то поймете почему стиль не применяется.
Что из себя представляет json? Какие данные в нем?
Re: Градиентная заливка полигонов или Ваши предложения
Добавлено: 27 ноя 2013, 11:08
SPunkY
Именно по этому я
SPunkY писал(а):Создал WMS-слой, ...
Код: Выделить всё
wms_gis_synop_all = new OpenLayers.Layer.WMS('wms_gis_synop_all',
'http://service.meteo.ru:8080/geoserver/wms', {
layers: 'gis_synop_all', transparent: true, format: 'image/png',
...
});
и он, по крайней мере выглядит, довольно таки растровым
вот кусочек..

Re: Градиентная заливка полигонов или Ваши предложения
Добавлено: 27 ноя 2013, 11:13
Vladimir_R
Исходные данные должны быть растровыми для применения стилей описанных по ссылке. WMS, а вернее ответ на запрос getMap является результатом рендеренга.
Re: Градиентная заливка полигонов или Ваши предложения
Добавлено: 27 ноя 2013, 12:30
SPunkY
То есть, имея лишь GeoServer и OpenLayers плавных переходов добиться не удастся?
Тогда такой вопрос. Можно ли каким то образом закруглить углы полигонов?
Получить что то вроде:

Re: Градиентная заливка полигонов или Ваши предложения
Добавлено: 27 ноя 2013, 12:43
Vladimir_R
Все зависит от данных. Вопрос источника и формата. Можно написать
стиль для geoserver
Re: Градиентная заливка полигонов или Ваши предложения
Добавлено: 27 ноя 2013, 13:45
SPunkY
Спасибо! надеюсь получится..

Re: Градиентная заливка полигонов или Ваши предложения
Добавлено: 10 дек 2013, 17:36
SPunkY
Воспользовался советом, получилась вот такая красота:
Но, очень хочется добиться еще большей гладкости! подскажите пожалуйста, что не так?
sld выглядит так:
Код: Выделить всё
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
xmlns="http://www.opengis.net/sld"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<NamedLayer>
<Name>Heatmap</Name>
<UserStyle>
<Title>Heatmap</Title>
<Abstract>A heatmap surface showing population density</Abstract>
<FeatureTypeStyle>
<Transformation>
<ogc:Function name="gs:Heatmap">
<ogc:Function name="parameter">
<ogc:Literal>data</ogc:Literal>
</ogc:Function>
<ogc:Function name="parameter">
<ogc:Literal>weightAttr</ogc:Literal>
<ogc:Literal>tempdbmn</ogc:Literal>
</ogc:Function>
<ogc:Function name="parameter">
<ogc:Literal>radiusPixels</ogc:Literal>
<ogc:Function name="env">
<ogc:Literal>radius</ogc:Literal>
<ogc:Literal>550</ogc:Literal>
</ogc:Function>
</ogc:Function>
<ogc:Function name="parameter">
<ogc:Literal>pixelsPerCell</ogc:Literal>
<ogc:Literal>30</ogc:Literal>
</ogc:Function>
<ogc:Function name="parameter">
<ogc:Literal>outputBBOX</ogc:Literal>
<ogc:Function name="env">
<ogc:Literal>wms_bbox</ogc:Literal>
</ogc:Function>
</ogc:Function>
<ogc:Function name="parameter">
<ogc:Literal>outputWidth</ogc:Literal>
<ogc:Function name="env">
<ogc:Literal>wms_width</ogc:Literal>
</ogc:Function>
</ogc:Function>
<ogc:Function name="parameter">
<ogc:Literal>outputHeight</ogc:Literal>
<ogc:Function name="env">
<ogc:Literal>wms_height</ogc:Literal>
</ogc:Function>
</ogc:Function>
</ogc:Function>
</Transformation>
<Rule>
<RasterSymbolizer>
<!-- specify geometry attribute to pass validation -->
<Geometry>
<ogc:PropertyName>the_geom</ogc:PropertyName></Geometry>
<Opacity>0.6</Opacity>
<ColorMap type="ramp" >
<ColorMapEntry color="#0002ff" quantity="0.00" />
<ColorMapEntry color="#003cff" quantity="0.05" />
<ColorMapEntry color="#0072ff" quantity="0.10" />
<ColorMapEntry color="#0095ff" quantity="0.15" />
<ColorMapEntry color="#00b2ff" quantity="0.20" />
<ColorMapEntry color="#00c1ff" quantity="0.25" />
<ColorMapEntry color="#00e8ff" quantity="0.30" />
<ColorMapEntry color="#00f3ff" quantity="0.35" />
<ColorMapEntry color="#00ffd6" quantity="0.40" />
<ColorMapEntry color="#00ff9d" quantity="0.45" />
<ColorMapEntry color="#00ff65" quantity="0.50" />
<ColorMapEntry color="#00ff2d" quantity="0.55" />
<ColorMapEntry color="#2fff00" quantity="0.60" />
<ColorMapEntry color="#adff00" quantity="0.65" />
<ColorMapEntry color="#e4ff00" quantity="0.70" />
<ColorMapEntry color="#fffa00" quantity="0.75" />
<ColorMapEntry color="#ffed00" quantity="0.80" />
<ColorMapEntry color="#ffb100" quantity="0.85" />
<ColorMapEntry color="#ff7b00" quantity="0.90" />
<ColorMapEntry color="#ff3d00" quantity="0.95" />
<ColorMapEntry color="#ff0800" quantity="1.00" />
</ColorMap>
</RasterSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
параметры radiusPixels и pixelsPerCell крутил и так и эдак, при значениях 550 и 30 соответственно, вроде бы наилучший результат, но все равно не хорошо..
Re: Градиентная заливка полигонов или Ваши предложения
Добавлено: 13 дек 2013, 16:58
SPunkY
Разобрался!
Если создавать слой вот так:
Код: Выделить всё
gis_climat_all_wms = new OpenLayers.Layer.WMS( "gts:gis_climat_all_wms", "http://service.meteo.ru:8080/MyGeoServer/gts/wms",
{LAYERS: 'gts:gis_climat_all', STYLES: '', format: 'image/png', transparent: true,
filter: '<Filter xmlns="http://www.opengis.net/ogc"><And><PropertyIsEqualTo><PropertyName>qtempdbmn</PropertyName><Literal>1</Literal></PropertyIsEqualTo><PropertyIsBetween><PropertyName>date_obs</PropertyName><LowerBoundary><Literal>2013-10-01T00:00:00Z</Literal></LowerBoundary><UpperBoundary><Literal>2013-10-01T00:00:00Z</Literal></UpperBoundary></PropertyIsBetween></And></Filter>',
},
{singleTile: true, ratio: 1, isBaseLayer: false, yx : {'EPSG:4326' : true}}
);
map.addLayers([gis_climat_all_wms]);
все работает!
Спасибо за ответы, особенно за ссылку про WPS.