Je suis plutôt nouveau dans le monde des SIG et surtout PostGIS, alors veuillez m'excuser si la réponse semble évidente ...
Je voudrais faire une analyse sur un certain nombre de bâtiments. Une chose qui m'intéresse est leurs surfaces de façade ainsi que l'orientation respective. Comme illustré dans l'image ci-dessous, je voudrais avoir la longueur et l'orientation (normale) de toutes les arêtes dans une série de polygones. Dans l'exemple, j'ai mis en évidence une seule surface.
Un tableau de résultats pourrait ressembler à ceci:
building_id | edge_id | orientation | edge_length
-------------------------------------------------
1 | 1 | 315 | 10.0
1 | 2 | 45 | 7.0
1 | ... | ... | ...
Cependant, je ne sais pas s'il s'agit d'un moyen intelligent de stocker le résultat pour un traitement ultérieur (par exemple, calculer la distance entre le bord et le bâtiment suivant, etc.). Ma question est donc double:
- Existe-t-il une fonction PostGIS efficace qui peut analyser les bords d'un polygone? Dans le cas où il n'y a pas de fonction PostGIS native, je serais également intéressé par une approche basée sur Python.
- Quelle serait une façon intelligente de stocker le résultat dans une table PostGIS, car les polygones peuvent avoir différents nombres d'arêtes?
Réponses:
Hier je n'ai pas eu le temps de la créer en détails ... Voir ma solution en 4 étapes:
La dernière requête vous donne les identifiants de construction avec une jointure spatiale à l'aide de st_touches. J'espère que cela aide. Mise à jour - Dans qgis, la solution ressemble à ceci:
la source
UPDATE
devrait faire l'affaire. Merci encore pour cette excellente solution. J'attendrai encore quelques jours si d'autres réponses apparaissent, avant d'accepter.ST_ForceRHR
? Cette réponse semble en fait correcte.ST_ForceRHR
solution, mais sans succès. Serait reconnaissant pour des indices ... J'ai essayéST_Dump(ST_Boundary(ST_ForceRHR(the_geom)))