Artem, thanks for your reply, but I am beginner in Mapnik. Please
explain it in detail
I  have configured as following:
installed proj4 as written in manual and setup following commands in Python
>>>from mapnik import Projection
>>>Projection('+init=epsg:900913')

Added this link ... into c:\prog\nad\epsg
«900913» +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0
+x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgri...@null +wktext +no_defs «»


Anyway the map rendering is not correct as it must be.


#### wms.py ####
import sys
from mapnik.ogcserver.wsgi import WSGIApp
sys.path.append('c:/ms4w/Apache/htdocs/wms/')

application = WSGIApp('c:/ms4w/Apache/htdocs/wms/ogcserver.conf')

if __name__ == '__main__':
    from wsgiref.simple_server import make_server
    httpd = make_server('localhost', 8000, application)
    print "Listening on port 8000...."
    httpd.serve_forever()

#### ogcserver.conf ####
[server]
module= xml_factory
debug=1
[service]
title=MapnikOGC
abstract=The Mapnik OGC Server Sample Configuration
maxheight=2048
maxwidth=2048
# 3031 is an antarctica polar projection
allowedepsgcodes=3031,4326,3395,900913

onlineresource=http://localhost/
fees=
keywordlist=mapnik
accessconstraints=

[contact]
contactperson=
contactorganization=
contactposition=
addresstype=
address=
city=
stateorprovince=
postcode=
country=
contactvoicetelephone=
contactelectronicmailaddress=

#### xml_factory.py ####

from mapnik.ogcserver.WMS import BaseWMSFactory
from mapnik import *

class WMSFactory(BaseWMSFactory):
  def __init__(self):
    BaseWMSFactory.__init__(self)
    self.loadXML('c:/ms4w/Apache/htdocs/wms/population.xml')
    self.finalize()
        
#### index.php ####

<script src="http://localhost/OpenLayers/lib/OpenLayers.js";></script>

<script type="text/javascript">
        var map;

        function init() {

            var options = {
                maxResolution: 156543.0339,
                units: 'm',
                projection: new OpenLayers.Projection("EPSG:900913"),
                maxExtent: new OpenLayers.Bounds(-20037508.34,
-20037508.34, 20037508.34, 20037508.34)
                };

            map = new OpenLayers.Map("map", options);
            wms = new OpenLayers.Layer.WMS("Mapnik
WMS","http://localhost:8000?";,
                {
                layers: '__all__',
                format:'image/png',
                bgcolor:'0x90B4D5',
                //transparent:'TRUE'
                },
                {
                gutter:1,
                buffer:0,
                ratio:1,
                wrapDateLine: true,
                isBaselayer:true,
                singleTile:true,
                transitionEffect:'resize'
                }
            );

            map.addLayers([wms]);
            map.fractionalZoom = true;
            map.addLayers([wms]);
            map.addControl(new OpenLayers.Control.Scale('scale'));
            map.addControl(new OpenLayers.Control.Permalink('permalink'));
            map.addControl(new OpenLayers.Control.MousePosition());
            map.addControl(new OpenLayers.Control.Navigation());
            map.addControl(new OpenLayers.Control.PanZoom());
            var ls = new OpenLayers.Control.LayerSwitcher()
            map.addControl(ls);
            ls.maximizeControl();
            map.zoomToMaxExtent();
            }
    </script>

#### population.xml ####
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Map>
<!-- Sample Mapnik XML template by Dane Springmeyer -->
<Map srs="+proj=latlong +datum=WGS84">

  <Style name="population">

     <Rule>
      <!-- Built from Seven Class sequential YIGnBu from www.colorbrewer.org -->
      <!-- Quantile breaks originally from QGIS layer classification -->
      <Filter>[POP2005] = 0 </Filter>
      <PolygonSymbolizer>
        <CssParameter name="fill">#ffffcc</CssParameter>
      </PolygonSymbolizer>
      <!-- Outlines for Antarctica look good -->
      <LineSymbolizer>
        <CssParameter name="stroke">black</CssParameter>
        <CssParameter name="stroke-width">.1</CssParameter>
      </LineSymbolizer>
     </Rule>

     <Rule>
      <Filter>[POP2005] &gt; 0 and [POP2005] &lt; 15000</Filter>
      <PolygonSymbolizer>
        <CssParameter name="fill">#c7e9b4</CssParameter>
      </PolygonSymbolizer>
      <!-- Outlines for Antarctica look good -->
      <LineSymbolizer>
        <CssParameter name="stroke">black</CssParameter>
        <CssParameter name="stroke-width">.1</CssParameter>
      </LineSymbolizer>
     </Rule>

     <Rule>
      <Filter>[POP2005] &gt;= 15000 and [POP2005] &lt; 255000</Filter>
      <PolygonSymbolizer>
        <CssParameter name="fill">#7fcdbb</CssParameter>
      </PolygonSymbolizer>
     </Rule>

     <Rule>
      <Filter>[POP2005] &gt;= 255000 and [POP2005] &lt; 1300000</Filter>
      <PolygonSymbolizer>
        <CssParameter name="fill">#1d91c0</CssParameter>
      </PolygonSymbolizer>
     </Rule>

     <Rule>
      <Filter>[POP2005] &gt;= 1300000 and [POP2005] &lt; 4320000</Filter>
      <PolygonSymbolizer>
        <CssParameter name="fill">#41b6c3</CssParameter>
      </PolygonSymbolizer>
     </Rule>

     <Rule>
      <Filter>[POP2005] &gt;= 4320000 and [POP2005] &lt; 9450000</Filter>
      <PolygonSymbolizer>
        <CssParameter name="fill">#225ea8</CssParameter>
      </PolygonSymbolizer>
     </Rule>

     <Rule>
      <Filter>[POP2005] &gt;= 9450000 and [POP2005] &lt; 25650000</Filter>
      <PolygonSymbolizer>
        <CssParameter name="fill">#225ea8</CssParameter>
      </PolygonSymbolizer>
     </Rule>

     <Rule>
      <Filter>[POP2005] &gt;= 25650000 and [POP2005] &lt; 1134000000</Filter>
      <PolygonSymbolizer>
        <CssParameter name="fill">#122F7F</CssParameter>
      </PolygonSymbolizer>
     </Rule>

     <Rule>
      <ElseFilter/> <!-- This will catch all other values - in this
