Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am trying to work out how can I add a relative path hyperlink to a shapefile in QGIS. I have found several great tips on various forums but only one has so far potential to be implemented. The overall goal is for the end user to be able to access a hyperlinked pdf/png/jpg etc without me having to set up any software dependencies under layer properties Actions tab in QGIS. I assume that the end user will have the software required to open a document but I would like the end user's computer to choose a default program to open the files. One of the possibilities would be to use a 'Python' action which I located on one of the forums which after several modifications did not work for me: http://lists.osgeo.org/pipermail/qgis-user/2011-May/012117.html.

Here is the screenshot of my layer's action properties: enter image description here

In the attribute table, the column with hyperlink is called 'PDF and the relative hyperlink is: /doc/document.pdf

My folder structure is:

 - /HyperlinksTest
 -- /data
 --- Renewable_Energy_Zones.shp
 -- /doc
 --- document.pdf
 HyperlinksTesting.qgis

When I identify the feature, I get the following Python error:

enter image description here

Am I using wrong variables in the Python code? Is there any other way of using relative paths in hyperlinking data to external documents? I noticed there is eVis extension but as far as I see it relies on specyfying software to open a document with, which I'd like to avoid.

Many thanks, Magda

share|improve this question
1  
Why you dont use that generic action to open pdf ( cmd /c file.pdf ) actually that "cmd /c filename" uses system default to open any file. about taht python code, you have Path+doc wrong, Path + "/doc/document.pdf" should work. –  simplexio Jan 9 '13 at 13:38
    
Thanks for your suggestions. I have previously tried a generic action (cmd /c [% "Field Name" %]) which used absolute path to the pdf document and it work fine, however it does not worknot work for me with relative paths. As you suggested, I tried o use cmd /c myfilename.pdf as a Generic Action but the pdf doesn't open....... I didn't mention I actually have more than 1 pdf document associated with the shapefile (at least 2 polygons) so not sure how would that work with the cmd /c myfilename.pdf action? –  Magda Jan 9 '13 at 15:08
    
With your Python suggestion, I managed to open my pdf document when included "/doc/document.pdf" at the end, however have you got a suggestion for how to perform the same action when having eg 10 attributes each linked to a different pdf in the same folder? Many thanks, Magda –  Magda Jan 9 '13 at 15:15
add comment

1 Answer 1

up vote 2 down vote accepted

Something like this should work:

from os import startfile
from os.path import abspath, dirname, join
proj = QgsProject.instance()
urfile = str(proj.fileName())
path = join(abspath(dirname(urfile)), "HyperlinksTest", "[% PDF %]")
startfile(path)

You can just paste this in as in you don't need to have it all one one line.

share|improve this answer
    
Hi Nathan, thanks for your code - it works with a little addition: in the table of contents I needed to insert '..' just before the relative path so eg. '../doc/document.pdf'. Anyway, all is working now, thanks very much! –  Magda Jan 10 '13 at 9:38
    
@Magda don't forget to tick the accept button so we can close the question off. –  Nathan W Jan 11 '13 at 4:18
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.