Le logiciel gvSIG OA Digital Edition 2010 possède des outils de topologie pour trouver des pseudo-nœuds en géométrie linéaire. J'ai défini la tolérance de cluster 0,00002 et le nombre maximum d'erreurs -10000 pour la géométrie linéaire de 20000 comptes de liaisons. Mais résultat infructueux.
Existe-t-il des solutions qui trouvent des pseudo-nœuds dans un logiciel SIG gratuit?
J'ai besoin de superposer des pseudo-nœuds (une solution à ce problème - pour utiliser la topologie des outils d'ArcInfo, mais la priorité pour moi est d'utiliser des logiciels libres). La géométrie linéaire a créé plusieurs utilisateurs dans QGIS 1.8.0 dans la base de données PostGIS (v. 2.0.1).
Ajouter une nouvelle image: 12 entités linéaires avec trois pseudo-nœuds en A (ligne 4/5), B (ligne 6/7), C (ligne 9/10). Les pseudo-nœuds doivent plutôt être des points - deux entités linéaires avec intersection en un point (nœud) doivent être une entité linéaire (ligne 4/5 - ligne 4, ...).
Est-il possible de faire une demande dans PostGIS, ce qui se traduira par une couche de pseudo-nœuds?
Ajouter une nouvelle image d'exemples de pseudo-nœuds: si je reçois pour une couche linéaire point pseudo-nœuds de couche (rects bleus) j'ai corrigé les erreurs suivantes dans la couche linéaire: A - ajouter la géométrie manquante, B - ligne coupée dans l'intersection, C - supprimer le pseudo-nœud
Réponses:
Voici une solution générique, que vous pouvez mettre en œuvre avec PostGIS ou tout autre logiciel compatible OGC.
Votre problème est de "trouver des pseudo-noeuds" ... Mais je pense que c'est un peu plus, "trouver des non-pseudo-noeuds et joindre des lignes de pseudo-noeuds". Ma solution peut être utilisée pour les deux.
Les normes OGC offrent:
ST_Boundary (geom) : pour détecter les nœuds des lignes
ST_Dump (geom) : pour placer chaque nœud unique dans un enregistrement de table SQL.
ST_DWithin, ST_Equals, ST_SnapToGrid, ST_Snap peuvent être utilisés pour la tolérance de changement. J'utilise ST_DWithin.
Nous pouvons supposer que votre problème principal peut être spécifié avec ces objets et propriétés,
il n'y a que des segments de ligne (d'un segment de table ), représentés par une géométrie LINESTRING ... Je n'ai pas testé avec MULTILNE, si vous avez geometrytype = MULTIPOINT, vous pouvez diviser et caster MULTILINEs avec ST_Dump et ST_LineMerge;
chaque segment de ligne possède une (géométrie ID) GID et une (couleur ID) idline .
Donc, la première étape consiste à obtenir les nœuds qui proviennent de la jonction des lignes,
REMARQUE: utiliser des caches car ils sont plus rapides que les vues. Utilisez "EXPLAIN SELECT ..." pour vérifier le temps CPU, cela peut prendre du temps.
Ici, les cycles et les lignes continues (de même couleur) sont détectés en tant que
ncolors=1
points, et les pseudo-nœuds parncolors=2
points, vous avez donc un calque avec ces points.Votre tableau de "bons nœuds" est avec les "points limites" d'origine et sans "pseudo-nœuds".
la source
array_distinct
fonction non citée provient d'une bibliothèque postgres.cz . Pour toute autre erreur, veuillez signaler, je peux ajouter plus d'explications ici.geom
enthe_geom
. (ST_Dump (x)) reste comme geom, n'est pas un attribut de base de données.Refractions Research a créé un outil Line Cleaner qui semble faire ce que vous voulez.
Le code source peut être trouvé sur GitHub.
la source
Solution non libre: transformateur FME + MRF + SmartCleaner
Solution gratuite GRASS v.clean (le dernier QGIS 1.8.0 avec les outils GRASS est le moyen le plus simple de l'utiliser) et d'autres outils de nettoyage de topologie
la source
Voici les étapes pour trouver vos pseudo-nœuds en utilisant OpenJump un SIG gratuit.
QGIS et gvSIG ont le plugin Sextante, donc ces mêmes étapes devraient fonctionner aussi,
la jointure spatiale peut être légèrement différente.
J'ai utilisé la version 1.2 pour les tests.
- enregistrer la
boîte à outils Sextante des extrémités de ligne , Topologie, Extraire les extrémités des lignes -> endpt_0
- dissocier vos lignes
Boîte à outils Sextante, Outils pour les couches de lignes, Joindre des lignes adjacentes
- enregistrer la
boîte à outils Sextante des extrémités de ligne non fractionnée, Topologie, extraire les extrémités de line -> endpt_1
- les points d'extrémité supprimés par "Joindre les lignes adjacentes" sont des pseudo-nœuds. La
Outils, requêtes, requête spatiale,
couche source "endpt_0"
Relation "Intersects"
La couche de masque "endpt_1" active
ou cliquez sur Complémenter le résultat
la source
DIST > 0
comme expression. De plus, tous les géoprocédés peuvent être enchaînés dans un modèle SEXTANTE afin de créer un nouvel outil, par exemple "Rechercher des pseudonodes" .Solution de recherche de pseudo noeuds (et autres règles de topologie) disponible dans QGIS 1.9.0 master (2.0) - plugin "Topology Checker". Liens: plugin Topology Checker sur YouTube , plugin Topology Checker sur GitHub
la source
Avec PostGIS, vous pouvez utiliser une version modifiée de la requête pour trouver les bracelets discutés dans cette rubrique , car les pseudonodes sont des nœuds qui interceptent 2 chaînes de lignes et les bracelets sont des nœuds qui interceptent 1 chaîne de lignes.
la source