Pages: 1
- Sujet précédent - [PostGIS] - Ajustement de polygones - remplissage des vides - Sujet suivant
#1 Wed 17 February 2021 15:05
- Geo
- Participant occasionnel
- Lieu: Liège (Belgique)
- Date d'inscription: 18 Sep 2007
- Messages: 27
[PostGIS] - Ajustement de polygones - remplissage des vides
Voici un cas typique. Je dois comparer deux tables polygonales (multi-polygon) stockées sous PostGIS. Une table "commune" (Niveau admin 2, 2811 entrées) et une table "province" (Niveau admin 1, 785 entrées). Un attribut de la table "commune" renseigne en outre le code de la province d'appartenance.
Chaque province contient plusieurs communes. Lorsqu'une commune touche une province, les limites de la communes doivent coïncider totalement aux limites de la province. Suite à des erreurs de digitalisation, ce n'est pas le cas et on constate des chevauchements / trous (voir PJ image 1 - commune_vs_prov - avec la commune "target" en vert et les limites des communes en pointillé rouge)
L'objectif est d'ajuster la limite des communes touchant une province pour que cette limite coïncide avec celle de la province d'appartenance. L’intégralité des traitements est à réaliser via PostGIS (avec contrôle visuel sur QGIS).
J'ai déjà essayé certaines traitements
1 - Snapping
J'ai exécuté la commande ST_SNAP via
Code:
SELECT a.cod_mun, st_snap(a.geom, b.geom, tolerance) AS st_snap FROM municipality a, province b WHERE mun_cod_prov = cod_prov
La résultat n'est cependant pas acceptable (cf. PJ Image 2 - 2_st_snap)
2 - Buffer et découpage
L'autre option investiguée est la suivante:
Développement d'une fonction PL/pgSQL qui réalise les traitements suivants en boucle
- Sélection d'une commune target
- Création d'une vue de la table des communes sans la commune target: commune_sans_target (ne nécessite pas de traitements spatiaux)
- réaliser un buffer assez large sur la commune target commune et découpage de ce polygone à la frontière provinciale: comm_target_mask
Code:
SELECT a.cod_mun, st_intersection(st_buffer(a.geom, 500), b.geom) AS st_intersection FROM commune a, province b WHERE a.cod_mun = 'COD_COMM_TARGET' AND a.mun_cod_prov = b.cod_prov
- Ajuster la limite du polygone comm_target_mask pour quelle coïncide avec les limites des communes voisines. Cela revient à faire une union entre comm_target_mask et commune_sans_target puis à éliminer la partie du masque qui se superpose aux communes voisines
Je suis sur le dernier point mais ai des difficultés à "remplir" correctement le trou avec mon masque pour que les limites collent entre elles.
Je suis preneur d'un retour/idée si quelqu'un a réalisé un traitement similaire dans PostGIS.
Ma config : PostgreSQL 10.7 Postgis 2.4
Merci
Hors ligne
#2 Wed 17 February 2021 16:49
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1549
Re: [PostGIS] - Ajustement de polygones - remplissage des vides
Bonjour,
Vous pouvez aussi travailler avec les sommets composants les contours des pg (communes et provinces).
st_dumpoints vous permet d'extraire les points composants les pg. (index spatial sur ces points)
Pour chaque point d'une commune, vous chercher le point de province le plus proche (avec l'operateur <-> knn, ultra rapide.
A la précision près, dépendant de votre dataset (et tout le pb est là, il faudra surement faire varier cette précision en fonction de la topologie locale, et ce n'est pas facile), vous garder les points des provinces à la place des points des communes, puis vous reconstruisez les pg avec ces points: les communes adopteront alors le tracé des provinces là où les deux contours sont proches.
Vous auriez un dataset d'exemple à fournir ?
Nicolas
Hors ligne
#3 Wed 17 February 2021 23:29
- Geo
- Participant occasionnel
- Lieu: Liège (Belgique)
- Date d'inscription: 18 Sep 2007
- Messages: 27
Re: [PostGIS] - Ajustement de polygones - remplissage des vides
Bonsoir,
Je vais tester l'option décrite par Nicolas, à savoir ajuster sur base des paires de points proches. Je ferai un retour des résultats.
A toute fin utile, j'ai extrait un subset de 4 provinces et 13 communes présentant le cas que je décris (divergences de limites avec gap/overlap - la couche des provinces est la référence). Il n'y a pas de relation de clé étrangère entre les deux tables donc elles peuvent être chargées dans l'ordre souhaité. Les séquences SQL entrainent la création des tables dans le schéma public.
Merci pour le retour
Geoffroy
Hors ligne
#4 Thu 18 February 2021 10:02
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1549
Re: [PostGIS] - Ajustement de polygones - remplissage des vides
Bonjour,
Merci pour ce dataset.
Nicolas
Hors ligne
#5 Thu 18 February 2021 10:57
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1549
Re: [PostGIS] - Ajustement de polygones - remplissage des vides
Elle est un peu pourrie ma méthode je pense
Ce qui marcherait bien c'est de travailler avec les arcs des communes et provinces, et reconstruire le set des arcs provinces pour l'exterieur et arc communes internes aux provinces, puis de reconstruire les pg avec st_polygonize.
... a suivre
Nicolas
Hors ligne
#6 Thu 18 February 2021 12:09
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1549
Re: [PostGIS] - Ajustement de polygones - remplissage des vides
Alors voila une méthode qui marche mieux:
Le principe est de travailler avec les arcs des deux couches (arc au sens topologique: linestrings connectées entre elles aux extrémités) et de reconstruire les polygones à partir de ces arcs:
• on veut tous les arcs des provinces (car contours de référence)
• et les arcs des communes internes aux provinces (ne suivant pas le contour des provinces)
Pour obtenir ces arcs, st_linemerge, st_union et st_boundary sont utilisées (les boundaries d'un pg sont des linestrings):
Code:
-- prepa tables ajout clé primaire (id plus facile alter table com add column id serial primary key ; alter table province add column id serial primary key ; select * from spatial_ref_sys where srid = 25830; -- ajout clés primaires alter table dts_commune add column id serial primary key ; alter table dts_province add column id serial primary key ; -- on tente de travailler avec les segments (arcs) connectés des commune: -- union et dump. select st_numgeometries(geom) from dts_province; select st_numgeometries(geom) from dts_commune; -- ok pg simple, on utilise st_geometryN(1) pour extraire le pg. drop table dts_com_arcs; create table dts_com_arcs as select (st_dump(st_lineMerge(st_union(st_boundary(st_geometryN(geom, 1)))))).geom from dts_commune; alter table dts_com_arcs add column id serial primary key ; -- et des provinces drop table dts_prov_arcs; create table dts_prov_arcs as select (st_dump(st_lineMerge(st_union(st_boundary(st_geometryN(geom, 1)))))).geom from dts_province; alter table dts_prov_arcs add column id serial primary key ;
Ensuite on trouve une méthode pour garder les arcs des communes internes aux provinces: par ex avec une distance moyenne des points de l'arc aux contours de la province: les arcs internes auront une grande distance moyenne par rapport aux arcs suivant le contour des provinces:
Code:
-- on veut faire la reconstruction des arcs des provinces avec les arcs internes des communes -- il faut identifier les arcs internes des communes: -- plusieurs méthodes, par ex distance moyenne des points de l'arc au arcs des communes create table dts_com_arcs_pt as select id as idarc, (st_dumppoints(geom)).geom from dts_com_arcs; -- pk alter table dts_com_arcs_pt add column id serial primary key ; -- spatial index: create index on dts_com_arcs_pt using gist(geom); -- et sur les arcs province create index on dts_prov_arcs using gist(geom); vacuum analyse dts_prov_arcs; vacuum analyse dts_com_arcs_pt; -- methode empirique ici: on determine quelle dist moyenne permet de choisir les arcs internes: -- disons 62m :) drop table dts_com_internal_arc; create table dts_com_internal_arc as with tmp as ( select p.idarc, avg(t.dist) as avg_dist from dts_com_arcs_pt p cross join lateral ( select a.geom <-> p.geom as dist from dts_prov_arcs a order by a.geom <-> p.geom limit 1 ) as t group by p.idarc ) select tmp.*, a.geom from tmp join dts_com_arcs a on tmp.idarc = a.id where avg_dist > 62;
On corrige un peu la topologie en forcant la connexion des arcs internes des communes avec les arcs des provinces, pour etre sur que notre réseau soit fermé: les fn de réf linéaires marchent bien pour ca: on ajoute alors des points aux arcs internes, ce qui les connecte aux arcs des provinces.
Il faut penser à cette étape à garder tous les arcs internes des communes: ceux prolongés et ceux qui ne le sont pas
Une fois qu'on a les arcs internes prolongés et les arcs des provinces, on passe par st_polygonize pour reconstruire les polygones.
A cette étape, les erreurs topo des communes peuvent engendrer des petits pg supplémentaires:
pas grave, on fait une jointure spatiale entre les communes initiales et les centroid des communes corrigées, on retrouve alors nos communes: un st_union finale group by commune permet de nettoyer les petits polygones en erreurs:
Code:
-- on corrige les erreurs topo éventuelles des arcs en prolongeant les arcs internes sur les contours des provinces, -- sauf si l'arc interne est connecté à un autre arc interne: -- on cherche l'arc province le plus proche de chaque start/end de nos arcs internes -- on reprend notre distance de 100m: si dist <, on snape ce point sur l'arc: -- ce snap est fait avec les fn de référencement linéaire, qui sont rapides et précises -- idx code le startpoint/endpoint: 0 pour start, -1 pour end: ca permettra de faire -- un addpoint avec cet idx. -- une fois les arcs internes prolongés, on peut construire le réseau de lignes -- arcs internes + arcs province et reconstruire les pg communes avec les arcs province -- on peut faire en 1 seule requete, ou détailler par étape, suivant le dataset -- attention a l'etape tmp1: on filtre certains arcs => il faut etre sur qu'on travaille avec tous les arcs -- internes avant la reconstruction des pg: drop table dts_newcom; create table dts_newcom as with tmp as ( select idarc, 0 as idx, st_startpoint(geom) as geom from dts_com_internal_arc UNION ALL select idarc, -1, st_endpoint(geom) as geom from dts_com_internal_arc ), tmp1 as ( select t.idarc, t.idx, t.geom, st_lineinterpolatepoint(b.geom, st_linelocatepoint(b.geom, t.geom)) as newpt from tmp t cross join lateral ( select a.id as idarcprov, t.geom <-> a.geom as dist, geom from dts_prov_arcs a order by t.geom <-> a.geom limit 1 ) as b where dist < 100 ), tmp2 as ( select st_addPoint(a.geom, t.newpt, t.idx) as geom from tmp1 t join dts_com_arcs a on t.idarc = a.id UNION ALL select geom from dts_prov_arcs -- on ajoute les éventuels arcs internes filtrés à l'étape précédente: UNION ALL select geom from dts_com_internal_arc a where not exists ( select null from tmp1 where a.idarc = tmp1.idarc ) ), tmp3 as ( select st_union(geom) as geom from tmp2 ) select (st_dump(st_polygonize(geom))).geom from tmp3; -- plus de pg que de communes: -- les erreurs topo entrainent la création de petits pg: facile a merger avec leur voisin -- pour les faire disparaitre: par ex en refaisant le lien spatial avec les communes et en faisant l'union des pg par commune: -- on peut faire un lien spatial (st_pointOnSurface pour retrouver les communes initiales: -- table finale des communes: select cod_mun, mun_cod_prov, nombre_com, c.id, st_union(n.geom) as geom from dts_commune c join dts_newcom n on st_contains(c.geom, st_pointOnSurface(n.geom)) group by 1, 2, 3, 4;
Et en image avec la piece jointe.
Nico
Hors ligne
#7 Thu 18 February 2021 23:32
- Geo
- Participant occasionnel
- Lieu: Liège (Belgique)
- Date d'inscription: 18 Sep 2007
- Messages: 27
Re: [PostGIS] - Ajustement de polygones - remplissage des vides
Bonsoir Nico,
Elle est un peu pourrie ma méthode je pense
J'ai trouvé l'idée séduisante et avait débuté une implémentation sur cette base. Une première chose que j'ai faite est de ne retenir que les vertex "candidats" de la limite "commune", c'est-à-dire les vertex qui s'intersectent avec une commune voisine qui elle-même appartient à une province différente (en focalisant l'analyse sur la cod_mun='189110001', on dégage 70 points candidats qui doivent s'ajuster)
Ensuite, je n'ai pas eu de difficultés à trouver les vertex correspondants les plus proches sur la limite provinciale.
Évidemment, un des manquements de la méthode est qu'on ne tient pas compte du comportement même de la limite provinciale entre deux points "les plus proches" (cf. PJ). Des vertex sont donc manquants pour voir la limite de commune s'adapter à la limite de province.
En étudiant le cas, je me suis dit qu'il y avait moyen de récupérer tous les vertex du tronçon de limite provinciale situés entre le premier et le dernier point "les plus proche sur la limite provinciale", ces deux points étant connus par le traitement KNN. Cet ensemble de vertex viendrait remplacer le tronçon de limite communale situé entre le premier et dernier point "les plus proches sur la limite communale". Ensuite on reconstruit le polygone.
J'en étais là quand j'ai vu ton second post, que je vais lire attentivement. Je n'ai donc pas implémenté la recherche de tous les vertex provinciaux, mais en tout cas cela pourrait théoriquement tenir la route.
Je place ici l'implémentation SQL permettant de retrouver le vertex provincial le plus proche pour chacun des 70 vertex communaux candidats. Le code n'est pas optimisé du tout et des trucs ne servent à rien mais je le mets tel qu'il est en construction (pour si ça intéresse qq)
Code:
WITH com_target as ( select cod_mun, mun_cod_prov, nombre_com, geom from dts_commune where cod_mun='189110001' ), com_target_pt as ( select cod_mun, mun_cod_prov, nombre_com, (ST_DumpPoints(geom)).geom as geom_com_pt from com_target ), com_neigh as ( select cod_mun, mun_cod_prov, nombre_com, geom as geom_com_neigh from dts_commune where st_intersects(geom, (select geom from com_target)) and mun_cod_prov<> (select mun_cod_prov from com_target) ), -- Vertex candidats de la commune = vertex qui s'interesectent avec une commune voisine qui appartiene à une province différente com_target_pt_cand as ( SELECT row_number() OVER (ORDER BY com_target_pt.geom_com_pt) AS gid, com_target_pt.geom_com_pt FROM com_target_pt, com_neigh WHERE st_intersects(com_target_pt.geom_com_pt, com_neigh.geom_com_neigh) ), prov_target as ( select * from dts_province where cod_prov = '18911' ), prov_target_pt as ( select cod_prov, nom_prov, (ST_DumpPoints(geom)).geom as geom_prov_pt from dts_province where cod_prov = '18911' ), prov_neigh as ( select * from dts_province where st_intersects(geom, (select geom from dts_province where cod_prov='18911')) and cod_prov <> '18911' ) select gid, geom_com_pt, geom_prov_pt, dist from com_target_pt_cand CROSS JOIN LATERAL (SELECT cod_prov, geom_prov_pt, ST_Distance(geom_prov_pt, geom_com_pt) as dist FROM prov_target_pt ORDER BY geom_com_pt <-> geom_prov_pt LIMIT 1 ) AS closest_vert_prov
Je garde l'idée de la sélection des vertex au frais et je vais étudier le travail réalisé à partir des arcs des deux couches. En tout cas merci beaucoup pour ce retour très détaillé, vraiment super. Je passe à l'action et ferai un retour
Geoffroy
Hors ligne
#8 Fri 19 February 2021 10:56
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1549
Re: [PostGIS] - Ajustement de polygones - remplissage des vides
Bonjour,
le problème en traitant les vertex vient de la gestion des cas particuliers: ca devient vite super lourd.
En prenant les arcs, on s'affranchit de beaucoup de ces problèmes. Ca permet de travailler dans un modele plus proche d'une vraie topologie, avec des arcs connectés entre eux pour définir des faces.
Après avoir pas mal tatonné en travaillant avec les vertex, sans jamais obtenir un super résultat, je trouve la méthode avec les arcs plus directe et plus simple.
Nicolas
Hors ligne
#9 Sat 20 February 2021 01:58
- Geo
- Participant occasionnel
- Lieu: Liège (Belgique)
- Date d'inscription: 18 Sep 2007
- Messages: 27
Re: [PostGIS] - Ajustement de polygones - remplissage des vides
Bonsoir,
J'ai reproduit la méthode d'arcs décrites par Nicolas. Très clair et avec la garantie de respecter la géométrie de la couche référence.
L'enjeu est de bien sélectionner les arcs internes. Pour généraliser la méthodologie à l'ensemble du dataset, je partirai sur un critère de sélection du style "arc communal interne = arc touchant le contour communal en maximum deux points. En effet je crains que la méthode basée sur la distance moyenne d'un arc communal à un arc provincial ne sélectionne pas tous les tronçon du dataset global. Je vais tester cela.
Par contre, j'ai été attiré par un autre élément. Lors de la reconstruction des polygones à partir de la multiligne (via ST_Polygonize), je m'aperçois qu'une limite n'est pas prise en compte et donc qu'un polygone plus important est créé, au lieu d'être séparé en deux (cf. PJ). Pourtant, ladite limite est bien dans la polyligne retournée en "tmp3" et topologiquement tout semble correct.
Dans le screenshot proposé par Nicolas, on retrouve bien les deux polygones.
J'ai examiné ce tronçon pour comprendre ce qu'il se passait mais sans vraiment trouver une explication, si ce n'est que la séquence des vertex ferait en sorte que la polyligne n'est pas considérée comme fermée.
@Nicolas, si vous avez l'occasion, pouvez-vous confirmer que chez vous, le polygone que j'identifie en rouge dans le screenshot est bien coupé en deux? Cela me permettrait de voir si il s'agit d'une limitation
Merci
Geoffroy
Hors ligne
#10 Sat 20 February 2021 11:51
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1549
Re: [PostGIS] - Ajustement de polygones - remplissage des vides
Bonjour,
Oui j'ai bien le polygone découpé.
J'ai du jouer avec la distance moyenne pour garder les arcs internes: 62m, puis 100m pour choisir les arcs province sur lesquels snapper les arcs internes.
Si l'arc est là, mais que le polygone ne se crée pas, c'est effectivement que l'arc ne doit pas bien etre connecté aux autres arcs: vous pouvez tester la distance des start/end points de cet arc avec les autres arcs.
J'ai fait mes tests sur PG 13, postgis 3.1, avec la derniere version de geos. Ca peut expliquer les différences, car cette nouvelle version est plus robuste topologiquement (ca vaut le coup d'essayer avec cette version chez vous).
Pour raffiner le process, vous pouvez tester si les arcs internes touchent les autres arcs apres snapping (st_touches). si ce n'est pas le cas, vous pouvez prolonger artificiellement ces arcs pour forcer l'intersection avec les autres arcs: st_polygonize pourra alors reconstruire les pg.
Nicolas
Hors ligne
#11 Mon 22 February 2021 10:28
- Geo
- Participant occasionnel
- Lieu: Liège (Belgique)
- Date d'inscription: 18 Sep 2007
- Messages: 27
Re: [PostGIS] - Ajustement de polygones - remplissage des vides
J'avais justement un PG13 / PostGIS 3.1.1 – Geos 3.8.1 sous la main pour des tests.
Après y avoir passé le WE, on observe clairement des différences de comportement entre les deux versions de PostGIS. Sur la v2.4, le résultat du st_polygonize ne renvoie pas un polygone et sur le v3.1, ce sont deux polygones qui sont absents (le même que sur la v2.4 + un petit autre situé juste à sa droite).
Je partage en PJ le dataset des arcs après snapping sur la v Postgis 3.1. Les polygones "à problème" reposent sur les arcs internes idarc = 18 et idarc=29
Si on détermine la distance de ces arcs à l'arc provincial le plus proche à partir des nœuds début-fin, le résultat indique 0m pour les deux arcs
Code:
with tmp as ( select idarc, st_startpoint(geom) as startpt_geom, st_endpoint(geom) as endpt_geom from dts_arc_snap ) select p.idarc, t.dist_start_prov,dist_end_prov from tmp p cross join lateral ( select a.geom <-> p.startpt_geom as dist_start_prov from dts_prov_arcs a order by a.geom <-> p.startpt_geom limit 1)t cross join lateral ( select a.geom <-> p.endpt_geom as dist_end_prov from dts_prov_arcs a order by a.geom <-> p.endpt_geom limit 1)s where idarc in (18,29)
Par contre l'exécution de ST_Touches renvoie false sauf pour le point d'arrivée de l'arc 18. Mais c'est également valable pour d'autres arcs qui se ferment correctement
Code:
select *, st_touches(a.geom, b.geom) from dts_arc_snap a, dts_prov_arcs b where idarc in(18,29)
Et donc les deux polygones sont absents
Code:
with tmp as ( select st_union(geom) as geom from dts_arc_snap ) select (st_dump(st_polygonize(geom))).geom from tmp;
J'ai prolongé un des arcs pour le faire s'intersecter avec les limites provinciales (aux pts start/end). Le polygone est alors correctement construit.
Je vais continuer à investiguer afin d'améliorer la qualité du snapping avant d'envisager de prolonger les arcs artificiellement.
Geoffroy
Hors ligne
#12 Mon 22 February 2021 11:04
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1549
Re: [PostGIS] - Ajustement de polygones - remplissage des vides
Bonjour,
Merci pour ce dataset.
L'arc 14 n'est pas connecté: il faut regarder pourquoi le snapping n'a pas marché pour lui.
Si je polygonize dts_arc_snap:
Code:
with tmp as ( select st_union(geom) as geom from dts_arc_snap ) select (st_dump(st_polygonize(geom))).geom from tmp;
J'obtiens bien les polygones construits (notamment ceux dépendant des arcs 18 et 29)
Le seul pg manquant est celui lié à l'arc 14 non connecté. (cf image jointe)
Ma version de postgis:
Code:
POSTGIS="3.1.0 5e2af69" [EXTENSION] PGSQL="130" GEOS="3.10.0dev-CAPI-1.15.0" SFCGAL="1.3.9" PROJ="7.2.0" GDAL="GDAL 3.2.0, released 2020/10/26" LIBXML="2.9.4" LIBJSON="0.15" LIBPROTOBUF="1.3.3" WAGYU="0.5.0 (Internal)" TOPOLOGY RASTER
Nico
Hors ligne
#13 Mon 22 February 2021 11:19
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1549
Re: [PostGIS] - Ajustement de polygones - remplissage des vides
Sur cette version:
Code:
POSTGIS="3.0.3 6660953" [EXTENSION] PGSQL="120" GEOS="3.8.1-CAPI-1.13.3" SFCGAL="1.3.9" PROJ="7.2.0" GDAL="GDAL 3.2.0, released 2020/10/26" LIBXML="2.9.4" LIBJSON="0.15" LIBPROTOBUF="1.3.3" WAGYU="0.4.3 (Internal)" TOPOLOGY RASTER
J'obtiens le meme résultat que vous (pg manquants)
ca semble lié à la version de GEOS: soit vous mettez à jour, soit vous prolongez artificiellement les extrémités des arcs internes (ex ici: https://lists.osgeo.org/pipermail/postg … 6831.html)
(Mon conseil: mettez à jour: la derniere version postgis/geos est vraiment chouette !)
Nicolas
Hors ligne
#14 Mon 22 February 2021 11:28
- Geo
- Participant occasionnel
- Lieu: Liège (Belgique)
- Date d'inscription: 18 Sep 2007
- Messages: 27
Re: [PostGIS] - Ajustement de polygones - remplissage des vides
Merci Nicolas pour cette analyse.
Je vais mettre à jour ma version de PostGIS/GEOS sur le serveur PG13 car je suis admin serveur. Par contre, ne contrôlant pas le PG10_12 où se trouve la BD de production, je vais sans doute devoir implémenter la prolongation des axes.
Merci encore pour la méthodologie d'axes et les vérifications qui ont montré les évolutions de GEOS 3.10.
Geoffroy
Hors ligne
#15 Mon 22 February 2021 12:07
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1549
Re: [PostGIS] - Ajustement de polygones - remplissage des vides
De rien
Vous pouvez aussi rapatrier les données depuis la prod sur votre serveur local, faire le traitement, et renvoyer le tout sur la prod (pg_dump ... | psql ...)
Nico
Hors ligne
Pages: 1
- Sujet précédent - [PostGIS] - Ajustement de polygones - remplissage des vides - Sujet suivant