# Place image between nodes in tikz: How to achieve precise positioning [duplicate]

I am trying to include a background image in a tikz/pgf drawing. I need to be able to draw nodes directly on certain features of the image, it thus needs to be precisely adjusted.

This would be easiest if I could somehow fix it to two nodes defining the corners of the image, like so:

\documentclass{article}
\usepackage{pgf,tikz}
\begin{document}
\begin{tikzpicture}
\node at (0,0) {a};
\includegraphics{something.png}
\node at (2,2) {b};
\end{tikzpicture}
\end{document}


Of course this does not do what I want, i.e. scaling the image so that it its top-right corner is at (2,2) and the bottom-left corner at (0,0):

## marked as duplicate by percusse tikz-pgf StackExchange.ready(function() { if (StackExchange.options.isMobile) return; $('.dupe-hammer-message-hover:not(.hover-bound)').each(function() { var$hover = $(this).addClass('hover-bound'),$msg = $hover.siblings('.dupe-hammer-message');$hover.hover( function() { $hover.showInfoMessage('', { messageElement:$msg.clone().show(), transient: false, position: { my: 'bottom left', at: 'top center', offsetTop: -7 }, dismissable: false, relativeToBody: true }); }, function() { StackExchange.helpers.removeMessages(); } ); }); }); Feb 21 '18 at 8:18

The comment by @percusse led me to the right answer. It involves using the scope environment.

The following code is taken from @Caramdir's answer in Drawing on an image with TikZ:

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (image) at (0,0) {\includegraphics[width=0.9\textwidth]{some_image.jpg}};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\draw[red,ultra thick,rounded corners] (0.62,0.65) rectangle (0.78,0.75);
\end{scope}
\end{tikzpicture}
\end{document}


\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\node[inner sep=0pt] (img) at (0,0) {\includegraphics{example-image-a}};
\coordinate (a) at (img.south west);
\coordinate (b) at (img.north east);
\draw[blue,thick] (a)--(b);
\end{tikzpicture}
\end{document}


• That's a good start, but doesn't allow me "to draw nodes directly on certain features of the image". I want to be able to draw a node at (1.5,1) and be certain it appears in the image at that coordinate – sheß Feb 20 '18 at 17:10
• If you tell me, what (1.5,1) refers to, I'll be happy to adjust the code. Does that mean at (1.5 x width of the image, 1 x height of the image)? See also here. – user121799 Feb 20 '18 at 17:16
• My background image is a satellite image of which I know the corners' longitudes and latitude. I want to draw nodes on certain POIs based on their long/lat. – sheß Feb 20 '18 at 17:23
• But since you posted already an answer yourself, I guess my answer is obsolete, right? – user121799 Feb 20 '18 at 17:25
• @sheß Well, your question is already marked a duplicate :-( What you might want to add is a transformation that allows you to use the longitude and latitude coordinates directly. This can be done by modifying this (or also that) answer. – user121799 Feb 20 '18 at 17:36