Suite

Existe-t-il une fonction de dissolution dans PostGIS autre que st_union?

Existe-t-il une fonction de dissolution dans PostGIS autre que st_union?


Je recherche une fonction pour dissoudre les limites partagées entre les entités surfaciques dans une table. ST_UNION() fait presque ce que je recherche, mais il crée un multipolygone à partir de tous les polygones de la couche, qu'ils partagent ou non une frontière commune. Je préfère seulement dissoudre les frontières entre les polygones qui se touchent. J'ai pensé qu'il devrait y avoir un moyen d'utiliser ST_TOUCHES() mais le besoin d'une fonction de dissolution semble si courant que je serais surpris s'il n'y avait pas de fonction intégrée pour y parvenir.

Le cas d'utilisation ressemble à ceci : j'ai téléchargé les données de Corine Landcover pour un grand pays européen et je souhaite dissoudre les frontières entre différents types de forêts (environ 75 000 polygones dans un tableau). J'ai essayé ST_UNION, mais cela m'échoue avec une erreur "mémoire insuffisante" (30 000 polygones ont fonctionné cependant):

créer la table corine00 comme select st_union(the_geom) comme the_geom, sum(area_ha) comme area_ha, substr(code_00,1,2) comme code_00 de clc00_c31_forests group by substr(code_00,1,2)

Remarque : tous les codes forestiers commencent par « 31 » et j'utilise PostGIS 1.4, version GEOS : 3.2.0-CAPI-1.6.0


ST_MemUnion() exécutera un processus convivial de mémoire naïf et lent. Vous pouvez essayer cela, si votre problème est suffisamment petit, il pourrait se terminer dans un délai raisonnable. Vous pouvez également diviser votre problème en deux, puis les regrouper. Étant donné que les résultats auront beaucoup moins de points que les entrées, vous pourrez peut-être mettre tout le problème en mémoire de cette façon. Ou utilisez la routine rapide gourmande en mémoire sur les moitiés et la routine plus lente sur la fusion finale.


Je crois que ST_Dump est ce que vous voulez :

ST_Dump :

Renvoie un ensemble de lignes geometry_dump (geom,path), qui constituent une géométrie g1… Par exemple, il peut être utilisé pour développer MULTIPOLYGONS en POLYGONES.

Alors pour ton cas :

SELECT (ST_Dump( ST_Union( the_geom ) )).geom FROM clc00_c31_forests GROUP BY substr(code_00,1,2)

Je ne sais pas comment il interagira avec la création de table que vous essayez de faire, mais il devrait vous donner les géométries sous forme d'entrées distinctes. Vous pourrez alors effectuer une jointure spatiale (à l'aide de && et ST_Contains ) entre les deux tables pour collecter les données sur les géométries.


Votre PostGIS est-il compilé avec GEOS 3.1.0+ ? Pour cette version, une union en cascade beaucoup plus rapide a été implémentée, mais si elle n'est pas trouvée, elle utilisera l'ancien code qui est de plusieurs ordres de grandeur plus lent.

Mettre à jour: il semble que votre PostGIS utilise l'approche d'union en cascade, mais le manque de mémoire est réel. J'essaierais d'augmenter la mémoire disponible sur votre instance Postgres, voici quelques conseils de la conférence FOSS4G PostGIS 2007 de Paul Ramsey :

  • L'accès au disque est lent, donc de meilleures performances peuvent être obtenues en utilisant plus de mémoire pour mettre les données en cache !
    • Augmentertampons_partagés
    • RAM physique - OS requis * 75%
  • Le tri est plus rapide en mémoire
    • Augmentertravail_mem
  • Le nettoyage du disque est plus rapide avec plus de mémoire
    • Augmentermaintenance_work_mem
  • Attribué par connexion
  • Également
    • Augmenterwal_buffers
    • Augmenterpoints de contrôle_segments
    • Diminuerrandom_page_cost

