[Mapnik-users] Draw GPS Points to Map/Image

Leslie Wu lwu.two at gmail.com
Tue Aug 19 07:12:01 CEST 2008


Hey Dane,
I haven't tried using it in Python, but as I just realized now that it
doesn't quite matter since, as of svn trunk (r729),
memory_datasource::features(const query& q) relies on a certain
memory_featureset(bbox, ...) ctor, but if you take a look at
memory_featureset.hpp, the next() iterator method is mostly commented out.

In other words, when Mapnik asks the memory_datasource for features, it
returns an empty feature_ptr.

That said, if this gets fixed (it's been this way for 11 months), the
following C++ code might work. I adapted Andreas's code, as at least one
method call changed (to add_geometry), and I instead derived publicly from
memory_datasource.

Here's the code snippet (yet to be tested properly) on gist.github:
   http://gist.github.com/6150

Artem, shall I create a ticket? I don't see the issue mentioned on the
tracker.

~L


On Sun, Aug 17, 2008 at 12:50 PM, Dane Springmeyer <blake at hailmail.net>wrote:

> Andreas,
>
> Thats great. So do you know if the `mapnik::memory_datasource` is
> exposed in the python bindings?
>
> Dane
>
>
> On Aug 17, 2008, at 11:58 AM, Andreas Volz wrote:
>
> > Am Thu, 07 Aug 2008 11:15:02 +0200 schrieb Ric S:
> >
> >> Hi folks,
> >>
> >> I have successfully setup mapnik. Generating a map already works.
> >> Now I would like to draw gps points into the map, I was searching the
> >> net for a few hours to get some info, unfortunately
> >> I still have now clue yet how this can be done with mapnik.
> >> I assume I have to create a layer and add points to it. I could not
> >> find an example how to draw points.
> >>
> >> I would like to set gps points in my map. Could you please show me
> >> how to add a single gps point to this map/layer. The code from
> >> generate_image which I used:
> >> ...
> >>    z = 10
> >>    imgx = 100 * z
> >>    imgy = 100 * z
> >>
> >>    m = Map(imgx,imgy)
> >>    load_map(m,mapfile)
> >>    prj = Projection("+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 +nadgrids=@null +no_defs
> >> +over") c0 = prj.forward(Coord(ll[0],ll[1]))
> >>    c1 = prj.forward(Coord(ll[2],ll[3]))
> >>    bbox = Envelope(c0.x,c0.y,c1.x,c1.y)
> >>    m.zoom_to_box(bbox)
> >>    im = Image(imgx,imgy)
> >>    render(m, im)
> >>    view = im.view(0,0,imgx,imgy) # x,y,width,height
> >>    view.save(map_uri,'png')
> >
> > I've done that some time ago. Worked well. But then I deactivated the
> > code for some reason. Not sure if it works at the moment:
> >
> > void MapnikSource::insertDataPoint (double x, double y, const char
> > *key, const char *value, const char* layer)
> > {
> >  /*Layer lyr (layer);
> >  datasource_ptr ds (new mapnik::memory_datasource);
> >  feature_ptr f (feature_factory::create (keyID));
> >
> >  geometry_ptr point (new point_impl (-1));
> >  point->move_to (x, y);
> >
> >  f->set_geometry(point);
> >
> >  transcoder tr ("utf-8");
> >  (*f)[key] = tr.transcode (value);
> >
> >        if (ds)
> >        {
> >                mapnik::memory_datasource *mem = dynamic_cast
> > <mapnik::memory_datasource*> (ds.get ());
> >
> >                if (mem)  // check if cast is ok!
> >                {
> >                        // do something with memory_datasource e.g.
> > push some features
> >                        mem->push(mapnik::feature_ptr(new
> > mapnik::Feature(-1)));
> >                        mem->push (f);
> >    }
> >        }
> >
> >  lyr.set_srs ("+proj=latlong +datum=WGS84");
> >  lyr.add_style ("enigator");
> >  lyr.set_datasource(mapnik::datasource_ptr(ds));
> >  map->addLayer (lyr);
> >
> >  keyID++;*/
> > }
> >
> > This is how I called it:
> >
> > m_mapnikSource.insertDataPoint (x, y, "enigator", "wptred",
> > "enigator");
> >
> > This is the reference in the XML file:
> >
> >  <Style name="enigator">
> >    <Rule>
> >      <MaxScaleDenominator>50000</MaxScaleDenominator>
> >      <Filter>[enigator]='wptred'</Filter>
> >      <PointSymbolizer file="/home/andreas/src/svn/enigator/trunk/
> > data/symbols/wptred.png" type="png" width="32" height="32" />
> >    </Rule>
> >  </Style>
> >
> > Search the history of this list with my name and around 10-12 month
> > ago or so.
> > Maybe this helps you...
> >
> > regards
> > Andreas
> > _______________________________________________
> > Mapnik-users mailing list
> > Mapnik-users at lists.berlios.de
> > https://lists.berlios.de/mailman/listinfo/mapnik-users
>
> _______________________________________________
> Mapnik-users mailing list
> Mapnik-users at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/mapnik-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.berlios.de/pipermail/mapnik-users/attachments/20080818/5fb9e07e/attachment.html>


More information about the Mapnik-users mailing list