Browse Source

Estilos para el geoserver y comando para generar geoJson con stats de
onu.

Maximiliano Schvindt 8 years ago
parent
commit
1eb95a3676

+ 421 - 0
app/Resources/geoserverStyles/onuRxPower.xml

@@ -0,0 +1,421 @@
+<StyledLayerDescriptor version="1.0.0" 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" xmlns:gml="http://www.opengis.net/gml"
+  xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
+  <NamedLayer>
+    <Name>onuRxPower</Name>
+    <UserStyle>
+      <Name>onuRxPower</Name>
+      <Title></Title>
+      <Abstract></Abstract>
+       <FeatureTypeStyle>
+          <FeatureTypeName>Feature</FeatureTypeName>
+        
+        
+        <Rule>
+          <MinScaleDenominator>8500</MinScaleDenominator>
+          <Title>&lt; -30</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsLessThan>
+             <ogc:PropertyName>rx</ogc:PropertyName>
+             <ogc:Literal>-30</ogc:Literal>
+            </ogc:PropertyIsLessThan>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#a00400</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+         <Rule>
+          <MaxScaleDenominator>8500</MaxScaleDenominator>
+          <Title>&lt; -30</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsLessThan>
+             <ogc:PropertyName>rx</ogc:PropertyName>
+             <ogc:Literal>-30</ogc:Literal>
+            </ogc:PropertyIsLessThan>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#a00400</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        
+        
+        <Rule>
+            <MinScaleDenominator>8500</MinScaleDenominator>
+            <Title>-30 to -28</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>rx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>-30</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>-28</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ff4d3f</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        <Rule>
+            <MaxScaleDenominator>8500</MaxScaleDenominator>
+            <Title>-30 to -28</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>rx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>-30</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>-28</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ff4d3f</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        
+        <Rule>
+        <MinScaleDenominator>8500</MinScaleDenominator>
+          <Title>-28 to -26</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>rx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>-28</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>-26</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ffa732</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        <Rule>
+            <MaxScaleDenominator>8500</MaxScaleDenominator>
+          <Title>-28 to -26</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>rx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>-28</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>-26</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ffa732</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+
+
+        <Rule>
+        <MinScaleDenominator>8500</MinScaleDenominator>
+          <Title>-26 to -20</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>rx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>-26</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>-20</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#00a65a</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        <Rule>
+        <MaxScaleDenominator>8500</MaxScaleDenominator>
+          <Title>-26 to -20</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>rx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>-26</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>-20</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#00a65a</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+
+
+        <Rule>
+        <MinScaleDenominator>8500</MinScaleDenominator>
+          <Title>-20 to -15</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>rx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>-20</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>-15</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ffa732</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        <Rule>
+        <MaxScaleDenominator>8500</MaxScaleDenominator>
+          <Title>-20 to -15</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>rx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>-20</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>-15</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#c2fdde</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+
+
+        <Rule>
+        <MinScaleDenominator>8500</MinScaleDenominator>
+          <Title>-15 to -13</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>rx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>-15</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>-13</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ff4d3f</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        <Rule>
+        <MaxScaleDenominator>8500</MaxScaleDenominator>
+          <Title>-15 to -13</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>rx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>-15</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>-13</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ff4d3f</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+
+
+        <Rule>
+        <MinScaleDenominator>8500</MinScaleDenominator>
+          <Title>&gt; -13</Title>
+          <!-- like a linesymbolizer but with a fill too -->
+          <ogc:Filter>
+            <ogc:PropertyIsGreaterThan>
+             <ogc:PropertyName>rx</ogc:PropertyName>
+             <ogc:Literal>-13</ogc:Literal>
+            </ogc:PropertyIsGreaterThan>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#a00400</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        <Rule>
+        <MaxScaleDenominator>8500</MaxScaleDenominator>
+          <Title>&gt; -13</Title>
+          <!-- like a linesymbolizer but with a fill too -->
+          <ogc:Filter>
+            <ogc:PropertyIsGreaterThan>
+             <ogc:PropertyName>rx</ogc:PropertyName>
+             <ogc:Literal>-13</ogc:Literal>
+            </ogc:PropertyIsGreaterThan>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#a00400</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+
+        <Rule>
+        <MinScaleDenominator>8500</MinScaleDenominator>
+          <Title>0</Title>
+          <!-- like a linesymbolizer but with a fill too -->
+          <ogc:Filter>
+            <ogc:PropertyIsEqualTo>
+             <ogc:PropertyName>rx</ogc:PropertyName>
+             <ogc:Literal>0</ogc:Literal>
+            </ogc:PropertyIsEqualTo>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#c9c9c9</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        <Rule>
+        <MaxScaleDenominator>8500</MaxScaleDenominator>
+          <Title>0</Title>
+          <!-- like a linesymbolizer but with a fill too -->
+          <ogc:Filter>
+            <ogc:PropertyIsEqualTo>
+             <ogc:PropertyName>rx</ogc:PropertyName>
+             <ogc:Literal>0</ogc:Literal>
+            </ogc:PropertyIsEqualTo>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#c9c9c9</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+     </FeatureTypeStyle>
+      
+      
+    </UserStyle>
+    </NamedLayer>
+</StyledLayerDescriptor>

