Skip to content

Instantly share code, notes, and snippets.

@tinogis
Last active August 29, 2015 14:00
Show Gist options
  • Save tinogis/11393283 to your computer and use it in GitHub Desktop.
Save tinogis/11393283 to your computer and use it in GitHub Desktop.
GeoServer tips
#!/bin/bash
# To clean demo data from a newly installed geoserver you have to delete some data from `GEOSERVER_DATA_DIR`
# Info from http://gis.stackexchange.com/questions/33049/automating-removal-of-all-demo-layers-from-geoserver
GEOSERVER_DATA_DIR=/var/lib/tomcat7/webapps/geoserver/data/
TOMCAT_USER=tomcat7
TOMCAT_GRP=tomcat7
cd ${GEOSERVER_DATA_DIR}
rm -rf workspaces && mkdir workspaces && chmod ${TOMCAT_USER}:${TOMCAT_GRP} workspaces
rm -rf layergroups && mkdir layergroups && chmod ${TOMCAT_USER}:${TOMCAT_GRP} layergroups
rm -rf data/*
# configuration template
# rename to 'config.py' and fill in with the correct params
credentials = {
'user': 'admin',
'pwd': 'geoserver'
}
workspace = 'gis'
#Postgres
pg_store = 'pg_gis'
pg_db = 'gis'
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Using gsconfig
from geoserver.catalog import Catalog
import config
workspace_name = config.workspace
user = config.credentials['user']
pwd = config.credentials['pwd']
workspace = workspace_name
layergroup_name = 'gis'
#layers = ('giscegis_municipi_geos',
# 'giscegis_lat_geos',
# 'giscegis_cts_geos')
#styles = ('gis:giscegis_municipi_stl',
# 'gis:giscegis_lat_stl',
# 'gis:giscegis_cts_stl')
layers = ('%s:giscegis_municipi_geos' % workspace_name,
'%s:giscegis_lat_geos' % workspace_name,
'%s:giscegis_cts_geos' % workspace_name)
styles = ('%s:giscegis_municipi_stl' % workspace_name,
'%s:giscegis_lat_stl' % workspace_name,
'%s:giscegis_cts_stl' % workspace_name)
#Get bounds from first layer
delete = False
def lg_show(cat):
# count layergroups
lgs = cat.get_layergroups(workspace=wks)
num_lgs = len(lgs)
lgs_txt = ['%s.%s' % (lg.workspace, lg.name) for lg in lgs]
print "There are %s layergroups in workspace %s: %s" % (num_lgs, wks.name,
lgs_txt)
# Connecting to geoserver
cat = Catalog("http://localhost:8080/geoserver/rest", user, pwd)
wks = cat.get_workspace(workspace)
lg_show(cat)
lay_exists = True
bounds = None
# Layer test
for lay_name in layers:
lay = cat.get_layer(lay_name)
if not bounds:
bounds = lay.resource.native_bbox
if not lay:
print "The layer '%s' does not exists" % lay_name
lay_exists = False
if not lay_exists:
exit(1)
stl_exists = True
# Style test
for stl_name in styles:
stl = cat.get_style(stl_name)
if not stl:
print (u"""The style '%s' does not exists. """
u"""Have you included workspace name?""" % stl_name)
stl_exists = False
if not stl_exists:
exit(2)
lg = cat.create_layergroup(layergroup_name, layers, styles, bounds, workspace)
cat.save(lg)
print "The layergroup '%s' has been created" % lg.name
cat._cache.clear()
lg_show(cat)
if delete:
print "Deleting layergroup ..."
lg = cat.get_layergroup(layergroup_name, workspace=workspace)
res = cat.delete(lg)
if res[0] and res[0]['status'] == '200':
print "The layergroup has been succesfully deleted"
lg_show(cat)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Using gsconfig
from geoserver.catalog import Catalog
import config
workspace_name = config.workspace
user = config.credentials['user']
pwd = config.credentials['pwd']
store_name = config.pg_store
workspace = workspace_name
#workspace = 'estabanell'
sql_view = 'giscegis_lat_geos'
#sql_view = 'giscegis_municipi_geos'
#sql_view = 'giscegis_cts_geos'
srs = "EPSG: 23031"
style = 'giscegis_lat_stl'
#style = 'giscegis_municipi_stl'
#style = 'giscegis_municipi_stl'
delete = False
lay_name = '%s:%s' % (workspace, sql_view)
def res_show(cat):
# count resources
rs = cat.get_resources(store=store_name, workspace=workspace)
num_rs = len(rs)
rs_txt = ['%s.%s' % (r.workspace.name, r.name) for r in rs]
print "There are %s resource: %s" % (num_rs, rs_txt)
def lay_show(cat):
# count layers
res = cat.get_resource(sql_view, store=ds, workspace=workspace)
if res:
ls = cat.get_layers(resource=res)
else:
ls = []
num_ls = len(ls)
ls_txt = ['%s.%s' % (l.resource.name, l.name) for l in ls]
print "There are %s layers: %s" % (num_ls, ls_txt)
def update_style(layer, style):
if layer:
layer.default_style = style
layer.catalog.save(layer)
print "Setted style %s to layer %s" % (style.name, layer.name)
res_exists = lay_exists = False
# Connecting to geoserver
cat = Catalog("http://localhost:8080/geoserver/rest", user, pwd)
ds = cat.get_store(store_name)
if not ds:
print "ERROR: The store '%s' does not exists" % sql_view
exit(0)
res = cat.get_resource(sql_view, store=ds, workspace=workspace)
if res:
print "The resource '%s' already exists" % sql_view
res_exists = True
lay = cat.get_layer(lay_name)
if lay:
print "The layer '%s' already exists" % lay_name
lay_exists = True
res_show(cat)
lay_show(cat)
#setting style if layer exists
stl = cat.get_style(style, workspace=workspace)
if res_exists:
#actualitzem estil per defecte
if stl:
update_style(lay, stl)
exit(0)
#res = cat.create_db_resource(store_name, sql_view, workspace=workspace)
res = cat.publish_featuretype(sql_view, ds, srs)
print "The resource '%s' has been created" % sql_view
cat._cache.clear()
#setting style
lay = cat.get_layer(lay_name)
if lay:
update_style(lay, stl)
res_show(cat)
lay_show(cat)
if delete:
print "Deleting layer ..."
lay = cat.get_layer(sql_view)
res = cat.delete(lay)
if res[0] and res[0]['status'] == '200':
print "The layer has been succesfully deleted"
rsc = cat.get_resource(sql_view)
res = cat.delete(rsc)
if res[0] and res[0]['status'] == '200':
print "The resource has been succesfully deleted"
res_show(cat)
lay_show(cat)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Using gsconfig
from geoserver.catalog import Catalog
import config
workspace_name = config.workspace
user = config.credentials['user']
pwd = config.credentials['pwd']
store_name = config.pg_store
workspace = workspace_name
database = config.pg_db
delete = False
con_param = {
'host': "localhost",
'port': "5432",
'database': database,
'user': "agusti",
'dbtype': "postgis"
}
# Connecting to geoserver
cat = Catalog("http://localhost:8080/geoserver/rest", user, pwd)
ds = cat.create_datastore(store_name, workspace=workspace)
def ds_show(cat):
# count workspaces
dss = cat.get_stores()
num_ds = len(dss)
ds_txt = ['%s [%s]' % (s.name, s.type) for s in dss]
print "There are %s stores: %s" % (num_ds, ds_txt)
ds.connection_parameters.update(con_param)
ds_show(cat)
cat.save(ds)
ds_show(cat)
if delete:
print "Deleting store ..."
ds = cat.get_store(store_name)
res = cat.delete(ds)
if res[0] and res[0]['status'] == '200':
print "The workspace has been succesfully deleted"
ds_show(cat)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Using gsconfig
from geoserver.catalog import Catalog
import config
workspace_name = config.workspace
user = config.credentials['user']
pwd = config.credentials['pwd']
workspace = workspace_name
style = 'giscegis_lat_stl'
sld_file = 'qgis_lat.sld'
#style = 'giscegis_municipi_stl'
#sld_file = 'qgis_municipi.sld'
#style = 'giscegis_cts_stl'
#sld_file = 'qgis_cts.sld'
delete = False
def stl_show(cat):
# count workspaces
stls = cat.get_styles()
num_stls = len(stls)
stl_txt = ['%s [%s]' % (s.name, s.filename) for s in stls]
print "There are %s resource: %s" % (num_stls, stl_txt)
# Connecting to geoserver
cat = Catalog("http://localhost:8080/geoserver/rest", user, pwd)
stl_show(cat)
# Reading slid file
fs = open(sld_file, 'r')
sld = fs.read()
fs.close()
stl = cat.create_style(style, sld, overwrite=True, workspace=workspace)
print "The resource '%s' has been created" % style
cat._cache.clear()
stl = cat.get_style(style, workspace=workspace)
if stl:
print "%s (%s) sld: %s" % (stl.name, stl.filename, stl.sld_name)
else:
print "Error creating style '%s' in '%s' workspace" % (style, workspace)
stl_show(cat)
if delete:
print "Deleting style ..."
stl = cat.get_style(style, workspace=workspace)
res = cat.delete(stl, purge=True)
if res[0] and res[0]['status'] == '200':
print "The resource has been succesfully deleted"
stl_show(cat)
-- MUNICIPIS TABLE (ICC)
CREATE SEQUENCE "giscegis_municipi_icc_id_seq"
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
CREATE TABLE giscegis_municipi_icc (
id numeric NOT NULL DEFAULT nextval('giscegis_municipi_icc_id_seq'),
codi_municipi varchar(6),
codi_comarca integer,
codi_provincia integer,
nom_municipi varchar(45),
cap_municipi varchar(30),
CONSTRAINT "giscegis_municipi_icc_pk" PRIMARY KEY (id),
CONSTRAINT "giscegis_municipi_icc_codi_municipi_uniq" UNIQUE(codi_municipi)
);
SELECT AddGeometryColumn('giscegis_municipi_icc', 'geom', 23031,'multipolygon',2);
ALTER SEQUENCE res_municipi_icc_id_seq OWNED BY giscegis_municipi_icc.id;
-- MUNICIPIOS VIEW (IGN source)
CREATE OR REPLACE VIEW giscegis_municipi_geos AS
SELECT gm.id, 'IGN'::varchar AS orig, gm.nombre AS nom, gm.codigoine AS ine, gm.provincia AS provincia, rm.name, rm.state, rm.comarca AS comarca, gm.geom
FROM giscegis_municipi_ign gm
LEFT JOIN res_municipi rm ON "substring"(rm.ine::text, 0, 6) = gm.codigoine::text
WHERE rm.name IS NOT NULL
AND rm.id IN (SELECT DISTINCT id_municipi FROM giscedata_cups_ps);
-- MUNICIPIOS VIEW (ICC source)
--CREATE OR REPLACE VIEW giscegis_municipi_geos AS
--SELECT gm.id, 'ICC'::text AS orig, gm.nom_municipi AS nom , gm.codi_municipi AS ine, gm.codi_provincia AS provincia, rm.name, rm.state, rm.comarca AS comarca, gm.geom
--FROM giscegis_municipi_icc gm
--LEFT JOIN res_municipi rm ON substring(rm.ine::text, 0, 6) = substring(gm.codi_municipi::text, 0, 6)
--WHERE rm.name IS NOT NULL;
-- MUNICIPIOS VIEW (ICC + IGN source)
--CREATE OR REPLACE VIEW giscegis_municipi_geos AS
--SELECT rm.id::numeric, COALESCE('ICC: ' || gm_icc.id, 'IGN: ' || gm_ign.id) AS orig, rm.name AS nom, rm.ine AS ine, rm.name, rm.state, rm.comarca as comarca,
-- COALESCE(gm_icc.geom, gm_ign.geom) AS geom
--FROM res_municipi rm
--LEFT JOIN giscegis_municipi_icc gm_icc ON substring(rm.ine::text, 0, 6) = substring(gm_icc.codi_municipi::text, 0, 6)
--LEFT JOIN giscegis_municipi_ign gm_ign ON substring(rm.ine::text, 0, 6) = substring(gm_ign.codigoine::text, 0, 6)
--WHERE COALESCE(gm_icc.id, gm_ign.id) IS NOT NULL;
--- LAT VIEW
CREATE OR REPLACE VIEW giscegis_lat_geos AS
SELECT
l.gid AS gid,
COALESCE(v.name,'0') AS name,
COALESCE(v.texte, '') AS texte,
COALESCE(v.theme,'') AS theme,
l.id, l.geom
FROM lat l
LEFT JOIN giscegis_lat_171 v ON l.id = v.name::double precision;
--- CTS View
CREATE OR REPLACE VIEW giscegis_cts_geos AS
SELECT ct.id, ct.name, -ctbloc.rotation AS rotation, v.geom,
(((((((ct.name::text || E'\n'::text) || ct.descripcio::text) || E'\n'::text) || COALESCE(( SELECT (COALESCE(e.industria, 'S/E'::character varying)::text || ' ; '::text) || COALESCE(e.industria_data::text, 'S/D'::text)
FROM giscedata_expedients_expedient e, giscedata_cts_expedients_rel r
WHERE r.ct_id = ct.id AND r.expedient_id = e.id
ORDER BY e.industria_data IS NOT NULL, e.industria_data DESC
LIMIT 1), 'S/E ; S/D'::text)) || '
'::text) || COALESCE(sum(tr.potencia_nominal), 0::bigint)) || ' kVA'::text) || E'\n'::text AS texte
FROM giscedata_cts ct
LEFT JOIN ( SELECT trr.id, trr.potencia_nominal, trr.ct
FROM giscedata_transformador_trafo trr
LEFT JOIN giscedata_transformador_estat tres ON trr.id_estat = tres.id AND tres.codi = 1
) AS tr ON tr.ct = ct.id
LEFT JOIN giscegis_blocs_ctat ctbloc ON ctbloc.ct = ct.id
LEFT JOIN giscegis_vertex v ON ctbloc.vertex = v.id
WHERE (ct.ct_baixa = false OR ct.ct_baixa IS NULL) AND ct.active = true
GROUP BY ct.name, ct.id, ct.descripcio, ctbloc.rotation, v.geom
ORDER BY ct.name;
--- Textes de cartografia
CREATE OR REPLACE VIEW giscegis_txt_carto_geos AS
SELECT id, name, 360 - rotation AS rotation , height * 1.5 AS height, ST_SetSRID(ST_POINT(x,y),23031)
--- LBT View
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Using gsconfig
from geoserver.catalog import Catalog
import config
workspace_name = config.workspace
user = config.credentials['user']
pwd = config.credentials['pwd']
uri_tpl = 'http://gis.gisce.net/%s'
delete = False
def wks_show(cat):
# count workspaces
wks = cat.get_workspaces()
num_wks = len(wks)
print "There are %s workspaces: %s" % (num_wks,
[w.name for w in wks])
# Connecting to geoserver
cat = Catalog("http://localhost:8080/geoserver/rest", user, pwd)
wks_show(cat)
# Creating workspace (name and uri)
wks = cat.create_workspace(workspace_name, uri_tpl % workspace_name)
wks_show(cat)
if delete:
print "Deleting workspace ..."
wks = cat.get_workspace(workspace_name)
res = cat.delete(wks)
if res[0] and res[0]['status'] == '200':
print "The workspace has been succesfully deleted"
wks_show(cat)
#!/bin/bash
SHAPEPATH=~/dades/shapes
PGDB="gis"
DEST_SRS="23031"
S2P_BIN="/usr/lib/postgresql/9.1/bin/shp2pgsql"
# *shp2pgsql* creates the sql script.
#-s <SRID>: data SRID
#-d: recreate table (drop & create)
#-g <columns>: geom column name
#-I <dir>: Input file dir
# tablename as last parameter
# municipios (IGN)
FROM_SRS="4230"
${S2P_BIN} -d -W latin9 -s ${FROM_SRS}:${DEST_SRS} -g geom -I ${SHAPEPATH}/IGN/SHP_ED50/poligonos_municipio_ed50/poligonos_municipio_ed50 giscegis_municipi_ign | psql -d ${PGDB}
# LAT
#${S2P_BIN} -s ${DEST_SRS} -d -g geom -I ${SHAPEPATH}/LAT lat | psql -d ${PGDB}
<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" xmlns:se="http://www.opengis.net/se">
<NamedLayer>
<se:Name>giscegis_cts_geos</se:Name>
<UserStyle>
<se:Name>giscegis_cts_geos</se:Name>
<se:FeatureTypeStyle>
<se:Rule>
<se:Name>CTS</se:Name>
<se:Description>
<se:Title>CTS</se:Title>
</se:Description>
<se:MinScaleDenominator>50</se:MinScaleDenominator>
<se:MaxScaleDenominator>1000000</se:MaxScaleDenominator>
<se:PointSymbolizer uom="http://www.opengeospatial.org/se/units/metre">
<se:Graphic>
<se:ExternalGraphic>
<se:OnlineResource xlink:type="simple" xlink:href="file:/home/agusti/codi/giscegis/www/themes/gisce/imgs/symbols/CT.svg"/>
<se:Format>image/svg+xml</se:Format>
</se:ExternalGraphic>
<se:Size>5</se:Size>
<se:Rotation>
<ogc:PropertyName>rotation</ogc:PropertyName>
</se:Rotation>
</se:Graphic>
</se:PointSymbolizer>
<se:TextSymbolizer uom="http://www.opengeospatial.org/se/units/metre">
<se:Label>
<ogc:PropertyName>texte</ogc:PropertyName>
</se:Label>
<se:Font>
<se:SvgParameter name="font-family">Arial</se:SvgParameter>
<se:SvgParameter name="font-size">1.5</se:SvgParameter>
<se:SvgParameter name="font-style">normal</se:SvgParameter>
<se:SvgParameter name="font-weight">bold</se:SvgParameter>
</se:Font>
<se:LabelPlacement>
<se:PointPlacement>
<se:AnchorPoint>
<se:AnchorPointX>0.0</se:AnchorPointX>
<se:AnchorPointY>0.5</se:AnchorPointY>
</se:AnchorPoint>
<se:Displacement>
<se:DisplacementX>5</se:DisplacementX>
<se:DisplacementY>0</se:DisplacementY>
</se:Displacement>
</se:PointPlacement>
</se:LabelPlacement>
<se:Fill>
<se:SvgParameter name="fill">#000000</se:SvgParameter>
</se:Fill>
<se:VendorOption name="spaceAround">-1</se:VendorOption>
</se:TextSymbolizer>
</se:Rule>
<se:Rule>
<se:Name>CT</se:Name>
<se:Description>
<se:Title>CT</se:Title>
</se:Description>
<se:MaxScaleDenominator>50</se:MaxScaleDenominator>
<se:PointSymbolizer>
<se:Graphic>
<se:ExternalGraphic>
<se:OnlineResource xlink:type="simple" xlink:href="file:/home/agusti/codi/giscegis/www/themes/gisce/imgs/symbols/CT.svg"/>
<se:Format>image/svg+xml</se:Format>
</se:ExternalGraphic>
<se:Size>10</se:Size>
<se:Rotation>
<ogc:PropertyName>rotation</ogc:PropertyName>
</se:Rotation>
</se:Graphic>
</se:PointSymbolizer>
</se:Rule>
</se:FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" xmlns:se="http://www.opengis.net/se">
<NamedLayer>
<se:Name>LAT</se:Name>
<UserStyle>
<se:Name>LAT</se:Name>
<se:FeatureTypeStyle>
<se:Rule>
<se:Name>Etiquetes</se:Name>
<se:MinScaleDenominator>0</se:MinScaleDenominator>
<se:MaxScaleDenominator>300</se:MaxScaleDenominator>
<se:TextSymbolizer>
<se:Label>
<ogc:PropertyName>texte</ogc:PropertyName>
</se:Label>
<se:Font>
<se:SvgParameter name="font-family">Arial</se:SvgParameter>
<se:SvgParameter name="font-size">10</se:SvgParameter>
<se:SvgParameter name="font-style">normal</se:SvgParameter>
<se:SvgParameter name="font-weight">bold</se:SvgParameter>
</se:Font>
<se:LabelPlacement>
<se:LinePlacement>
<se:PerpendicularOffset>60</se:PerpendicularOffset>
</se:LinePlacement>
</se:LabelPlacement>
</se:TextSymbolizer>
</se:Rule>
<se:Rule>
<se:Name></se:Name>
<se:Description>
<se:Title>theme is ''</se:Title>
</se:Description>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>theme</ogc:PropertyName>
<ogc:Literal></ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<se:LineSymbolizer>
<se:Stroke>
<se:SvgParameter name="stroke">#000000</se:SvgParameter>
<se:SvgParameter name="stroke-width">0.26</se:SvgParameter>
<se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
<se:SvgParameter name="stroke-linecap">square</se:SvgParameter>
</se:Stroke>
</se:LineSymbolizer>
</se:Rule>
<se:Rule>
<se:Name>EAT</se:Name>
<se:Description>
<se:Title>EAT</se:Title>
</se:Description>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>theme</ogc:PropertyName>
<ogc:Literal>EAT</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<se:LineSymbolizer>
<se:Stroke>
<se:SvgParameter name="stroke">#808080</se:SvgParameter>
<se:SvgParameter name="stroke-width">0.26</se:SvgParameter>
<se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
<se:SvgParameter name="stroke-linecap">square</se:SvgParameter>
</se:Stroke>
</se:LineSymbolizer>
</se:Rule>
<se:Rule>
<se:Name>A-15000</se:Name>
<se:Description>
<se:Title>A-15000</se:Title>
</se:Description>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>theme</ogc:PropertyName>
<ogc:Literal>A-15000</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<se:LineSymbolizer>
<se:Stroke>
<se:SvgParameter name="stroke">#ff00ff</se:SvgParameter>
<se:SvgParameter name="stroke-width">0.26</se:SvgParameter>
<se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
<se:SvgParameter name="stroke-linecap">square</se:SvgParameter>
</se:Stroke>
</se:LineSymbolizer>
</se:Rule>
<se:Rule>
<se:Name>A-66000</se:Name>
<se:Description>
<se:Title>A-66000</se:Title>
</se:Description>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>theme</ogc:PropertyName>
<ogc:Literal>A-66000</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<se:LineSymbolizer>
<se:Stroke>
<se:SvgParameter name="stroke">#00aaff</se:SvgParameter>
<se:SvgParameter name="stroke-width">0.26</se:SvgParameter>
<se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
<se:SvgParameter name="stroke-linecap">square</se:SvgParameter>
</se:Stroke>
</se:LineSymbolizer>
</se:Rule>
<se:Rule>
<se:Name>S-15000</se:Name>
<se:Description>
<se:Title>S-15000</se:Title>
</se:Description>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>theme</ogc:PropertyName>
<ogc:Literal>S-15000</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<se:LineSymbolizer>
<se:Stroke>
<se:SvgParameter name="stroke">#ff00ff</se:SvgParameter>
<se:SvgParameter name="stroke-width">0.26</se:SvgParameter>
<se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
<se:SvgParameter name="stroke-linecap">square</se:SvgParameter>
<se:SvgParameter name="stroke-dasharray">1 2</se:SvgParameter>
</se:Stroke>
</se:LineSymbolizer>
</se:Rule>
<se:Rule>
<se:Name>S-66000</se:Name>
<se:Description>
<se:Title>S-66000</se:Title>
</se:Description>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>theme</ogc:PropertyName>
<ogc:Literal>S-66000</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<se:LineSymbolizer>
<se:Stroke>
<se:SvgParameter name="stroke">#00aaff</se:SvgParameter>
<se:SvgParameter name="stroke-width">0.26</se:SvgParameter>
<se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
<se:SvgParameter name="stroke-linecap">square</se:SvgParameter>
<se:SvgParameter name="stroke-dasharray">1 2</se:SvgParameter>
</se:Stroke>
</se:LineSymbolizer>
</se:Rule>
</se:FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" xmlns:se="http://www.opengis.net/se">
<NamedLayer>
<se:Name>giscegis_municipi_geos</se:Name>
<UserStyle>
<se:Name>giscegis_municipi_geos</se:Name>
<se:FeatureTypeStyle>
<se:Rule>
<se:Name>Etiquetes</se:Name>
<se:MinScaleDenominator>50000</se:MinScaleDenominator>
<se:MaxScaleDenominator>10000000</se:MaxScaleDenominator>
<se:TextSymbolizer>
<se:Label>
<ogc:PropertyName>nom</ogc:PropertyName>
</se:Label>
<se:Font>
<se:SvgParameter name="font-family">Arial</se:SvgParameter>
<se:SvgParameter name="font-size">10</se:SvgParameter>
<se:SvgParameter name="font-style">normal</se:SvgParameter>
<se:SvgParameter name="font-weight">bold</se:SvgParameter>
</se:Font>
<se:LabelPlacement>
<se:PointPlacement>
<se:AnchorPoint>
<se:AnchorPointX>0.5</se:AnchorPointX>
<se:AnchorPointY>0.5</se:AnchorPointY>
</se:AnchorPoint>
</se:PointPlacement>
</se:LabelPlacement>
</se:TextSymbolizer>
</se:Rule>
<se:Rule>
<se:Name>07025</se:Name>
<se:Description>
<se:Title>07025</se:Title>
</se:Description>
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>ine</ogc:PropertyName>
<ogc:Literal>07025</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<se:MinScaleDenominator>50000</se:MinScaleDenominator>
<se:MaxScaleDenominator>10000000</se:MaxScaleDenominator>
<se:PolygonSymbolizer>
<se:Fill>
<se:SvgParameter name="fill">#00bf00</se:SvgParameter>
</se:Fill>
<se:Stroke>
<se:SvgParameter name="stroke">#000000</se:SvgParameter>
<se:SvgParameter name="stroke-width">0.26</se:SvgParameter>
<se:SvgParameter name="stroke-dasharray">5 2</se:SvgParameter>
</se:Stroke>
</se:PolygonSymbolizer>
</se:Rule>
<se:Rule>
<se:Name>07061</se:Name>
<se:Description>
<se:Title>07061</se:Title>
</se:Description>
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>ine</ogc:PropertyName>
<ogc:Literal>07061</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<se:MinScaleDenominator>50000</se:MinScaleDenominator>
<se:MaxScaleDenominator>10000000</se:MaxScaleDenominator>
<se:PolygonSymbolizer>
<se:Fill>
<se:SvgParameter name="fill">#00d400</se:SvgParameter>
</se:Fill>
<se:Stroke>
<se:SvgParameter name="stroke">#000000</se:SvgParameter>
<se:SvgParameter name="stroke-width">0.26</se:SvgParameter>
<se:SvgParameter name="stroke-dasharray">5 2</se:SvgParameter>
</se:Stroke>
</se:PolygonSymbolizer>
</se:Rule>
<se:Rule>
<se:Name></se:Name>
<se:Description>
<se:Title>ine is '0'</se:Title>
</se:Description>
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>ine</ogc:PropertyName>
<ogc:Literal></ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<se:MinScaleDenominator>50000</se:MinScaleDenominator>
<se:MaxScaleDenominator>10000000</se:MaxScaleDenominator>
<se:PolygonSymbolizer>
<se:Fill>
<se:SvgParameter name="fill">#808080</se:SvgParameter>
</se:Fill>
<se:Stroke>
<se:SvgParameter name="stroke">#000000</se:SvgParameter>
<se:SvgParameter name="stroke-width">0.26</se:SvgParameter>
<se:SvgParameter name="stroke-dasharray">5 2</se:SvgParameter>
</se:Stroke>
</se:PolygonSymbolizer>
</se:Rule>
</se:FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" xmlns:se="http://www.opengis.net/se">
<NamedLayer>
<se:Name>giscegis_municipi_geos</se:Name>
<UserStyle>
<se:Name>giscegis_municipi_geos</se:Name>
<se:FeatureTypeStyle>
<se:Rule>
<se:Name>Etiquetes</se:Name>
<se:MinScaleDenominator>50000</se:MinScaleDenominator>
<se:MaxScaleDenominator>10000000</se:MaxScaleDenominator>
<se:TextSymbolizer>
<se:Label>
<ogc:PropertyName>nom</ogc:PropertyName>
</se:Label>
<se:Font>
<se:SvgParameter name="font-family">Arial</se:SvgParameter>
<se:SvgParameter name="font-size">10</se:SvgParameter>
<se:SvgParameter name="font-style">normal</se:SvgParameter>
<se:SvgParameter name="font-weight">bold</se:SvgParameter>
</se:Font>
<se:LabelPlacement>
<se:PointPlacement>
<se:AnchorPoint>
<se:AnchorPointX>0.5</se:AnchorPointX>
<se:AnchorPointY>0.5</se:AnchorPointY>
</se:AnchorPoint>
</se:PointPlacement>
</se:LabelPlacement>
</se:TextSymbolizer>
</se:Rule>
<se:Rule>
<se:Name>19</se:Name>
<se:Description>
<se:Title>19</se:Title>
</se:Description>
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>comarca</ogc:PropertyName>
<ogc:Literal>19</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<se:MinScaleDenominator>50000</se:MinScaleDenominator>
<se:MaxScaleDenominator>10000000</se:MaxScaleDenominator>
<se:PolygonSymbolizer>
<se:Fill>
<se:SvgParameter name="fill">#00aa00</se:SvgParameter>
</se:Fill>
<se:Stroke>
<se:SvgParameter name="stroke">#000000</se:SvgParameter>
<se:SvgParameter name="stroke-width">0.26</se:SvgParameter>
<se:SvgParameter name="stroke-dasharray">5 2</se:SvgParameter>
</se:Stroke>
</se:PolygonSymbolizer>
</se:Rule>
<se:Rule>
<se:Name>24</se:Name>
<se:Description>
<se:Title>24</se:Title>
</se:Description>
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>comarca</ogc:PropertyName>
<ogc:Literal>24</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<se:MinScaleDenominator>50000</se:MinScaleDenominator>
<se:MaxScaleDenominator>10000000</se:MaxScaleDenominator>
<se:PolygonSymbolizer>
<se:Fill>
<se:SvgParameter name="fill">#00bf00</se:SvgParameter>
</se:Fill>
<se:Stroke>
<se:SvgParameter name="stroke">#000000</se:SvgParameter>
<se:SvgParameter name="stroke-width">0.26</se:SvgParameter>
<se:SvgParameter name="stroke-dasharray">5 2</se:SvgParameter>
</se:Stroke>
</se:PolygonSymbolizer>
</se:Rule>
<se:Rule>
<se:Name>31</se:Name>
<se:Description>
<se:Title>31</se:Title>
</se:Description>
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>comarca</ogc:PropertyName>
<ogc:Literal>31</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<se:MinScaleDenominator>50000</se:MinScaleDenominator>
<se:MaxScaleDenominator>10000000</se:MaxScaleDenominator>
<se:PolygonSymbolizer>
<se:Fill>
<se:SvgParameter name="fill">#00d400</se:SvgParameter>
</se:Fill>
<se:Stroke>
<se:SvgParameter name="stroke">#000000</se:SvgParameter>
<se:SvgParameter name="stroke-width">0.26</se:SvgParameter>
<se:SvgParameter name="stroke-dasharray">5 2</se:SvgParameter>
</se:Stroke>
</se:PolygonSymbolizer>
</se:Rule>
<se:Rule>
<se:Name>41</se:Name>
<se:Description>
<se:Title>41</se:Title>
</se:Description>
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>comarca</ogc:PropertyName>
<ogc:Literal>41</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<se:MinScaleDenominator>50000</se:MinScaleDenominator>
<se:MaxScaleDenominator>10000000</se:MaxScaleDenominator>
<se:PolygonSymbolizer>
<se:Fill>
<se:SvgParameter name="fill">#00e900</se:SvgParameter>
</se:Fill>
<se:Stroke>
<se:SvgParameter name="stroke">#000000</se:SvgParameter>
<se:SvgParameter name="stroke-width">0.26</se:SvgParameter>
<se:SvgParameter name="stroke-dasharray">5 2</se:SvgParameter>
</se:Stroke>
</se:PolygonSymbolizer>
</se:Rule>
<se:Rule>
<se:Name></se:Name>
<se:Description>
<se:Title>comarca is '0'</se:Title>
</se:Description>
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>comarca</ogc:PropertyName>
<ogc:Literal>0</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<se:MinScaleDenominator>50000</se:MinScaleDenominator>
<se:MaxScaleDenominator>10000000</se:MaxScaleDenominator>
<se:PolygonSymbolizer>
<se:Fill>
<se:SvgParameter name="fill">#808080</se:SvgParameter>
</se:Fill>
<se:Stroke>
<se:SvgParameter name="stroke">#000000</se:SvgParameter>
<se:SvgParameter name="stroke-width">0.26</se:SvgParameter>
<se:SvgParameter name="stroke-dasharray">5 2</se:SvgParameter>
</se:Stroke>
</se:PolygonSymbolizer>
</se:Rule>
</se:FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" xmlns:se="http://www.opengis.net/se">
<NamedLayer>
<se:Name>giscegis_txt_cartografia_stl</se:Name>
<UserStyle>
<se:Name>giscegis_txt_cartografia_stl</se:Name>
<se:FeatureTypeStyle>
<se:Rule>
<se:Name>Textes de cartografia</se:Name>
<se:Description>
<se:Title>Textes de cartografia</se:Title>
</se:Description>
<se:MaxScaleDenominator>10000</se:MaxScaleDenominator>
<se:TextSymbolizer uom="http://www.opengeospatial.org/se/units/metre">
<se:Label>
<ogc:PropertyName>name</ogc:PropertyName>
</se:Label>
<se:Font>
<se:SvgParameter name="font-family">Arial</se:SvgParameter>
<se:SvgParameter name="font-size">
<ogc:PropertyName>height</ogc:PropertyName>
</se:SvgParameter>
<se:SvgParameter name="font-style">normal</se:SvgParameter>
<se:SvgParameter name="font-weight">normal</se:SvgParameter>
</se:Font>
<se:LabelPlacement>
<se:PointPlacement>
<se:AnchorPoint>
<se:AnchorPointX>0.0</se:AnchorPointX>
<se:AnchorPointY>1.0</se:AnchorPointY>
</se:AnchorPoint>
<se:Displacement>
<se:DisplacementX>0</se:DisplacementX>
<se:DisplacementY>0</se:DisplacementY>
</se:Displacement>
<se:Rotation>
<ogc:PropertyName>rotation</ogc:PropertyName>
</se:Rotation>
</se:PointPlacement>
</se:LabelPlacement>
<se:Fill>
<se:SvgParameter name="fill">#000000</se:SvgParameter>
</se:Fill>
<se:VendorOption name="spaceAround">-1</se:VendorOption>
</se:TextSymbolizer>
</se:Rule>
</se:FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment