Inspection of 200 Underground Chambers – Feasibility Question

Hello @PackElend , very interesting project!

I’d say, in my limited and by no means definitive experience, that you should be able to achieve most of the requirements with mostly “built-in” functionality of both QField and QGIS combined, but most likely not exactly as it is and would need to change the schema a little bit and maybe add a couple of plugins to help you out. Of course take the following only as suggestions and starting points, I hope the information is useful for implementing your solution.

2. Step 1 - QGIS (desktop preparation)

Maybe you can forfeit the PDF and directly add the floor plans on the QGIS/QField project? They can be included as separated layers, inside a folder (for example, named “floor plans”) that you can bring with you on your field works, and hide or show them individually or all at once from the virtual tour/QField/QGIS themselves.

Also, using as much as possible the native structures provided by QGIS should facilitate the use of the data on the whole ecosystem, in comparison with having a single monolithic source of data that you have to then later parse with python or some other program. For example, these layers will automatically show up as selectable options, typically on a left-side panel, even when directly exporting the project as a webmap to show online.

3.2 Dynamic tabs per equipment category

By tab, I assume you mean the “form” that allows you to input data onto the project. If that’s the case, on QField the form dynamically changes depending on the attributes of the layer, mosty by what on QGIS is defined on the Attributes Form tab of the Layer Properties. So what I would try to do first, is try to separate the information of the project on different layers, each one (generally speaking) containing all the info on each of these “tabs” of yours. For example, having a separate Point Vector layer for the “House service connection boxes”, another for the “Pumps”, another for the “Ventilators”, a LineString or MultiLine Vector layer for the traffic routes, etc.

You should be able to even take attributes from those layers and display them into another (or use their data to modify the values on another layer), since you can effectively think of the layers as tables in a relational database; the trick with the image table for the multiple photos per point you’ve already seen is just an example of what I mean. For example, I’d imagine you can have a Polygon layer for representing the inspection chambers, and this can be a good candidate for aggregating all (or most) of the info of all the individual hardware and other components associated with this chamber by “dynamically” populating attributes on this layer with the values of the others (that is, using “virtual fields”, as QGIS calls them, driven by expressions).

A) arbitrary number of photos

Indeed I think you are on the right track with setting up a separate table to store the paths to the images. I’ve used this video tutorial (which shows a pretty similar idea) a couple of times, always with great success and the last time was on some number of the current major version of QField (4.x.x something). Although the video is a bit old by now, most likely it will not look the same on your phone now, but it would give you an idea of how it would work.

B) Speech-to-text

I haven’t tried this myself, but shouldn’t the text-to-speech from your phone’s keyboard work on the text field? I don’t think this should even be a QField feature, since you already have the flexibility of changing keyboards, and some of them even let you choose from different local models of speech recognition (FUTO keyboard for example).

Alternatively, if you setup that attribute as an Attachment, you can even directly record the audio from QField. Maybe you can have a second text attribute on your layer to later write (automatically or not) the transcription.

c) Large but repetitive form

There already are some plugins from the community to help speed up repetitive work, like QuickE or Quick Capture, maybe that’s useful for your case?

In addition to that, if you aggregate the data from different layers into a single “master” layer (like the inspection chamber polygons example), maybe you can access and modify the attributes in a single edit, reducing the number of clicks and repetitive steps.

d) 360° captures

I don’t know of any way to directly get images from an insta360 into qfield. In the past, I’ve just manually added them on QGIS, since it was just easier and faster to use the camera completely disconnected from the phone. Adding some distinguishing feature on the image itself, such as a QR code, might be useful if there are a lot of images. Sometimes I’ve just generated a QR code on my phone and pointed it to the camera, but QField has the capability of searching things internally by reading a QR code, so it might be handy to have some permanent tag/s on the site anyway (if you plan to do regular inspections).

You could also operate the camera from the phone app and later open QField and use an Attachment widget to associate that local file to your project; but at least for me, using the insta360 app is ridiculously slow for field work. I think this should copy the file inside of your project structure, but I’m not 100% sure; but if not, you can always resort to adding them on the desktop.

Other questions

I’m not sure what you mean by QWC?

Some ideas that come to mind are the qgis2webplugin for QGIS, which is a really fast and easy way of creating interactive webmaps that try to replicate as much as possible how your QGIS project looks using standard HTML/CSS/JS (+ some very popular JS libraries). It generates all the files to upload to an static server, ready to display on the web without server side processing (as long as you can just serve the static files, it should work). It allows you to create interactive tooltips that display extended information, hide/show layers, take measurements, etc.

If you need additional functionality, and since you mention python, you might be able to create some automation tools that take this output and modify it to, for example, add the capability to view the 360° panoramas like a google streetview (for example, using the Marzipano JS library).

If you just need to have the information available online so other people can view and use it, I’d recommend something more akin to a “geoservice”, such as WFS or WMS layers made available via a Geoserver. That is some really complex setup, but is a pretty standard practice for infrastructure information managing (which your project pretty much sounds like).