Ejemplo n.º 1
0
    def test_related_fields(self):
        """
        Test the queryset and style generation using django related fields
        syntax.
        """
        sld = generator.as_quantiles(Pipeline.objects.filter(material='ceramic'), 'reservoir__volume', 5, geofield='path')
        self.assertEqual(len(sld.NamedLayer.UserStyle.FeatureTypeStyle.Rules), 5)

        sld = generator.as_quantiles(Hydrant.objects.filter(pressure=1), 'pipeline__diameter', 5, geofield='location')
        self.assertEqual(len(sld.NamedLayer.UserStyle.FeatureTypeStyle.Rules), 5)

        sld = generator.as_quantiles(Hydrant.objects.filter(pressure=1), 'pipeline__reservoir__volume', 5, geofield='location')
        self.assertEqual(len(sld.NamedLayer.UserStyle.FeatureTypeStyle.Rules), 5)
Ejemplo n.º 2
0
    def test_q_classes_poly(self):
        """
        Test the Quantiles classifier for a polygon-based geographic model.
        """
        sld = generator.as_quantiles(Reservoir.objects.filter(name__startswith='City'), 'volume', 5, geofield='coastline')

        self.assertEqual(len(sld.NamedLayer.UserStyle.FeatureTypeStyle.Rules), 5)

        sld = generator.as_quantiles(Reservoir.objects.filter(name__startswith='County'), 'volume', 5, geofield='coastline')

        literals = sld._node.xpath('//ogc:PropertyIsLessThanOrEqualTo/ogc:Literal',namespaces=sld._nsmap)
        expected = ['1168000.0', '4246000.0', '9244000.0', '16162000.0', '25000000.0']

        for i,n in enumerate(literals):
            self.assertEqual(n.text, expected[i], 'Class %d is not correct.' % i)
Ejemplo n.º 3
0
    def test_q_classes_ln(self):
        """
        Test the Quantiles classifier for a line-based geographic model.
        """
        sld = generator.as_quantiles(Pipeline.objects.filter(material='ceramic'), 'diameter', 5, geofield='path')

        self.assertEqual(len(sld.NamedLayer.UserStyle.FeatureTypeStyle.Rules), 5)

        sld = generator.as_quantiles(Pipeline.objects.filter(material='concrete'), 'diameter', 5, geofield='path')

        literals = sld._node.xpath('//ogc:PropertyIsLessThanOrEqualTo/ogc:Literal',namespaces=sld._nsmap)
        expected = ['9.8', '19.6', '29.4', '39.2', '49.0']

        for i,n in enumerate(literals):
            self.assertEqual(n.text, expected[i], 'Class %d is not correct.' % i)
Ejemplo n.º 4
0
    def test_q_classes_pt(self):
        """
        Test the Quantiles classifier for a point-based geographic model.
        """
        sld = generator.as_quantiles(Hydrant.objects.filter(pressure=1), 'number', 5, geofield='location')

        self.assertEqual(len(sld.NamedLayer.UserStyle.FeatureTypeStyle.Rules), 5)

        sld = generator.as_quantiles(Hydrant.objects.filter(pressure=2), 'number', 5, geofield='location')

        literals = sld._node.xpath('//ogc:PropertyIsLessThanOrEqualTo/ogc:Literal',namespaces=sld._nsmap)
        expected = ['96.2', '384.4', '864.6', '1536.8', '2401.0']

        for i,n in enumerate(literals):
            self.assertEqual(n.text, expected[i], 'Class %d is not correct.' % i)
Ejemplo n.º 5
0
    def test_invert_gradient(self):
        """
        Test the generation of an inverted gradient.
        """

        # First, test the regular gradient
        sld = generator.as_quantiles(Hydrant.objects.filter(pressure=2), 'number', 5, geofield='location', invertgradient=False)
        self.assertEqual(len(sld.NamedLayer.UserStyle.FeatureTypeStyle.Rules), 5)

        literals = sld._node.xpath('//ogc:PropertyIsLessThanOrEqualTo/ogc:Literal',namespaces=sld._nsmap)
        expected = ['96.2', '384.4', '864.6', '1536.8', '2401.0']

        for i,n in enumerate(literals):
            self.assertEqual(n.text, expected[i], 'Class %d is not correct.' % i)

        shades = sld._node.xpath('//sld:Fill/sld:CssParameter[@name="fill"]',namespaces=sld._nsmap)
        self.assertEquals(len(shades), 5)

        expected = [(255, 255, 255), (204, 204, 204), (153, 153, 153), (102, 102, 102), (51, 51, 51)]

        for i,n in enumerate(shades):
            exp_shade = '#%02x%02x%02x' % expected[i]
            self.assertEqual(n.text, exp_shade, 'Shade %d is not correct. Expected: "%s" / Actual: "%s"' % (i, exp_shade, n.text,))

        # Second, test the inverted gradient
        sld = generator.as_quantiles(Hydrant.objects.filter(pressure=2), 'number', 5, geofield='location', invertgradient=True)
        self.assertEqual(len(sld.NamedLayer.UserStyle.FeatureTypeStyle.Rules), 5)

        literals = sld._node.xpath('//ogc:PropertyIsLessThanOrEqualTo/ogc:Literal',namespaces=sld._nsmap)
        expected = ['96.2', '384.4', '864.6', '1536.8', '2401.0']

        for i,n in enumerate(literals):
            self.assertEqual(n.text, expected[i], 'Class %d is not correct.' % i)

        shades = sld._node.xpath('//sld:Fill/sld:CssParameter[@name="fill"]',namespaces=sld._nsmap)
        self.assertEquals(len(shades), 5)

        expected = [(0, 0, 0), (51, 51, 51), (102, 102, 102), (153, 153, 153), (204, 204, 204)]

        for i,n in enumerate(shades):
            exp_shade = '#%02x%02x%02x' % expected[i]
            self.assertEqual(n.text, exp_shade, 'Shade %d is not correct.' % i)
Ejemplo n.º 6
0
    def test_inverted_colorbrewer(self):
        """
        Test the generation of shades using colorbrewer names, and inverted.
        """
        sld = generator.as_quantiles(Hydrant.objects.filter(pressure=2), 'number', 5, geofield='location', 
            colorbrewername='Greys', invertgradient=True)
        self.assertEqual(len(sld.NamedLayer.UserStyle.FeatureTypeStyle.Rules), 5)

        expected = [(37, 37, 37), (99, 99, 99), (150, 150, 150), (204, 204, 204), (247, 247, 247)]

        shades = sld._node.xpath('//sld:Fill/sld:CssParameter[@name="fill"]',namespaces=sld._nsmap)
        self.assertEqual(len(shades), 5)

        for i,n in enumerate(shades):
            exp_shade = '#%02x%02x%02x' % expected[i]
            self.assertEqual(n.text, exp_shade, 'Shade %d is not correct.' % i)