Hi Oleg, On Sep 1, 2008, at 9:16 AM, Oleg Shaniuk wrote:
> Hi All, > > I'm looking at projections now: I'm trying to use osm.xml for WMS > script to display osm-like map via WMS requests, > This is how I'm doing it: > 1. Add Map object to my WMSFactory: > 2. load_map(m,'osm.xml') Great. > 3. copy all styles and layers from m into wmsfactory, using > register_style and .register_layer methods. > Interesting... yes the way that the ogcserver code works, registering the styles is going to be slightly different than the examples. Paste this code and I'll try to test. > i'm getting empty png on output, remind me, have you build mapnik in debug mode and what do your apache logs say? Are any features being processed? > but, I believe, this is all around > projections, defined in osm.xml: > "+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 [EMAIL PROTECTED] +no_defs +over" That looks like google spherical mercator: http://spatialreference.org/ref/user/google-projection/ > > I'm replacing it for layer.src="+init=epsg:3395" to register layers > properly in wmsfactory. which is the standard world mercator, so you need instead: layer.src="+init=epsg:900913 then make sure to add 900913 to your allowedepsgcodes in the ogcserver.conf allowedepsgcodes=4316,900913, > This is wrong(but let me check, if python > script works, etc), but I don't know how to generate right espg > projection from one I have. > No sure what you mean... http://spatialreference.org/ref/user/google-projection/proj4/ ? > I'd like to describe this on page, Leslie just created - to let other > users go though projections much easier - but first, I have learn them > ;) > > If someone has ideas, or some docs - it would be great. > > -- > RO Great, let us know if any of these ideas help. Most of all you'll need to check your debug and apache error output I think. Cheers, Dane > > > > 2008/8/30 Dane Springmeyer <[EMAIL PROTECTED]>: >> Hi Leslie, >> Thanks for adding the page, I think thats a great idea. I've been >> working >> with projections for a long time, errr... at least long enough >> that I am >> able to confuse most people I try to help! >> Oleg, have you made any progess? Figuring out the projection of >> your data >> and then making sure to add the epsg code to you ogcserver.conf is >> all you >> should need to do, then you can test the new url query string. >> An example config with some code to turn on EPSG 3395 can be found >> here: >> http://mapnik-utils.googlecode.com/svn/trunk/tutorials/wms/ >> Cheers, >> Dane >> >> >> >> >> On Aug 29, 2008, at 1:30 PM, Leslie Wu wrote: >> >> I guess we could add some background GIS / info links to the Mapnik >> wiki. >> I've been learning about projections myself recently. >> Perhaps a proj.4 reference and a guide such as this? >> http://www.manifold.net/doc/guide_to_selecting_map_projections.htm >> I started a brief introduction to GIS page here: >> http://trac.mapnik.org/wiki/IntroductionToGIS >> >> Please contribute :) >> ~L >> >> On Fri, Aug 29, 2008 at 12:41 AM, Oleg Shaniuk <[EMAIL PROTECTED]> >> wrote: >>> >>> Hi Dane, >>> >>> Thanks for tip! It's really about projections. Looks like, time to >>> learn more about geospatial systems. >>> Also, as you might guess already, [>>> from mapnik.ogcserver import >>> common] works well ;) >>> >>> Regards, >>> Oleg >>> >>> 2008/8/28 Dane Springmeyer <[EMAIL PROTECTED]>: >>>> Oleg, >>>> >>>> If you rebuild mapnik with the debug=y Scons flag, mapnik should >>>> output >>>> a >>>> variety of information to your apache logs such at the extent of >>>> the >>>> data >>>> and the map, and how many features are processed given the >>>> bounding box. >>>> >>>> I think if you do this what you will see is that no features are >>>> being >>>> processed since they are not falling within the WMS query BBOX >>>> you are >>>> testing. >>>> >>>> I think you must have downloaded that world_boundaries_m.shp from >>>> OSM? >>>> If I >>>> run ogrinfo on that shapefile I get: >>>> >>>> $ ogrinfo world_boundaries_m.shp -so -al >>>> INFO: Open of `world_boundaries_m.shp' >>>> using driver `ESRI Shapefile' successful. >>>> >>>> Layer name: world_boundaries_m >>>> Geometry: Polygon >>>> Feature Count: 3807 >>>> Extent: (-20037400.000000, -19929239.110000) - (20037400.000000, >>>> 18375854.709643) >>>> Layer SRS WKT: >>>> PROJCS["Mercator", >>>> GEOGCS["GCS_WGS_1984", >>>> DATUM["WGS_1984", >>>> SPHEROID["WGS_1984",6378137,298.257223563]], >>>> PRIMEM["Greenwich",0], >>>> UNIT["Degree",0.017453292519943295]], >>>> PROJECTION["Mercator_1SP"], >>>> PARAMETER["latitude_of_origin",0], >>>> PARAMETER["central_meridian",0], >>>> PARAMETER["scale_factor",1], >>>> PARAMETER["false_easting",0], >>>> PARAMETER["false_northing",0], >>>> UNIT["Meter",1]] >>>> CAT: Real (16.0) >>>> FIPS_CNTRY: String (80.0) >>>> CNTRY_NAME: String (80.0) >>>> >>>> >>>> It seems like for your testing script you will need a shapefile >>>> in true >>>> unprojected WGS 84(EPSG:4326) coordinates, like the one here: >>>> http://mapnik-utils.googlecode.com/svn/trunk/sample_data/ >>>> >>>> Otherwise you will need to modify your script >>>> >>>> such that this line: >>>> >>>>>>> lyr = Layer('world', '+init=epsg:4326') >>>> >>>> >>>> becomes: >>>> >>>> lyr = Layer('world', '+init=epsg:3395') >>>> >>>> >>>> Which will allow the WMS server to reproject your data. So, using >>>> the >>>> same >>>> query string you should get back a map in EPSG:4326. >>>> >>>> If you then want to get map tiles in mercator you'll need to add >>>> a line >>>> to >>>> your ogcserver.conf like: >>>> >>>> allowedepsgcodes=4326,3395, # trailing comma is essential >>>> >>>> and then test a WMS query string with a >>>> bbox=-20037400.000000,-19929239.110000, >>>> 20037400.000000,18375854.709643 >>>> and >>>> EPSG=3395 >>>> >>>> something more like: >>>> >>>> >>>> http://localhost/fcgi-bin/wms?LAYERS=world&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&FORMAT=image%2Fpng&SRS=EPSG%3A3395&BBOX=-20037400.000000,-19929239.110000,%2020037400.000000,18375854.709643&WIDTH=256&HEIGHT=256 >>>> >>>> >>>> Dane >>>> >>>> >>>> On Aug 28, 2008, at 7:53 AM, Oleg Shaniuk wrote: >>>> >>>>> Hi Dane, >>>>> >>>>> I've checked log, even tried to run apache in debug mode with >>>>> maximum >>>>> verbose level (debug), but there is just nothing in log. When I >>>>> set >>>>> incorrect coastline file name, I've got an exception; so, it has >>>>> access to file (I've checked rights for double-sure) >>>>> My system is ubuntu 8.04, apache2 ( 2.2.8 ubuntu ). Mapnik works >>>>> well. >>>>> The confusing thing is white color - seems, it just render empty >>>>> map, >>>>> without any styles at all... >>>>> >>>>> which reasons at all can cause such behavior? >>>>> >>>>> Regards, >>>>> Oleg >>>>> >>>>> 2008/8/28 Dane Springmeyer <[EMAIL PROTECTED]>: >>>>>> >>>>>> Hi Oleg, >>>>>> >>>>>> Your test configuration, including that URL, looks fine. >>>>>> >>>>>> My guess is that your apache user may not have read permissions >>>>>> for >>>>>> '/var/mapnik/world_boundaries/world_boundaries_m' >>>>>> Check your apache logs and if this is the case you'll likely >>>>>> see the >>>>>> mapnik >>>>>> output of 'got exception...' >>>>>> Or perhaps the Mapnik WMS code is failing for some other >>>>>> reason, and >>>>>> the >>>>>> apache error logs should give you an idea. If you find >>>>>> anything you >>>>>> don't >>>>>> understand, paste a snippet back to the list. >>>>>> >>>>>> Also, what system are you running? >>>>>> >>>>>> Cheers, >>>>>> >>>>>> Dane >>>>>> >>>>>> On Aug 28, 2008, at 7:10 AM, Oleg Shaniuk wrote: >>>>>> >>>>>>> Hi All, >>>>>>> >>>>>>> I'm playing with mapnik's WMS features. And I'm getting empty >>>>>>> image >>>>>>> in >>>>>>> browser. The interesting thing, if I use the same style and >>>>>>> layer, >>>>>>> but >>>>>>> with Map object and render image in python script - it works >>>>>>> correct. >>>>>>> >>>>>>> Fot the request: >>>>>>> >>>>>>> >>>>>>> >>>>>>> http://localhost/fcgi-bin/wms?VERSION=1.1.1&REQUEST=GetMap&LAYERS=world&FORMAT=image/png&SRS=EPSG:4326&STYLES=&&BBOX=-179,-83,179,83&EXCEPTIONS=application/vnd.ogc.se_inimage&width=600&height=300 >>>>>>> >>>>>>> I'm getting empty white picture 600x300pix. >>>>>>> >>>>>>> using mapnik 5.1.0 >>>>>>> >>>>>>> My scripts/config: >>>>>>> >>>>>>> ######## wms python script for fcgi ######### >>>>>>> #!/usr/bin/python >>>>>>> >>>>>>> from mapnik.ogcserver.cgiserver import Handler >>>>>>> import jon.fcgi as fcgi >>>>>>> >>>>>>> import sys >>>>>>> sys.path.append('/var/mapnik') >>>>>>> >>>>>>> class WMSHandler(Handler): >>>>>>> configpath = '/var/mapnik/ogcserver.conf' >>>>>>> >>>>>>> fcgi.Server({fcgi.FCGI_RESPONDER: WMSHandler}).run() >>>>>>> >>>>>>> ######## ogcserver.config ############### >>>>>>> >>>>>>> # unchanged, except >>>>>>> >>>>>>> module=worldMapFactory >>>>>>> >>>>>>> ######## worldMapFactory.py ############# >>>>>>> >>>>>>> #!/usr/bin/python >>>>>>> >>>>>>> from mapnik.ogcserver.WMS import BaseWMSFactory >>>>>>> from mapnik import * >>>>>>> >>>>>>> class WMSFactory(BaseWMSFactory): >>>>>>> def __init__(self): >>>>>>> BaseWMSFactory.__init__(self) >>>>>>> sty = Style() >>>>>>> rl = Rule() >>>>>>> rl.symbols.append(PolygonSymbolizer(Color('#f2eff9'))) >>>>>>> rl.symbols.append(LineSymbolizer(Color('steelblue'),.1)) >>>>>>> sty.rules.append( rl ) >>>>>>> self.register_style('style1', sty) >>>>>>> lyr = Layer('world', '+init=epsg:4326') >>>>>>> >>>>>>> lyr.title = 'World' >>>>>>> lyr.abstract = 'World Test' >>>>>>> lyr.queryable = True >>>>>>> lyr.datasource = >>>>>>> Shapefile(file='/var/mapnik/world_boundaries/ >>>>>>> world_boundaries_m') >>>>>>> self.register_layer(lyr,'style1') >>>>>>> self.finalize() >>>>>>> >>>>>>> >>>>>>> # simple test script (works just fine): >>>>>>> ######## mapnikTest.py ########### >>>>>>> >>>>>>> from mapnik import * >>>>>>> >>>>>>> m = Map(600,300) >>>>>>> m.background = Color('steelblue') >>>>>>> >>>>>>> sty = Style() >>>>>>> rl = Rule() >>>>>>> >>>>>>> rl.symbols.append(PolygonSymbolizer(Color('#f2eff9'))) >>>>>>> rl.symbols.append(LineSymbolizer(Color('steelblue'),.1)) >>>>>>> >>>>>>> sty.rules.append( rl ) >>>>>>> >>>>>>> m.append_style('My Style',sty) >>>>>>> >>>>>>> lyr = Layer('world', '+init=epsg:4326') >>>>>>> >>>>>>> lyr.title = 'World Borders' >>>>>>> lyr.abstract = 'World Test' >>>>>>> lyr.queryable = True >>>>>>> lyr.datasource = >>>>>>> Shapefile(file='/var/mapnik/world_boundaries/ >>>>>>> world_boundaries_m') >>>>>>> lyr.styles.append('My Style') >>>>>>> >>>>>>> m.layers.append(lyr) >>>>>>> >>>>>>> m.zoom_to_box(lyr.envelope()) >>>>>>> render_to_file(m, 'hello_world_in_pure_python.png') >>>>>>> _______________________________________________ >>>>>>> Mapnik-devel mailing list >>>>>>> [EMAIL PROTECTED] >>>>>>> https://lists.berlios.de/mailman/listinfo/mapnik-devel >>>>>> >>>>>> >>>> >>>> >>> _______________________________________________ >>> Mapnik-devel mailing list >>> [EMAIL PROTECTED] >>> https://lists.berlios.de/mailman/listinfo/mapnik-devel >> >> >> _______________________________________________ Mapnik-users mailing list [email protected] https://lists.berlios.de/mailman/listinfo/mapnik-users

