Suite

Comment calculer l'égalité des polygones dans PostGIS indépendamment de leur orientation ?


J'ai essayé quelques fonctions dans postgis. Portée du travail, obtenir l'égalité de deux formes, indépendamment de leur orientation dans l'espace. Je détecte les formes à partir d'autocad et bien sûr dans la durée de vie d'un projet, il peut arriver que deux formes dans deux tirages différents soient orientées de manière différente. j'ai donc essayé la toute première relation, obtenir la différence de formes en miroir (c'était mon tout premier problème):

select st_equals( ST_GeomFromEWKT('TRIANGLE ((0 0, 5 10, 30 0, 0 0))'), ST_GeomFromEWKT('TRIANGLE ((0 0, 5 -10, 30 0, 0 0))'))

Et je reçois Faux. Parfait. Mais je n'étais pas plus content, quand j'ai juste essayé de faire pivoter la géométrie :

select st_equals( ST_GeomFromEWKT('TRIANGLE ((0 0, 5 10, 30 0, 0 0))'), ST_GeomFromEWKT('TRIANGLE ((0 0, -10 5, 0 30, 0 0))'))

Ce sont le même triangle, il suffit de tourner de 90 °, j'obtiens aussi Faux. Postgis est-il capable de définir l'égalité des formes, même si elles tournent dans l'espace ?


Il y a quelques questions sur l'égalité dans ce site

Quel est l'équivalent PostGIS 2.x de l'opérateur ~= pre-PostGIS 1.5 ?

ST_Equals Problèmes Postgis

Les géométries de votre exemple ne sont pas "spatialement égales", ne partagent pas le même espace, donc st_equals renverra toujours false. Quelle sortie attendez-vous ?

Code utilisé pour générer l'image :

de matplotlib importer pyplot comme plt de shapely.geometry.polygon importer LinearRing, Polygon poly = Polygon ([(0, 0), (5, 10), (30, 0), (0, 0)]) x,y = poly.exterior.xy fig = plt.figure(1, figsize=(5,5), dpi=90) ax = fig.add_subplot(111) ax.plot(x, y) poly2 = Polygon ([(0, 0 ), (5, -10), (30, 0), (0, 0)]) x2,y2 = poly2.exterior.xy ax.plot(x2, y2) plt.show()


Voir la vidéo: Tämä on kypsyydenvalvontaviraston tiedote. Planin Mitä?-verkoston Kuka pelkää tasa-arvoa -sarja (Octobre 2021).