60

I've got a layer in QGIS that is comprised of points. Its attribute table doesn't have (show) the corresponding x and y coordinates for each point. Is there a way for me to extract a list of coordinates for those points? (ideally into a CSV, but not required)

Also, for the exported list of coordinates (say, in a CSV file), how do I include the existing attribute table with it?

For your information, I am running QGIS on Mac OS X 10.6.7.

4
  • 1
    Perhaps this is a duplicate of this question: gis.stackexchange.com/questions/7199/…
    – djq
    Commented Apr 22, 2011 at 15:42
  • 1
    You might be interested in my answer in another thread gis.stackexchange.com/questions/1721/…
    – Willy
    Commented Mar 28, 2012 at 8:53
  • You could also use the MMQGIS plugin to export the geometry with the rest of the layer attributes to CSV file.
    – moutsinasg
    Commented Jun 27, 2017 at 9:59
  • Qgis has gdal, so you can use, from a command window, ogrinfo to do this, like 'ogrinfo -sql -dialect sqlite "select id,st_astext(geometry) from myshapefile" myshapefile.shp', where the single quotes should not be used but delimit the command. Other types of featureclass can be used, but need appropriate mods to the select, a connection string when using a db, etc. Nice is the ability to use sql on non-sql sources like shapefiles.
    – Jan
    Commented Sep 21, 2023 at 11:03

8 Answers 8

61

Depending on your version, you should be able to right-click on the layer you want to export, and select Save As... Choose Comma Separated Value from the dropdown list of the dialog box that appears. Then, in the Layers part of the OGR creation options, type GEOMETRY=AS_XY or GEOMETRY=AS_XYZ depending on the dimensionality of your source data.

QGIS Save vector layer as... dialog

6
  • That's great and it works! One more thing: Can I also export columns I already have in the original layer's into the CSV, along with the X, Y coordinated? Thanks.
    – hpy
    Commented Apr 22, 2011 at 16:34
  • 2
    Cool, glad it works! Make sure you have the "Skip attribute creation" checkbox unchecked. I'm not a fan of negative checkboxes like that, it always makes me think twice about what state I need it in. Commented Apr 22, 2011 at 20:28
  • Very useful tips!
    – Heinz
    Commented Jun 11, 2013 at 9:27
  • For anyone else on Windows 10 (QGIS 4.3.1) confused about where this gets saved, check your "C:\OSGeo4W64\bin" folder.
    – Wassadamo
    Commented Jan 11, 2019 at 21:03
  • Note that if your geometry has somehow become a multipart geometry, GEOMETRY=AS_XY will silently fail. You can can fix this by processing the layer with 'Multipart to singleparts'
    – daviewales
    Commented Aug 11, 2021 at 6:12
32

In the Field calculator in the Attribute Table you may use $x and $y to calculate your coordinates into a new attribute.

For that, open the Attribute Table, click on the Field calculator (top arrow) and enter $x or/and $y (middle arrow) in the expression pane. A preview of your newly created output is shown below (bottom arrow).

enter image description here

2
  • Is it possible to get the X Y in different coordinate system? I mean the XY of my points is in WGS 84 but I would like to list the XY values in different coordinate system in my attribute table.
    – Petr
    Commented Nov 27, 2019 at 13:46
  • this works, but note that you have a wrong column label in this example...$x is longitude and $y is latitude. Commented Aug 11, 2023 at 15:02
9

You may like this for the added detail which is gathered

For QGIS 1.7 on Win7 I open the attribute table for the layer, use the buttons to; invert selection to select all rows, copy to clipboard

and paste into Excel. The first column contains Well Known Text information which maybe more useful to you.

Edit

I now use the plugin mmqgis to export geometry to csv, it is more desired by CAD users at the other end...

3
  • BWill, should we merge your other account @Willy? That would help your reputation and simplify your interactions here.
    – whuber
    Commented Apr 13, 2012 at 14:42
  • Restored original edit. Commented Apr 16, 2012 at 14:33
  • When copying from the attribute table and pasting into Excel, sometimes a feature will occupy multiple rows, and this results in overwriting any data in the row below.
    – csk
    Commented Feb 26, 2018 at 19:30
4

Virtual layers enables you to do exactly that. It is an icon on the Layers Toolbar or you can go Layer->Add layer->Add/Edit Virtual Layer...` Then you will face a window like the one below:

enter image description here

In the Query you can select geometry properties like x and y cooridnates and attributes values from the Attribute Table, like the id in the example.

Once you have a table with the desired fields, you can use save asand select csv as a format.

enter image description here

The underlying engine uses SQLite and Spatialite to operate, so the documentation for the queries could be found here: https://www.gaia-gis.it/fossil/libspatialite/wiki?name=misc-docs

3

I asked a similar question a few weeks ago as Calculating latitude and longitude of points using QGIS. It's only true for QGIS 1.7 though (which I'm running on OSX and it seems quite stable).

3

For your question if you have postgressql and built-in postgis you can do this adding new column which is named coord_x and coord_y. And sql to update this column is:

UPDATE table_name
      SET coord_x = X(the_geom),coord_y = Y(the_geom);

That is it.

1
0

How to add coordinates to attribute table
I was looking for an answer to the first part of the question as I just wanted to see the coordinates in QGIS. The information above helped me work out a solution so I am posting for other QGIS beginners. I am using Windows10 and QGIS 3.4

  1. Open Layer Properties
  2. Select Source Fields (initially only id existed)
    enter image description here
  3. Select Field Calculator
  4. Select Create new field, enter name and choose decimal number as Output field type
  5. Choose Geometry on lower right list

enter image description here
6. Select $x for x coodinate and save
enter image description here
7. Repeat by selecting $y for y coordinate and your coordinates will appear in the attribute table.

0

Thirteen years after the previously accepted answer, things have become a bit simpler. Right-click on the layer you want to export, select "Export" then "Save Features As...". In the "Format" dropdown box at the top of the dialog, choose "Comma Separated Value [CSV]" and select a directory and filename. Lower down in this dialog box, there is an expandable section called "Layer Options". In that section, in the dropdown box labeled "GEOMETRY", select "AS_XY" (or one of the other options if it fits your use case better).

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