geoCML / tabor

Tabor is a database modeling language for GIS
GNU General Public License v2.0
1 stars 0 forks source link

Implement Feature Groups #21

Closed TristanDamron closed 2 months ago

TristanDamron commented 2 months ago

Is your feature request related to a problem? Please describe. Feature Groups will allow users to define a single feature as a collection of other features.

Describe the solution you'd like Feature groups should work like this:

tabor: 0.3.0

layers:
  - name: poles
     schema: public
     owner: geocml
     geometry: point
     fields:
       - name: fid
          type: int
          pk: true

     group: telephone_pole

  - name: insulators
     schema: public
     owner: geocml
     geometry: point
     fields:
       - name: fid
          type: int
          pk: true
     constraints:
       - name: on
          layer: pole     

     group: telephone_pole

  - name: lightning_arrestors
     schema: public
     owner: geocml
     geometry: point
     fields:
       - name: fid
          type: int
          pk: true
     constraints:
       - name: on
          layer: pole

     group: telephone_pole

This Tabor file, translated into plain English, says: "A telephone pole is a feature with a pole, insulators, and lightning arrestors. Insulators and lightning arrestors must be on a pole."

Under the hood, we can define a new table in PostGIS that contains foreign keys for each of these component features. Layers that share a group must have the same owner and schema. At some point after this is merged, I'll create a QGIS Desktop extension which allows us to edit these features... Unfortunately, this isn't natively supported in QGIS ):