+ 106 - 0
app/Resources/geoserverStyles/onuStatus..xml

@@ -0,0 +1,106 @@
+<StyledLayerDescriptor version="1.0.0" 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" xmlns:gml="http://www.opengis.net/gml"
+  xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
+  <NamedLayer>
+    <Name>onuStatus</Name>
+    <UserStyle>
+      <Name>onuStatus</Name>
+      <Title></Title>
+      <Abstract></Abstract>
+      <FeatureTypeStyle>
+          <FeatureTypeName>Feature</FeatureTypeName>
+        
+        <Rule>
+        <MinScaleDenominator>8500</MinScaleDenominator>
+          <Title>0</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsEqualTo>
+             <ogc:PropertyName>status</ogc:PropertyName>
+             <ogc:Literal>0</ogc:Literal>
+            </ogc:PropertyIsEqualTo>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ff4d3f</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        <Rule>
+        <MaxScaleDenominator>8500</MaxScaleDenominator>
+          <Title>0</Title>
+          <!-- like a linesymbolizer but with a fill too -->
+          <ogc:Filter>
+            <ogc:PropertyIsEqualTo>
+             <ogc:PropertyName>status</ogc:PropertyName>
+             <ogc:Literal>0</ogc:Literal>
+            </ogc:PropertyIsEqualTo>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ff4d3f</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+
+       <Rule>
+        <MinScaleDenominator>8500</MinScaleDenominator>
+          <Title>1</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsEqualTo>
+             <ogc:PropertyName>status</ogc:PropertyName>
+             <ogc:Literal>1</ogc:Literal>
+            </ogc:PropertyIsEqualTo>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#00a65a</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        <Rule>
+        <MaxScaleDenominator>8500</MaxScaleDenominator>
+          <Title>1</Title>
+          <!-- like a linesymbolizer but with a fill too -->
+          <ogc:Filter>
+            <ogc:PropertyIsEqualTo>
+             <ogc:PropertyName>status</ogc:PropertyName>
+             <ogc:Literal>1</ogc:Literal>
+            </ogc:PropertyIsEqualTo>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#00a65a</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+
+    </FeatureTypeStyle>
+      
+      
+    </UserStyle>
+    </NamedLayer>
+</StyledLayerDescriptor>

+ 367 - 0
app/Resources/geoserverStyles/onuTxPower.xml

