I am using QGIS 2.14 and am working with two layers: a layer of US Census Blocks and a layer of information on internet providers within each block. The internet provider layer is a CSV flat file, and the census block layer is a shapefile from the US Census TIGER site. I'd like to be able to create a unified layer of internet providers with information on each so I can, say, click "Verizon" and see everywhere Verizon offers service, or select just those blocks where the minimum speeds are in excess of X.

I understand I can't do a simple Join because it only joins one row of the CSV to each census block. I have set up a Relation in the Project Properties, which reflects the data structure I want, but I can't figure out how to make it just display in the map as a new layer.

I also tried creating a new layer by joining the CSV to the census block layer, but QGIS complained it wasn't a valid shapefile.

  • What does the data look like in the 'providers' table - perhaps some quick screen shots of the data structure would help... Commented Jul 29, 2016 at 15:28

1 Answer 1


I believe you can do this via the Singleparts to Multipart operation under Vector > Geometry Tools > Singleparts to Multipart.

The steps you'd need to take to do so is a simple Join that binds each internet provider to it's census block as a new field, and then use the Singleparts to Multipart algorithm to join all census blocks into a single feature. You can specify the new field representing the service provider field as the Unique ID Field, and the algorithm should link all polygons with that provider and output it as a new layer. When you select any of the polygons for that provider, it will highlight all other polygons with the same provider, as well.

That said, I am not entirely clear on the structure of your data -- specifically whether each census block has a single service provider, or if there are multiple service providers for each census block.

If there's a single service provider, you could get away with doing this series of steps just once and produce a single layer with all of the providers, otherwise you may need to repeat the process and create a new field for each provider (i.e., a column for Provider 1, column for Provider 2, etc.) with some sort of Boolean indication (yes/no) for each census block. You could then produce a series of layers, one for each provider, that gives a visual display of their coverage.

Hope this helps.

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