Comment améliorer les performances de rendu d'un très grand fichier de formes?

20

J'ai un fichier de formes polygonales qui a un composant de fichier de 100 Mo.dbf et 500 Mo.shp. La raison pour laquelle il est si grand, c'est qu'il est classé comme une base terrestre pour tout un quartier.

Chaque fois que je consulte le fichier dans ArcCatalog ou ArcMap et que je déplace légèrement la fenêtre de visualisation, le fichier entier doit être redessiné à partir de zéro. J'ai essayé l'indexation spatiale et l'importation dans une géodatabase - aucune des deux approches n'apporte d'amélioration notable des performances en ce qui concerne le rendu.

La page d'aide d'Esri suggère que pour améliorer les performances du fichier de formes, l'utilisateur peut généraliser le fichier . Bien que cela fonctionnerait évidemment, je ne veux perdre aucune information. Le fractionnement du fichier n'est pas idéal car je fais beaucoup de géotraitement / requêtes avec toute sa zone. Je suppose que je pourrais éviter de visualiser la zone entière à la fois - mais parfois, par exemple, il est bon de voir quelles parties du fichier une requête a sélectionnées.

Existe-t-il une autre approche que je pourrais adopter pour améliorer les performances de rendu?

(En théorie, la construction de "pyramides" de fichiers de formes serait idéale - je ne sais pas pourquoi ArcGIS n'a jamais soutenu une telle approche - du moins que je sache ...)

youzer
la source
2
Avoir un si grand fichier de formes, c'est juste demander des ennuis. D'après mon expérience, les grands fichiers de formes ont tendance à se corrompre très facilement. Obtenez-le dans une géodatabase fichier, pour éviter la corruption. De meilleures performances de dessin seraient un bonus supplémentaire.
Devdatta Tengshe
Comme je l'ai brièvement noté ci-dessus, j'ai trouvé que l'importation d'un grand fichier de formes dans un gdb ne crée aucune amélioration - d'un point de vue purement rendu. Vous avez tout à fait raison, mais d'un point de vue général, cela n'a pas de sens de ne pas avoir un gros fichier shp dans une gdb (pour toutes sortes de raisons).
youzer
2
Avez-vous envisagé d'utiliser un raster au lieu d'un fichier de formes?
Kirk Kuykendall
Je suis confus dans une chose et si la taille du fichier est de 2 Go et la mémoire de l'ordinateur est également de 2 Go, alors comment Arcgis traitera ces données de fichier car il consommera toute la mémoire
user2174920
si vous avez des millions de petits polygones, aurait dû utiliser raster est le tristement célèbre dicton (à moins que vous ne fassiez une couche de sols ...)
Si vous ne le savez pas - juste SIG

Réponses:

22

Mes pensées sont:

  1. Exportez votre fichier de formes dans une classe d'entités de géodatabase fichier - je pense que ses performances de dessin seront meilleures, mais je ne suis pas sûr de combien
  2. Si vous utilisez ArcGIS Desktop 10.0 ou une version ultérieure, déplacez-le dans une couche de fond de carte - cela améliorera considérablement les performances de dessin
  3. Si vous aimez le son des pyramides pour les données vectorielles, assurez-vous de voter pour cette idée ArcGIS .
PolyGeo
la source
3
Sauf que vous ne pouvez pas effectuer d'analyse ou de sélection sur les couches de fond de carte IIRC.
blah238
4
Suspect qui pourrait être contourné en ayant une deuxième couche dans la table des matières pointant vers la même source et non une couche de fond de carte, qui est généralement désactivée mais peut être affichée si nécessaire pour l'analyse ou la sélection.
PolyGeo
PolyGeo - merci pour la réponse. J'ai essayé la couche de base et, en effet, une amélioration majeure des performances est lorsque vous cliquez sur "zoomer sur la couche", le fichier ne s'affiche pas à partir de zéro. La solution de contournement que vous suggérez compte tenu du commentaire de blah238 pourrait peut-être fonctionner à partir de certains projets, mais j'ai trouvé une chose supplémentaire qui limite l'utilisation de la couche de base est que vous ne pouvez pas visualiser le dbf en utilisant une symbologie. Avec cette limitation, je pourrais aussi bien généraliser le fichier pour référence (pas une couche de base), puis afficher la "vraie" couche si nécessaire. Pas vraiment une excellente solution .. Je voterai l'idée "pyramides" comme vous le suggérez!
youzer
6

Il existe de nombreux conseils pour améliorer les performances d'ArcMap qui pourraient vous aider, mais voici trois suggestions que j'ai utilisées.

  1. Je m'assurerais que le système de coordonnées du bloc de données correspond à mon fichier de formes et à toutes les autres couches que j'ai sur la table des matières; mais moins il y a de couches à afficher, mieux c'est.
  2. Je n'utiliserais que ma symbologie basée sur des lignes simples et des remplissages sans transparence ni autres complexités.
  3. Si vous avez besoin à la fois d'une vue d'ensemble et de la possibilité de vous déplacer de près, envisagez d'utiliser la loupe ou la visionneuse.
John
la source
généralement de très bons conseils. J'ai effectivement mis en œuvre tous ces éléments dans mes tests initiaux - il semble que des astuces plus / différentes soient nécessaires pour gérer de très grandes classes d'entités / fichiers de formes.
youzer
4

Vous pouvez améliorer le rendu en définissant les paramètres d'affichage du calque afin que le calque ne s'affiche pas à grande échelle (par exemple> 1: 10 000). Vous pouvez trouver cette option dans les propriétés du calque: Propriétés du calque> onglet Général> "Ne pas afficher le calque lors d'un zoom arrière au-delà ..."

En outre, l'emplacement de stockage est important - par exemple, s'il est stocké sur un ancien serveur avec une faible bande passante, vous avez la garantie de performances médiocres. Je gère régulièrement 1 Go + données vectorielles sur un serveur, ce qui me fait me demander si vos spécifications système doivent être mises à jour (pour référence, j'utilise 12 Go de RAM, 2e génération i7, carte graphique moyenne).

entrez la description de l'image ici

Aaron
la source
3

Avez-vous besoin de rendre la carte pour effectuer vos requêtes? Et si vous exécutiez des scripts python et accédiez aux données sans dessiner la carte? Je ne suis pas sûr de votre processus exact, de vos besoins, etc., mais d'une pensée.

gm70560
la source
3

Dans le prolongement de la réponse d' Aaron , vous pouvez également utiliser une requête de définition pour limiter le nombre de résultats renvoyés pour la visualisation (et cela inclut l'analyse - je pense que cela fonctionne un peu comme une sélection). Si toutes les fonctionnalités ne sont pas nécessaires pour la visualisation à un moment donné et que vous ne changez pas de région d'une tonne, une requête de définition pourrait être une solution viable, mais pas une réponse exacte à votre question ou à vos besoins.

nicksan
la source
3

J'entends ta frustration. Je travaille régulièrement avec de grands fichiers de formes comme celui-ci et je n'ai pas de problèmes d'affichage en général. Je suis d'accord avec tous les commentaires ci-dessus, en particulier en m'assurant que tout est dans la même projection, y compris la trame de données. Je suppose que vous avez copié le fichier localement et que vous n'essayez pas d'y accéder via le réseau? Une chose qui causera des problèmes d'affichage avec des fichiers de formes de cette taille est s'il y a une quantité extrême de sommets, comme dans un réseau de flux. La seule solution que j'ai trouvée est de créer un script python pour faire des définitions de couches à la volée, donc je n'en dessine que quelques-unes à la fois. Une autre chose serait de mettre à jour la mémoire graphique et la carte graphique de votre ordinateur.

Ruth
la source