@@ -0,0 +1,367 @@
+<StyledLayerDescriptor version="1.0.0" 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" xmlns:gml="http://www.opengis.net/gml"
+  xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
+  <NamedLayer>
+    <Name>onuTxPower</Name>
+    <UserStyle>
+      <Name>onuTxPower</Name>
+      <Title></Title>
+      <Abstract></Abstract>
+       <FeatureTypeStyle>
+          <FeatureTypeName>Feature</FeatureTypeName>
+        
+        
+        <Rule>
+          <MinScaleDenominator>8500</MinScaleDenominator>
+          <Title>&lt; 1</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsLessThan>
+             <ogc:PropertyName>tx</ogc:PropertyName>
+             <ogc:Literal>1</ogc:Literal>
+            </ogc:PropertyIsLessThan>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ff4d3f</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+         <Rule>
+          <MaxScaleDenominator>8500</MaxScaleDenominator>
+          <Title>&lt; 1</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsLessThan>
+             <ogc:PropertyName>tx</ogc:PropertyName>
+             <ogc:Literal>1</ogc:Literal>
+            </ogc:PropertyIsLessThan>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ff4d3f</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        
+        
+        <Rule>
+            <MinScaleDenominator>8500</MinScaleDenominator>
+            <Title>1 to 1.5</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>tx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>1</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>1.5</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ffa732</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        <Rule>
+            <MaxScaleDenominator>8500</MaxScaleDenominator>
+            <Title>1 to 1.5</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>tx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>1</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>1.5</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ffa732</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        
+        <Rule>
+        <MinScaleDenominator>8500</MinScaleDenominator>
+          <Title>1.5 to 3.5</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>tx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>1.5</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>3.5</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#00a65a</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        <Rule>
+            <MaxScaleDenominator>8500</MaxScaleDenominator>
+          <Title>1.5 to 3.5</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>tx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>1.5</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>3.5</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#00a65a</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+
+
+        <Rule>
+        <MinScaleDenominator>8500</MinScaleDenominator>
+          <Title>3.5 to 4.5</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>tx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>3.5</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>4.5</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ffa732</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        <Rule>
+        <MaxScaleDenominator>8500</MaxScaleDenominator>
+          <Title>3.5 to 4.5</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>tx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>3.5</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>4.5</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ffa732</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+
+
+        <Rule>
+        <MinScaleDenominator>8500</MinScaleDenominator>
+          <Title>4.5 to 5</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>tx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>4.5</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>5</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ff4d3f</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        <Rule>
+        <MaxScaleDenominator>8500</MaxScaleDenominator>
+          <Title>4.5 to 5</Title>
+          <ogc:Filter>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>tx</ogc:PropertyName>
+               <ogc:LowerBoundary>
+                <ogc:Literal>4.5</ogc:Literal>
+               </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>5</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#ff4d3f</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+
+
+        <Rule>
+        <MinScaleDenominator>8500</MinScaleDenominator>
+          <Title>&gt; 5</Title>
+          <!-- like a linesymbolizer but with a fill too -->
+          <ogc:Filter>
+            <ogc:PropertyIsGreaterThan>
+             <ogc:PropertyName>tx</ogc:PropertyName>
+             <ogc:Literal>5</ogc:Literal>
+            </ogc:PropertyIsGreaterThan>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#a00400</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        <Rule>
+        <MaxScaleDenominator>8500</MaxScaleDenominator>
+          <Title>&gt; 5</Title>
+          <!-- like a linesymbolizer but with a fill too -->
+          <ogc:Filter>
+            <ogc:PropertyIsGreaterThan>
+             <ogc:PropertyName>tx</ogc:PropertyName>
+             <ogc:Literal>5</ogc:Literal>
+            </ogc:PropertyIsGreaterThan>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#a00400</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+
+        <Rule>
+        <MinScaleDenominator>8500</MinScaleDenominator>
+          <Title>0</Title>
+          <!-- like a linesymbolizer but with a fill too -->
+          <ogc:Filter>
+            <ogc:PropertyIsEqualTo>
+             <ogc:PropertyName>tx</ogc:PropertyName>
+             <ogc:Literal>0</ogc:Literal>
+            </ogc:PropertyIsEqualTo>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#c9c9c9</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+        <Rule>
+        <MaxScaleDenominator>8500</MaxScaleDenominator>
+          <Title>0</Title>
+          <!-- like a linesymbolizer but with a fill too -->
+          <ogc:Filter>
+            <ogc:PropertyIsEqualTo>
+             <ogc:PropertyName>tx</ogc:PropertyName>
+             <ogc:Literal>0</ogc:Literal>
+            </ogc:PropertyIsEqualTo>
+          </ogc:Filter>
+          <PointSymbolizer>
+              <Graphic>
+                <Mark>
+                  <WellKnownName>circle</WellKnownName>
+                  <Fill>
+                    <CssParameter name="fill">#c9c9c9</CssParameter>
+                  </Fill>
+                </Mark>
+              <Size>7</Size>
+            </Graphic>
+          </PointSymbolizer>
+        </Rule>
+     </FeatureTypeStyle>
+      
+      
+    </UserStyle>
+    </NamedLayer>
+</StyledLayerDescriptor>

+ 2 - 2
composer.lock

@@ -1563,7 +1563,7 @@
             "source": {
                 "type": "git",
                 "url": "ssh://git@gogs.infra.flowdat.com:222/VendorSoftwareFlowdat3/FiberhomeBundle.git",
-                "reference": "45ae78218b6e8bb0548f373afafebbbcfed10a70"
+                "reference": "15bdcb88968577f350f391452871148c8bc5e5c7"
             },
             "type": "library",
             "autoload": {
@@ -1576,7 +1576,7 @@
                 "Fiberhome",
                 "Flowdat 3"
             ],
