Our office is using QGIS to design zoning maps.

Our maps display the zones in colors (area shapefile with "Zone" text attributes) and the parcels with a thin outline and the number as label (area shapefile with "Parcel #" integer attribute).

enter image description here

What would be the best way to be able to output a list of all parcels with their area and their land use ? (note that some big land lots may be divided in different zones, so some parcel would appear twice, with let's say 35% of their area for residential zone and 65% for commercial zone)

I thought of "splitting" the zone polygons with the land lots polygons (think of a puzzle-shaped cookie cutter). But I can't seem to find such a function.

I thought of going the other way around, by performing a spatial join of the zone attributes into the parcel polygons. But this doesn't seem to work neither because it joins the first polygon it touches, and there seem to be no way to tell it to join the polygon which it overlaps the most.

And idea ?!

Thanks !!

(and sorry for english mistakes ;) )


Edit :

Ok, UNION seems to be the function I need ! Thanks Rayer !

However, I tried it on my data, but it doesn't work at all. I get no error, but the progress bar doesn't move at all and I have to force quit QGIS. I tried on a very small dataset, and then it works well.

My datasets consists of about 1000 zone polygons and 3000 land lots polygons. Is there a chance it would work with this amount of data ?

Thanks !

Still didn't find a way to do what I want... In fact, I didn't see there were some notifications in the console as soon as I run the UNION command :

Message: "Feature geometry not imported (OGR error: )" Level : 0 The messages appears many many times (quickly fills the console), about 10 every second (when looking at the timestamp). At the end I get a shapefile with no content.

Any idea about what's going wrong ?

(by the way, is editing the initial message the right way to continue a discussion in this forum ? or should I rather answer to my question ?)

  • Yes, unfortunately it is very slow under QGIS when using shapefiles. It may help if you build a spatial index on both shapefiles and try the union again. I use ArcMap and the Union tool is much faster than what I've noticed running QGIS (one of the few things that is faster). Perhaps it runs better under gvSIG or MapWindow. You could also try OpenJump. Good luck!
    – Rayner
    Oct 4 '12 at 15:56
  • 1
    I'd say accept the answer and start with a new question. Easier to start with a blank slate in this case.
    – Rayner
    Oct 8 '12 at 15:54

1) Union your parcel and landuse shapefiles together.

2) Make a new field in the unioned shapefile, call it "Combined" or something like that to indicate that it is a combination of your Parcel ID and your Land use code.

3) Calculate the "Combined" field equal to the Parcel ID + " " + Land use code (concatenate)

4) Dissolve on the "Combined" field and sum the SHP_Area field at the same time.

This should give you a shapefile that contains all unique values of parcel id and landuse code, with a corresponding area field.

This procedure works in ArcMap (I do it all the time). It should also work with QGIS. The union may take quite some time though. It's a bit slow in QGIS if you have a bunch of features.

Hope it helps.

  • Great, thanks for your answer ! I'll try it and let you know...
    – red
    Oct 4 '12 at 13:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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