QGIS Connector WIP

Hello @Community!

We’ve been working super hard this summer to bring some new connectors to life, and the first one out the line is QGIS!!

The QGIS connector is still in very early stages of development, which is why we are reaching to our beloved community to give us feedback on what you would like to see on Speckle<->QGIS.

We’re currently focusing on on the “data extraction” (sending from QGIS to Speckle), improving supported layer geometry types, stability and other basic things before we get to the good stuff!

Meanwhile, we have a couple of questions for the QGIS users out there:

  • How would you like to extract data from QGIS? Layer by layer, filtering options…
  • Would you want to be able to receive data in QGIS? If so, how do you see that working? Here’s were the team has the most questions, so we’d be eager to have an extended conversation about this if there are any ideas.

In case you wanted a sneak peak (we know you do…), here’s our first test sending 243 cities with all their data to Speckle.

And you can also view the extracted data on this stream:

We’d be happy to discuss QGIS on our next Community Standup🌟! Or drop us a private message and we can arrange a meet.

8 Likes

@AlanRynne, this is great! I was speaking with a colleauge who has GIS ⇋ Civil3D/Microstation workflows active on projects - I’ll reach back and get some details to share.

Out of curiosity, what projection did you use when you exported these points into Speckle?

3 Likes

That would be awesome @daviddekoning, we’re hoping to get as much feedback as possible to better understand what’s needed, and how to prioritise the tasks ahead. Knowing the data needs and workflows of real projects would be super useful!

Well, that’s a good question I sadly don’t have an answer for :sweat_smile: It’s quite raw still, I’m just grabbing the point geometries and copying over their coordinates to a Speckle Point. Not even units are properly set yet.

I’m hoping to get a better understanding of QGIS Geometry this sprint so I may be able to give you a better answer soon!! :crossed_fingers:t3:

1 Like

@AlanRynne - This is really exciting! I would be happy to help you make this happen. I am not a programmer but teach and use QGIS everyday and work in the AEC industry and am happy to help you get your head around the peculiarities of GIS (which are many).
I will post about this on the QGIS user group and see if anyone with more expertise is interested in advising.

To answer your particular questions:

I would imagine a process similar to either the qgis2web or the qgis2threejs plugins. You might also look at the DXF export dialog located in Project>Import/Export>Export Project to DXF

Yes! Although I can see that being difficult to manage. Once again I would look at the DXF importer under Project>Import/Export>Import Layers from DWG/DXF

There is another option that is sometimes used with plugins that have complicated syncing and interface needs where they create a database (geopackage (sqlite), postgis (postgresql), spatialite) that they use to sync with instead of QGIS directly. I think this is how the Mergin QGIS plugin works Mergin

4 Likes

Thanks @Baswein !
We’d definitle like to poke your brain on this, could either be at the standup tomorrow if you make it, otherwise we can schedule a 1-1 later on :hugs:

1 Like

Hello!
There are a lot of formats for informations to be processed in qgis (everything supported by ogr essentially and maybe more ), I see that Postgres is already a dependecy of the node app so i think that could be easier for you to integrate postgis and let it talk with qgis.
These are the specifications in use as i recall SimpleFeatureSQL Those are my two cents ^^

3 Likes

Hey everyone! Just wanted to let you know that we just made the speckle-qgis repo public:

Some of the strategies we’re currently using to get it to work could be seen as quite “hacky”, but we’ll come up for a better solution soon. Meanwhile, check out the instructions on the Readme file, and don’t hesitate to contact us if you have any questions. We’d be happy to arrange some 1 on 1 meetings with whoever is interested to solve issues/get feedback.

We hope you find it useful :smiley:

@JacopoVannacci, this sounds quite interesting! I’ll be looking into it further and we’ll be happy to arrange a meet to discuss this if necessary :slight_smile:

5 Likes

Hello Guys,
I am eager to try this new connector :grin: @AlanRynne
Trying the installation (my first time building a connector using the Speckle Python SDK), I am not sure I understood the part of the Plugin Builder in the instructions.
I imagine I have to run “poetry install”, but as I am getting an error I think it was not the right directory.
Could you correct me if I am wrong and tell me what am I missing ? :sweat_smile:
I tried to find instruction on how to build a connector in py and closest thing I found was on blender’s on this Topic.
Thanks in advance :rocket:

3 Likes

Hey @ahmedwael94 !

Are you referring to this part of the readme?

Screenshot 2021-08-17 at 09.14.13

You can skip that part completely. I appologize for the confusion! We were going to move it to the bottom and keep it just for reference purposes, but I guess we didn’t. As long as you follow our installation guide you should be fine :crossed_fingers:

1 Like

Yes that one exactly, no worries :grin: It just made me think I missed something
Thank you :pray:t3:

2 Likes

I just removed it to prevent others from falling into the same trap!! Thanks for letting us know :grin:

Also, ping us if you have any trouble, I’ll be happy to jump in a quick call.

2 Likes

Thanks @AlanRynne and @izzylys for meeting with me last week. I hope I was at least some help. I realized after we met that you had written the install instructions perfectly I just didn’t follow them very well. Sorry about that. I have been playing with the plugin and have had success going from QGIS to Blender using speckle!

However I found that I could not get Z values to transfer. Reading up on it and poking through the code I noticed that you were using qgspointxy. It seemed like if qgspoint was used instead it would allow for z values: Class: QgsPointXY point - What's the difference between QgsPoint, QgsPointXY and QgsGeometry.fromPointXY(QgsPointXY()) in PyQGIS? - Geographic Information Systems Stack Exchange

By changing to qgspoint and adding pt.z() I was able to get polylines with z values to show in both speckle and blender.

However that of course made geometry without z values not work (GIS data often does not have z values) and point data with or without z values no longer works.

I am going to add the code changes as a pull request even though it breaks things so you can see the changes I made in case they are any help.
I hope I am not leading you down the wrong path here. I have only taken one python GIS programing class.

3 Likes

Hi @Baswein!!

Thank you for your time! It was definitely helpful in many ways!

Yup this is correct, we did not have Z value extraction on the last release, I was actually trying out some things at the end of last week, and was planning on supporting Z values for all entities that allow them, so this is great!!

Thanks for the PR and the link , I’ll have a look today on how we can have both QgsPoint and QgsPointXY supported at the same time! :rocket: Don’t worry about leading us the “wrong” path… We’ve got to start somewhere! :smiley:

3 Likes

Hi Alan
This connector looks really promising!

-I have successfully sent 3D topographic curves from Qgis to Rhino and it works great! But not in Revit, they don’t seem to appear anywhere. So then I have tried to send them from Rhino to Revit but it doesn’t work either.
-I would also like to send fixed altimetry points to Revit, which can be used to georeference a BIM project. I have them in 3D in Qgis. Rhino only retrieves them in 2D on the same plane, while nothing appears on Revit.
-Finally I have 3D buildings in Qgis that are composed by surfaces. I can send them to Speckle and see them on the website, that is great! But then I can’t receive them on Rhino or Revit. They don’t seem to appear anywhere.

An info which could help : a particularity of Qgis is that each layer has an independent display parameter in 2D and 3D (and points can’t be displayed in 3D as points, but as spheres, cubes and some other 3D geometries).

2 Likes

Hi @RaphaelVouilloz!

Thanks for taking the time to get back to us! We’re still trying to figure out how people would like to use Speckle alongside QGIS, so this is great!

I must confess we haven’t yet done much QGIS->Revit Interop, and I’m sure there’s things that need tweaking for everything to go smoothly. :grin:

Regarding the curves that don’t work in Revit, could you share that stream with me so I can give it a go while debugging? It will make my life way easier :sweat_smile:

Could you also do the same with the stream containing the surfaces that won’t appear in Revit nor Rhino? I’d be happy to have a quick look (and push a quick fix if possible)

Again, thanks for the is awesome feedback!

1 Like

Thank you Alan for your quick answer!
Here is the stream : Speckle

-I have renamed the commit for the curves as Topographic curves

-And I have renamed the commit for the surfaces as Roofs
Since I work with GIS data from the state of Geneva (SITG | Le territoire genevois à la carte), which offers the buildings in three separate layers : base, façades and roofs. By the way, it could be nice to be able to export such a group of Qgis layers in a single commit :smiley:

Best

1 Like

Thanks for the streams! I’ll have a look this afternoon to see what’s going on :slight_smile:

This is on the works! We didn’t want to spend to much time on the UI before having WIP version… but it’s a “must have”.

1 Like

Great, thank you Alan!

1 Like