วันพุธที่ 14 มีนาคม พ.ศ. 2555

ภาพไม่ render บน GeoWebCache

วันนี้เจอปัญหาการแสดงผลภาพแผนที่บน GeoWebCache  คือ

เมื่อ preview ดูด้วย openlayer ก็สามารถ preview ได้ ตามปกติ
แต่เมื่อ preview บน GeoWebCache สามารถแสดงภาพได้เพียงบางส่วนหรือในบาง scale ดังรูปข้างล่าง


































ปัญหาเช่นนี้มาจากหลายสาเหตุ แต่กรณีนี้เกิดจากการเขียน style ไม่ถูกต้องตาม syntax ของมัน ซึ่งปัญหาของ case นี้เกิดขึ้นจากการครอบ <FeatureTypeStyle>...</FeatureTypeStyle> Tag ไม่ถูกต้อง ดัง code ข้างล่าง
 
            <FeatureTypeStyle>
                <Rule>
                    <Name>Class 1</Name>
                    <ogc:Filter>
                        <ogc:PropertyIsEqualTo>
                        <ogc:PropertyName>fc</ogc:PropertyName>
                        <ogc:Literal>1</ogc:Literal>
                        </ogc:PropertyIsEqualTo>
                    </ogc:Filter>
                    <MinScaleDenominator>9000001</MinScaleDenominator>
                    <MaxScaleDenominator>20000000</MaxScaleDenominator>
                    <LineSymbolizer>
                        <Stroke>
                            <CssParameter name="stroke">#f5ef78</CssParameter>
                            <CssParameter name="stroke-width">.1</CssParameter>
                            <CssParameter name="stroke-linejoin">round</CssParameter>
                            <CssParameter name="stroke-linecap">round</CssParameter>
                        </Stroke>
                    </LineSymbolizer>
                </Rule>
            </FeatureTypeStyle>
          
            <FeatureTypeStyle>
                <Rule>
                    <Name>Class 2</Name>
                    <ogc:Filter>
                        <ogc:PropertyIsEqualTo>
                        <ogc:PropertyName>fc</ogc:PropertyName>
                        <ogc:Literal>2</ogc:Literal>
                        </ogc:PropertyIsEqualTo>
                    </ogc:Filter>
                    <MinScaleDenominator>5000001</MinScaleDenominator>
                    <MaxScaleDenominator>9000000</MaxScaleDenominator>
                    <LineSymbolizer>
                        <Stroke>
                            <CssParameter name="stroke">#efe979</CssParameter>
                            <CssParameter name="stroke-width">.2</CssParameter>
                            <CssParameter name="stroke-linejoin">round</CssParameter>
                            <CssParameter name="stroke-linecap">round</CssParameter>
                        </Stroke>
                    </LineSymbolizer>
                </Rule>
            </FeatureTypeStyle>

<FeatureTypeStyle>...</FeatureTypeStyle> Tag ใช้สำหรับการ render features ที่มีความแตกต่างกัน เช่น point line polygon แต่จากตัวอย่างข้างบน  feature เป็น line เหมือนกัน ฉะนั้น จะต้องครอบ FeatureTypeStyle Tag ไว้ดังนี้

            <FeatureTypeStyle>

                <Rule>
                    <Name>Class 1</Name>
                    <ogc:Filter>
                        <ogc:PropertyIsEqualTo>
                        <ogc:PropertyName>fc</ogc:PropertyName>
                        <ogc:Literal>1</ogc:Literal>
                        </ogc:PropertyIsEqualTo>
                    </ogc:Filter>
                    <MinScaleDenominator>9000001</MinScaleDenominator>
                    <MaxScaleDenominator>20000000</MaxScaleDenominator>
                    <LineSymbolizer>
                        <Stroke>
                            <CssParameter name="stroke">#f5ef78</CssParameter>
                            <CssParameter name="stroke-width">.1</CssParameter>
                            <CssParameter name="stroke-linejoin">round</CssParameter>
                            <CssParameter name="stroke-linecap">round</CssParameter>
                        </Stroke>
                    </LineSymbolizer>
                </Rule>

                <Rule>
                    <Name>Class 2</Name>
                    <ogc:Filter>
                        <ogc:PropertyIsEqualTo>
                        <ogc:PropertyName>fc</ogc:PropertyName>
                        <ogc:Literal>2</ogc:Literal>
                        </ogc:PropertyIsEqualTo>
                    </ogc:Filter>
                    <MinScaleDenominator>5000001</MinScaleDenominator>
                    <MaxScaleDenominator>9000000</MaxScaleDenominator>
                    <LineSymbolizer>
                        <Stroke>
                            <CssParameter name="stroke">#efe979</CssParameter>
                            <CssParameter name="stroke-width">.2</CssParameter>
                            <CssParameter name="stroke-linejoin">round</CssParameter>
                            <CssParameter name="stroke-linecap">round</CssParameter>
                        </Stroke>
                    </LineSymbolizer>
                </Rule>

            </FeatureTypeStyle>

ไม่มีความคิดเห็น:

แสดงความคิดเห็น