Dans ton cas, j'essaierais d'augmentertampons_partagés, la recommandation générale est de 25% de votre mémoire disponible pour un serveur de base de données, mais essayez de l'augmenter à 3-4 fois sa valeur actuelle et voyez si elle se termine.


Apprendre l'analyse géospatiale avec Python

L'analyse géospatiale est utilisée dans presque tous les domaines auxquels vous pouvez penser, de la médecine à la défense en passant par l'agriculture. Il s'agit d'une approche consistant à utiliser l'analyse statistique et d'autres techniques d'ingénierie de l'information pour des données ayant un aspect géographique ou géospatial. Et cela implique généralement des applications capables d'affichage et de traitement géospatial pour obtenir des données compilées et utiles.

"Apprendre l'analyse géospatiale avec Python" utilise le langage de programmation Python expressif et puissant pour vous guider à travers les systèmes d'information géographique, la télédétection, la topographie, etc. Il explique comment utiliser un cadre afin d'aborder efficacement l'analyse géospatiale, mais selon vos propres termes.

« Apprendre l'analyse géospatiale avec Python » commence par un aperçu du domaine, une étude des techniques et de la technologie utilisées, puis divise le domaine en ses domaines de spécialité : SIG, télédétection, données d'altitude, modélisation avancée et temps réel Les données.

Ce livre vous apprendra tout ce qu'il y a à savoir, de l'utilisation d'un progiciel ou d'une API particulier à l'utilisation d'algorithmes génériques pouvant être appliqués à l'analyse géospatiale. Ce livre se concentre sur Python pur dans la mesure du possible pour minimiser la compilation de binaires dépendants de la plate-forme, afin que vous ne vous enlisiez pas dans la préparation de l'analyse.

"Apprendre l'analyse géospatiale avec Python" complétera votre bibliothèque technique avec des recettes pratiques et une bonne compréhension d'un domaine qui complète de nombreuses activités humaines modernes.

Il s'agit d'un livre de style tutoriel qui vous aide à effectuer des analyses géospatiales et SIG avec Python et ses outils/bibliothèques. Ce livre présentera d'abord divers outils/packages liés à Python dans les premiers chapitres avant de passer à l'utilisation pratique, aux exemples et à la mise en œuvre dans des types spécialisés d'analyse de données géospatiales.

Ce livre s'adresse à tous ceux qui souhaitent comprendre la cartographie et l'analyse numériques et qui utilisent Python ou un autre langage de script pour l'automatisation ou le traitement manuel des données. Ce livre cible principalement les développeurs, chercheurs et analystes Python qui souhaitent effectuer des analyses géospatiales, de modélisation et SIG. avec Python.


Авторе

Ие итаты

Cependant, vous n'abandonnez jamais complètement la programmation orientée objet en Python car même ses types de données natifs sont des objets et toutes les bibliothèques Python, appelées modules, adhèrent à une structure et un comportement d'objet de base.

AutoCAD d'Autodesk et ArcGIS d'Esri ont été les principaux packages commerciaux à développer cette capacité et les développeurs de la bibliothèque OGR de la bibliothèque d'abstraction de données géospatiales (GDAL) ont également ajouté la prise en charge de la CAO.

Des épidémies mortelles de choléra en Europe entre 1830 et 1860 ont conduit les géographes de Paris et de Londres à utiliser l'analyse géographique pour les études épidémiologiques.

Les utilisateurs de Google Earth peuvent créer des fichiers KML (Keyhole Markup Language) personnalisés, qui sont des fichiers XML permettant de charger et de styliser des données sur le globe.

La capacité multispectrale et le format numérique signifiaient que la vue aérienne fournie par Landsat n'était pas juste une autre photographie du ciel.

Редварительный росмотр книги

Apprendre l'analyse géospatiale avec Python - Deuxième édition - Lawhead Joel


Voir la vidéo: PGConfRu2019 Дорофей Пролесковский - PostGIS от катастроф