Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Placing images in the coordinate system?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg103952] Re: Placing images in the coordinate system?
  • From: Dave <uber.daveb at gmail.com>
  • Date: Tue, 13 Oct 2009 23:20:25 -0400 (EDT)
  • References: <33341602.1254576310852.JavaMail.root@n11> <ha9qdu$7pb$1@smc.vnet.net>

On Oct 7, 4:04 am, pfalloon <pfall... at gmail.com> wrote:
> On Oct 4, 8:38 pm, "David Park" <djmp... at comcast.net> wrote:
>
>
>
> > Dave,
>
> > As usual, I would do try this with the Presentations package, but you could
> > probably do it without the package with a little more work and perhaps less
> > intuitively.
>
> > I would draw everything on a "piece of paper" and not use an Axis or Frame
> > as it is difficult to control the overall image dimensions with them.
>
> > Then you would need a mapping from your {long, lat} coordinates to {x,y} on
> > the piece of paper. You would have to have some map projection for the 2D
> > image of the moon surface. It might be difficult to find what the projection
> > was for the image you have.
>
> > Presentations has a routine DrawingTransform that will transform any
> > graphics you draw, say in the {long, lat} coordinates, to the {x,y}
> > coordinates. It also has free standing scales, XTickLine and YTickLine that
> > you can place on the piece of paper, say just outside the boundaries of the
> > moon map. That way you get your axes. You could also use DrawingTransformon
> > these so they would give {long,lat} coordinates on the {x,y} plot.
>
> > So assuming we can either Rasterize the moon image, or use Inset, to place
> > it at specific coordinates and scale on the piece of paper, the plotting
> > statement would look something like this:
>
> > Draw2D[
> >  {moonimage,
> >   {your graphics, XTickLine[...], YTickLine[...]}
> >     /. DrawingTransform[Function[{long,lat}, xcoordinate],
> >                         Function[{long,lat}, ycoordinate]],
> >   Text labels placed on the piece of paper},
> > Options...]
>
> > David Park
> > djmp... at comcast.nethttp://home.comcast.net/~djmpark/
>
> > From: Dave [mailto:uber.da... at gmail.com]
>
> > Hello,
>
> > Using Mathematica 7.0, how can I take an image and give it a position
> > and scale, so that it can be combined with other graphics?
>
> > Here's what I am trying to do: I would like to have an image map of
> > the moon as the background for my plot or contour plot. I want to be
> > able to plot points by their lat,lon positions and have them appear at
> > the correct points on the map.
>
> > I came up with a hack to do this by rasterizing the plot using Image[]
> > so that it is the same resolution as the moon image, and then
> > combining the twoimages.
> > (I found a similar technique here:http://mathgis.blogspot.com/2007/12/fun-with-image-overlay.html)
>
> > The problem is this does not work if the plot has Axes->True, because
> > some space is used for the axes, so the coordinate systems don't match
> > exactly anymore.
>
> > I really would like to have both Axes and the image together. Is there
> > a good way to do this?
>
> > Thanks,
> > Dave
>
> What about just importing the image as a Graphics object:
>
> img = Import["image.gif", "Graphics"];
>
> Show[img, Frame->True]
>
> The x,y values correspond to the pixels, so if you can work out the
> transform from pixel position to latitude/longitude (e.g.
> interactively hover over the graphic while holding down the "." key)
> you could overlay points etc as an Epilog. Similarly, if you want to
> display the actual lat/long ticks on the axes you can use the inverse
> of this map.
>
> This is still a little fiddly, but the important step of getting the
> image unambiguously positioned w.r.t. the axes is handled properly so
> that things won't go awry when you add axes, padding etc.
>
> Cheers,
> Peter.

Thanks for your replies everyone! In the end, I went with the
following solution suggested by Maxim:

Transform the Image into a "Raster", which allows specifying a
coordinate rectangle:

image = Import["D:/images/pictures/moon.jpg"];
raster = Raster[Reverse@ImageData[image], {{-180, -90}, {180, 90}}];

ContourPlot[..., Prolog->raster]


Cheers,
Dave


  • Prev by Date: Re: Re: confused about == vs === in this equality
  • Next by Date: Re: Re: The graph of (x + 2)^(1/5) + 4 not plotted
  • Previous by thread: Re: Placing images in the coordinate system?
  • Next by thread: Re: Re: Mouse-Over or Mouse-Click Values of Coordinates in