-            "time": "2017-08-09 13:22:08"
+            "time": "2017-08-23 14:30:32"
         },
         {
             "name": "ik/statsd-bundle",

+ 170 - 0
src/StatsBundle/Command/StatsGeoOnuCommand.php

@@ -0,0 +1,170 @@
+<?php
+
+namespace StatsBundle\Command;
+
+use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+use StatsBundle\Services\DeviceManager;
+
+class StatsGeoOnuCommand extends BaseCommand
+{
+
+    protected function configure()
+    {
+        $this
+            ->setName('stats:onu:geo')
+            ->setDescription('Update ONU Stats')
+            ->setHelp('Genera un geoJson con las stats de las ONUs')
+            ->setDefinition(array(
+                new InputOption('olt-device-id', null, InputOption::VALUE_OPTIONAL, "DeviceId de la OLT", 1),
+                new InputOption('olt-server-id', null, InputOption::VALUE_OPTIONAL, "ServerDevice de la OLT", 1)
+            ))
+        ;
+    }
+
+    /**
+     * @param InputInterface $input
+     * @param OutputInterface $output
+     */
+    protected function execute(InputInterface $input, OutputInterface $output)
+    {
+        parent::execute($input, $output);
+
+        $oltDeviceId = (int) $input->getOption('olt-device-id');
+        $oltServerId = (int) $input->getOption('olt-server-id');
+
+        $now = date("d-m-Y H:i:s");
+
+        $doctrine = $this->getContainer()->get('doctrine.orm.entity_manager');
+        
+        $deviceOlt = $doctrine->getRepository('\StatsBundle\Entity\Device')->findOneBy(array('deviceId' => $oltDeviceId, 'deviceServer' => $oltServerId, 'deviceType' => 'FTTHBundle\Entity\OLT'));
+
+        $tenancyId = $deviceOlt->getTenancyId();
+        $deviceServerId = $oltServerId;
+        
+        $key_olt_scan = "olt_scan_d_{$oltDeviceId}_s_{$oltServerId}";
+
+        $metrics = array("tx" => "onu_tx_", "rx" => "onu_rx_", "temp" => "onu_temperature_", "volt" => "onu_voltage_", "status" => "onu_status_");
+        $data = $stats = array();
+
+        foreach($metrics as $m => $metric) {
+            $key_onu_stats = "{$metric}d_{$oltDeviceId}_s_{$oltServerId}";
+            $stats[$metric] = $this->getData($key_onu_stats, true);
+        }
+
+        $onus = $this->getData($key_olt_scan, true);
+
+        $devices = $this->getDevices($oltServerId);
+
+        $geo = array();
+        $geo['type'] = "FeatureCollection";
+        $geo['totalFeatures'] = 0;
+        $geo['features'] = array();
+
+
+        $count = 0;
+        
+        foreach($onus as $index => $onu) {
+            $sn = $onu['serialNumber'];
+            $lowSn = strtolower($sn);
+            
+            if(!isset($devices[$lowSn])) 
+                continue;
+            
+            $row = array();
+
+            $row['type'] = "Feature";
+            $row['id'] = "onu.{$lowSn}";
+            
+            
+            $lat = $devices[$lowSn]['lat'];
+            $lng = $devices[$lowSn]['lng'];
+            
+            $row['geometry'] = array('type' => "Point", 'coordinates' => array(0 => $lng, 1 => $lat));
+            $row['geometry_name'] = "the_geom";
+            
+            $row['properties'] = array();
+            
+            foreach($metrics as $m => $metric) {
+                if(isset($stats[$metric][$sn])) {
+                    $row['properties'][$m] = $stats[$metric][$sn];
+                } else {
+                    $row['properties'][$m] = "null";
+                }
+            }
+            
+            $geo['features'][] = $row;
+            $count++;
+        }
+
+        $geo['totalFeatures'] = $count;
+        $geo['crs'] = array('type' => "name", 'properties' => array('name' => "urn:ogc:def:crs:EPSG::4326"));
+
+
+        if($count > 0) {
+            $data = json_encode($geo);
+        
+            $file_name = time().".json";
+            $dir = "/var/flowdat/geoFd3/{$oltDeviceId}_{$oltServerId}";
+            if(!is_dir($dir))
+                mkdir($dir);
+    
+            $file = fopen($dir."/".$file_name, "a+");
+            fwrite($file, $data);
+        
+        }
+
+    }
+
+    public function getDevices($oltServerId) 
+    {
+
+        $doctrine = $this->getContainer()->get('doctrine.orm.entity_manager');
+
+        $data = array();
+        $onus = $doctrine->getRepository('\StatsBundle\Entity\Device')->findBy(array('deviceServer' => $oltServerId, 'deviceType' => 'FTTHBundle\Entity\ONU'));
+
+        foreach($onus as $k => $device) {
+
+            
+            $extra = $device->jsonExtraData();
+
+            if(isset($extra['ponSerialNumber'])) {
+
+                $sn = strtolower($extra['ponSerialNumber']);
+
+                if(isset($extra['location']) && isset($extra['location']['extraData'])) 
+                {
+                    if(isset($extra['location']['extraData']['lat'])) {
+                        $lat = $extra['location']['extraData']['lat'];
+                    } else {
+                        continue;
+                    }
+
+                    if(isset($extra['location']['extraData']['lng'])) {
+                        $lng = $extra['location']['extraData']['lng'];
+                    } else {
+                        continue;
+                    }
+                    
+                    if(is_null($lat) || is_null($lng)) continue;
+
+                } else {
+                    continue;
+                }
+
+                $data[$sn] = array('deviceId' => $device->getDeviceId(), 'lat' => $lat, 'lng' => $lng);
+            }
+        }
+
+
+
+        //print_r($data);die;
+
+        return $data;
+
+    }
+
+}