case just India and China -->
      <!-- A dark red polygon fill and black outline is used here to
highlight these two countries -->
      <PolygonSymbolizer>
        <CssParameter name="fill">darkred</CssParameter>
      </PolygonSymbolizer>
      <LineSymbolizer>
        <CssParameter name="stroke">black</CssParameter>
        <CssParameter name="stroke-width">.7</CssParameter>
      </LineSymbolizer>
     </Rule>

   </Style>

   <Style name="countries_label">
     <Rule>
      <!--  Only label those countries with over 9 Million People -->
      <!--  Note: Halo and Fill are reversed to try to make them subtle -->
      <Filter>[POP2005] &gt;= 4320000 and [POP2005] &lt; 9450000</Filter>
      <TextSymbolizer name="NAME" face_name="DejaVu Sans Bold"
size="7" fill="black" halo_fill= "#DFDBE3" halo_radius="1"
wrap_width="20" spacing="5" allow_overlap="false" avoid_edges="false"
min_distance="10"/>
     </Rule>

     <Rule>
      <!--  Only label those countries with over 9 Million People -->
      <!--  Note: Halo and Fill are reversed to try to make them subtle -->
      <Filter>[POP2005] &gt;= 9450000 and [POP2005] &lt; 25650000</Filter>
      <TextSymbolizer name="NAME" face_name="DejaVu Sans Book"
size="9" fill="black" halo_fill= "#DFDBE3" halo_radius="1"
wrap_width="20" spacing="5" allow_overlap="false" avoid_edges="false"
min_distance="10"/>
     </Rule>

     <Rule>
      <!--  Those with over 25 Million get larger labels -->
      <Filter>[POP2005] &gt;= 25650000 and [POP2005] &lt; 1134000000</Filter>
      <TextSymbolizer name="NAME" face_name="DejaVu Sans Book"
size="12" fill="white" halo_fill= "#2E2F39" halo_radius="1"
wrap_width="20" spacing="5" allow_overlap="false" avoid_edges="true"
min_distance="10"/>
     </Rule>

     <Rule>
      <!--  Those with over 25 Million get larger labels -->
      <!--  Note: allow_overlap is true here to allow India to sneak through -->
      <Filter>[POP2005] &gt;= 1134000000</Filter>
      <TextSymbolizer name="NAME" face_name="DejaVu Sans Book"
size="15" fill="white" halo_fill= "black" halo_radius="1"
wrap_width="20" spacing="5" allow_overlap="true" avoid_edges="true"
min_distance="10"/>
     </Rule>
  </Style>

  <Layer name="countries" status="on" queryable="true">
    <!-- Style order determines layering hierarchy -->
    <!-- Labels go on top so they are listed second -->
    <StyleName>population</StyleName>
    <Datasource>
      <Parameter name="type">shape</Parameter>
      <Parameter
name="file">c:/ms4w/Apache/htdocs/wms/data/TM_WORLD_BORDERS_SIMPL-0.2</Parameter>
    </Datasource>
  </Layer>

  <Layer name="countries_l" status="on" queryable="true">
    <!-- Style order determines layering hierarchy -->
    <!-- Labels go on top so they are listed second -->
    <StyleName>countries_label</StyleName>
    <Datasource>
      <Parameter name="type">shape</Parameter>
      <Parameter
name="file">c:/ms4w/Apache/htdocs/wms/data/TM_WORLD_BORDERS_SIMPL-0.2</Parameter>
    </Datasource>
  </Layer>
</Map>

On 1/28/10, Artem Pavlenko <[email protected]> wrote:
> Hi Ozodbek,
>
> You're projecting from Geographical (Lon/Lat) WGS84 coordinate system
> to spherical Mercator (spheroid not an ellipsoid) , right? In this
> process you're getting coordinates which are outside of the valid
> longitude range (-180,180). The workaround depends on your
> requirements. Try using Mercator with WGS84 ellipsoid, or pre-process
> your original dataset to use spheroid and clip all features to the
> extent which will keep proj4 happy e.g
>
> -180,-85,180,85
>
> We're aware of this issue and current behaviour is far from ideal.
> This is something we're hoping to address in upcoming releases.
>
> Regards,
> Artem
>
>
> 2010/1/28 Ozodbek Ulmasov <[email protected]>:
>> Map was shown incorrect when I opened it in browser.
>> To check it please visit this link http://max.uz/mapnik.gif
>> I also noticed disappearing of layers when zooming.
>> The same problem occures with other maps.
>> I really need your help, can you please suggest me how can I solve the
>> problems.
>>
>> Best regards
>> Ozodbek Ulmasov
>> _______________________________________________
>> Mapnik-users mailing list
>> [email protected]
>> https://lists.berlios.de/mailman/listinfo/mapnik-users
>>
>


-- 
------------------------------------------------------
Ozodbek Ulmasov
Manager

Newmax Technologies LLC
Uzbekistan, Tashkent
Parkentskaya str. 89b, 700007
Tel: (+99897) 3447775
      (+99871) 1401515
Fax: (+99871) 1401515
E-mail: [email protected]
_______________________________________________
Mapnik-users mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/mapnik-users

Reply via email to