On Sat, Jul 23, 2016 at 2:53 PM, Andrea Aime <[email protected]> wrote:
> Hi, > I'm looking into improving the SLD export, and stumbled into a schema > violation > that, if fixed, may cause other regression. > In particular, the root element StyledLayerDescriptor contains a "units" > attribute that > is not part of the SLD/SE specification, and thus makes validation fail: > > <?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" *units="mm" *xsi:schemaLocation=" > http://www.opengis.net/sld > http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" xmlns:se=" > http://www.opengis.net/se"> > ... > </StyledLayerDescriptor> > > It's in particular the units="mm" element. Checking the git history I > found it has been introduced by this commit: > > --------------------- > > b54b159 - rldhont <[email protected]> 23-ott-2015 > [BUGFIX] Set default units to mm in exportSld > > The default units in QgsMapRenderer is Millimeters. The default units in > SLD > is Pixel but exportSld does not convert all millimeters in pixels. > > We notes this bug by comparing default QGS Server rendering and rendering > with > the SLD generated by QGIS. > > To resolve it, we just have to add units to the document element. > > --------------------- > > The above comments seems to suggest something is actually using that > attribute, but I'm not sure what. > > Mind, GeoServer can parse the file the same, but if users try to validate > it (there is a validation button in the style editor), they will get the > following error: > > "ine 2: cvc-complex-type.3.2.2: Attribute 'units' is not allowed to appear > in element 'StyledLayerDescriptor'." > > Also, the attribute per se does nothing in a compliant client, since SLD > 1.1 lacks the very concept of "on screen unit", the uom allowed > are pixel (on screen), meter (on ground), feet (on ground). > A SLD export trying to be compliant should convert mm to pixels assuming > some DPI conversion factor (which means, > making many changes around... bummer). I see there is already a uomScale > in the conversion properties, but I see it's not > used for point symbol sizes (as the commit message says.. I actually don't > see it being used anywhere). > > Would it be ok to remove that attribute and use uomScale to properly adapt > sizes from mm to px instead? > > Cheers > Andrea > > -- > == > GeoServer Professional Services from the experts! Visit > http://goo.gl/it488V for more information. > == > > Ing. Andrea Aime > @geowolf > Technical Lead > > GeoSolutions S.A.S. > Via di Montramito 3/A > 55054 Massarosa (LU) > phone: +39 0584 962313 > fax: +39 0584 1660272 > mob: +39 339 8844549 > > http://www.geo-solutions.it > http://twitter.com/geosolutions_it > > Hi, I noticed the same 'uom' mm problem when I tested the SLD converting routines used by GeoServer Explorer plugin a couple of months ago, thank for bringing up this issue. Your proposed solution makes perfectly sense to me. Did you check if is there already an issue on hub.qgis.org? -- Alessandro Pasotti w3: www.itopen.it
_______________________________________________ Qgis-developer mailing list [email protected] List info: http://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: http://lists.osgeo.org/mailman/listinfo/qgis-developer
