J'ai un jeu de données vectorielles de points de données de bande large rurale (à quelle vitesse, etc.) et j'aimerais explorer s'il existe des groupes de points ayant des caractéristiques similaires et tracer des polygones les englobant.
Par exemple, je peux avoir 45 000 points dans un seul jeu de données PostGIS réparti sur un paysage. Je souhaite identifier les grappes situées à x km les unes des autres et où la vitesse est inférieure à y kbps, et produire des coques convexes pour chaque grappe qualifiée.
Y a-t-il un moyen simple de faire cela dans QGIS, par exemple?
qgis
qgis-processing
clustering
Adrian
la source
la source
Réponses:
J'ai combiné des extraits de plusieurs suggestions et ajouté un peu des miens pour trouver une solution qui me convient - et tout au sein de QGis!
J'ai d'abord lancé une commande PostGis SELECT pour trouver les points qui ont les attributs communs appropriés et qui se trouvent à moins de x km les uns des autres:
(Assez bien tiré du très bon livre PostGis in Action de Manning , ajoutant seulement une auto-jointure)
J'ai ensuite chargé le plugin ManageR de Carson Farmer et importé la couche. De là , j'ai suivi le processus de regroupement de PAM proposé ici , et le résultat exporté dans un fichier de forme, sur laquelle ont été calculées Convex Hulls en quelques secondes à l' aide fTools (Carson ne se déplacer!).
la source
Bien que ce ne soit pas la solution QGIS, je choisirais personnellement une analyse exploratoire avec SaTScan . C'est rapide, bien documenté et largement appliqué, vous ne devriez donc pas avoir de problèmes de démarrage. 45k points pourraient toutefois nécessiter de la RAM.
Je ne sais pas s'il peut lire directement à partir de Postgres mais importe facilement à partir de fichiers dbf et de fichiers texte.
Le résultat de l’analyse peut ensuite être facilement lu dans Postgres ou QGIS. Vous pouvez décider de rechercher des groupes circulaires ou des ellipses (il peut être utile de les utiliser s'il existe un type particulier de colonies dans vos données, par exemple des villes / villages de formes longues dans des vallées, etc.). Vous pouvez ensuite générer des polygones ou des ellipses ou afficher uniquement les emplacements membres des clusters.
Pour un aperçu rapide des résultats dans Google Earth, vous pouvez également utiliser l'outil de conversion SaTScan vers Google Earth de NAACCR .
Il est important de noter que si vous décidez de faire des simulations de Monte Carlo (99 minimum, je pense), vous pourrez également en dire plus sur la signification statistique de vos clusters. L’interprétation et la justification de ces groupes seront un autre problème, comme cela a été débattu dans les sciences spatiales depuis au moins deux décennies (je pense;).
Vous pouvez essayer de lancer une analyse purement spatiale en recherchant des grappes de valeurs hautes, basses ou basses. Si vous avez des attributs temporels dans vos données * (agrégations quotidiennes, hebdomadaires), alors je pense qu'il serait vraiment intéressant de faire fonctionner des modèles spatio-temporels.
la source
SciPy a un package de clustering (pour python), vous pouvez l’utiliser dans la console python, écrire un simple plugin pour le faire ou utiliser PL / python dans postgis.
http://docs.scipy.org/doc/scipy/reference/cluster.html
Après l'analyse, utilisez simplement f-tools pour créer les coques convexes.
la source
Il y a un exemple similaire de ce que vous voulez faire en utilisant R et GRASS ici . Au lieu de cela, vous pouvez utiliser les outils de classification de scip comme suggéré, puis effectuer les calculs de coque convexe à l'aide de cette méthode .
la source
Vous pouvez essayer le plugin Ftools.
Vector
>Geoprocessing Tools
>Convex Hulls
.Il existe une option pour
Create convex hulls based on input field
, le paramètre de champ de saisie doit provenir des attributs de vos points de saisie.la source