Suite

Recalculer l'étendue complète de la classe d'entités File Geodatabase ?


J'ai une classe d'entités dans une géodatabase fichier Esri. Lorsque je modifie les entités à l'aide de l'éditeur dans ArcMap et que je supprime la plupart de mes entités et ne conserve que celles du milieu, la commande de zoom sur la couche ne fonctionne pas comme prévu. Au lieu de zoomer sur l'étendue des entités restantes dans la classe d'entités, l'étendue sera l'ancienne (contenant toutes les entités supprimées). Lors de l'examen des valeurs d'étendue dans la boîte de dialogue des propriétés de la classe d'entités, je peux clairement voir les anciennes valeurs. Ainsi, la session d'édition ne semble pas modifier les valeurs d'étendue complètes.

Existe-t-il un moyen de recalculer ces valeurs ?

Je suis presque sûr que ce problème devrait survenir pour tout le monde qui modifie des entités dans ArcMap…


Esri dispose désormais d'un outil pour cela dans 10.4 (hourra) : Recalculer l'étendue de la classe d'entités.

Je rencontrais ce problème lorsque je créais une classe d'entités et y écrivais une géométrie avec arcpy. Apparemment, ces outils ne mettent pas à jour l'étendue (probablement une bonne idée pour des raisons de performances).

J'ai réussi à réinitialiser l'étendue dans 10.2.2 avec la suggestion de @Lou :

arcpy.CompressFileGeodatabaseData_management(output_workspace) arcpy.UncompressFileGeodatabaseData_management(output_workspace)

Cliquez avec le bouton droit sur la classe d'entités dans ArcCatalog et accédez aux propriétés. Dans l'onglet Étendue de l'entité, cliquez sur Recalculer. Et voilà !

J'utilise ArcGIS 10.2.1


Compacter la géodatabase va ranger votre index spatial

« Si vous ajoutez et supprimez fréquemment des données, vous devez compacter votre fichier ou votre géodatabase personnelle sur une base mensuelle. Vous devez également compacter une géodatabase après toute modification à grande échelle. Le compactage permet de ranger le stockage en réorganisant les enregistrements et en éliminant l'espace inutilisé. Après le compactage, les données de chaque fichier sont accessibles plus efficacement. Le compactage réduit également la taille de chaque fichier - il est possible de réduire la taille d'une géodatabase de moitié ou plus."

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Compacting_file_and_personal_geodatabases/003n0000007t000000/

Compact (Gestion des données)

« Il est recommandé de compacter les géodatabases personnelles lorsqu'elles dépassent 250 Mo. Si la saisie, la suppression ou la mise à jour générale des données est fréquemment effectuée sur une base de données, la base de données doit être régulièrement compactée pour garantir des performances optimales. »

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000000n000000


Voici un complément ArcCatalog pour ArcGIS 10 qui ajoute une commande pour mettre à jour l'étendue de la classe d'entités, probablement en utilisant la même méthode que le code VBA de @Ragi :


L'étendue de la géodatabase s'étend toujours - ne se raccourcit jamais automatiquement. Le compactage et la compression optimisent uniquement le stockage et la fragmentation, mais pas l'étendue elle-même. J'essaierais de recréer l'index spatial d'abord et de voir si cela fait l'affaire.

Mettre à jour:

Étant donné que la reconstruction de l'index spatial ne fait pas l'affaire, je suis sûr que le code VBA suivant le fera :

Public Sub reCalcExt() Dim pGXApplication As IGxApplication Définir pGXApplication = Application Dim pGxObject As IGxObject Définir pGxObject = pGXApplication.SelectedObject Sinon TypeOf pGxObject.InternalObjectName Is IFeatureClassName Puis Quitter Sub End Si Dim pName As IName Définir pName = pGximaLock Définir pSchemaLock = pName.Open pSchemaLock.ChangeSchemaLock esriExclusiveSchemaLock Dim pFeatureClassManage As IFeatureClassManage Définir pFeatureClassManage = pSchemaLock pFeatureClassManage.UpdateExtent Exit Sub ErrHandler: pSchemaLock.ChangeSchemesLock

Vous pouvez le faire dans n'importe quel autre langage de programmation pris en charge par ESRI. L'astuce consiste à obtenir un schemalock et à utiliser la méthode IFeatureClassManage::UpdateExtent.


Je ne sais pas exactement ce qui le cause dans les géodatabases de fichiers, mais je suis en effet capable de le reproduire et c'est quelque chose que j'ai déjà rencontré. La seule façon pour moi de trouver comment le contourner est de compresser la géodatabase fichier. Cela résoudra le problème d'étendue. Vous devrez la décompresser lorsque vous aurez terminé, car vous ne pouvez pas modifier une géodatabase fichier compressée.

Au cours d'une session de mise à jour/ArcMap lorsque vous utilisez réellement les données, vous pouvez toujours sélectionner tout | zoomer sur sélectionné comme solution de contournement. Ce n'est pas génial, mais je l'ai utilisé dans mon flux de travail jusqu'à ce que j'atteigne un point de rupture où je pourrais faire ce tour de compression/décompression.

Notez que le compactage ne fonctionnera pas (du moins, pas de manière fiable). Il reconstruira vos index, mais je l'ai trouvé peu fiable pour résoudre les problèmes d'étendue. C'est toujours quelque chose que vous devriez faire de temps en temps. Je viens de réessayer et cela n'a pas fonctionné sur mon exemple de jeu de données. YMMV.


Si vous souhaitez mettre à jour l'étendue des classes d'entités dans votre document mxd, ce morceau de code peut vous aider :

Dim pLayer As ILayer Dim pEnumLayer As IEnumLayer Dim pFeatureLayer As IFeatureLayer Dim pFeatureClass As IFeatureClass Dim pFeatureClassManage As IFeatureClassManage pEnumLayer = pMap.Layers pLayer = pEnumLayer.Next Do Jusqu'à ce que pFeature pLayer = Nothing If TypeOfLayer = pFeatureClass pFeatureClassManage.UpdateExtent() Fin Si pLayer = pEnumLayer.Next Loop

Recalculer l'étendue complète de la classe d'entités File Geodatabase ? - Systèmes d'information géographique

Je souhaite mettre à niveau Mapnik sur un système de production de 2.2.0 à 3.x pour profiter des améliorations apportées au rendu basé sur les données. Heureusement, les instructions d'installation d'Ubuntu ont été mises à jour très récemment (il y a 11 jours à compter de ce message), mais je me demande ce qui se passe si j'exécute l'installation sur un système avec une installation existante. Quelqu'un a-t-il essayé cela?

Nous utilisons TileStache pour afficher plusieurs points de terminaison de tuiles de carte, notamment des fichiers json UTFGrid, et je crains de polluer le système de manière irréparable !

Quelqu'un peut-il commenter ce qui pourrait arriver si j'exécute la dernière installation de Mapnik sur un système avec une installation existante et fonctionnant correctement ?

[Modifier 22/08/2018]

J'ai réussi la transition sur un serveur de test et j'ai incorporé mes modifications précédentes dans une réponse complète ci-dessous.

Je me suis souvenu que j'avais une petite instance Rackspace que j'avais configurée une fois pour tester la portabilité du code. Il a une version presque identique de notre pile Web, en particulier les versions Ubuntu et Mapnik, il a donc constitué un banc d'essai raisonnable pour expérimenter le passage de 2.2.x à 3.x.

En un mot, il s'agissait d'une transition compliquée qui impliquait un dépannage sincère, des recherches, des réinitialisations de pile, quelques modifications de code aux feuilles de style XML, et bien que les choses fonctionnent à nouveau, ma confiance est un peu faible. S'il s'agissait d'un système de production, les temps d'arrêt auraient été considérables.

Ce qui suit est une liste des « pièges » que j'ai rencontrés en essayant de déterminer les dépendances de construction (version du compilateur c++, version clang, version git, etc.) et quelques problèmes de configuration/utilisation que j'ai rencontrés après coup. Espérons que la consultation de cette liste peut aider à éviter des temps d'arrêt inutiles et à accélérer le processus de transition.

En essayant d'installer et de configurer Mapnik sur Ubuntu en utilisant les instructions officielles trouvées ici, sous le titre "Installer Mapnik à partir de la source", je suggère d'augmenter ces instructions avec les informations fournies ci-dessous. FWIW ceci est relatif à Ubuntu 12.04.5 LTS.

Tout d'abord, avant d'installer ou de désinstaller quoi que ce soit Mapnik..

Mettez à jour le compilateur g++. La construction de Mapnik nécessite les fonctionnalités du compilateur c14 et vous ne pourrez pas compiler si votre compilateur échoue au test de dépendances/version. Dans votre terminal, tapez g++ --version et si votre version est inférieure à 4.9, continuez et mettez à jour. J'ai utilisé le guide trouvé ici, en particulier ces commandes:

2) Réparer Clang

J'ai eu un problème avec la gestion des versions de clang et je l'ai corrigé en adaptant les instructions trouvées ici sous la rubrique "Installation source de Mapnik Master (3.x)". ma première tentative d'installation, j'ai ajouté l'indicateur --force-yes à l'instruction d'installation apt-get. Voici les commandes de terminal que j'ai utilisées pour installer la bonne version de clang :

Lorsque vous avez terminé, vous devriez pouvoir taper echo $CXX et obtenir la sortie du terminal clang++-3.8 ou echo $CC et obtenir clang-3.8 , respectivement. Si vous n'obtenez pas ces réponses, quelque chose peut échouer lors d'une étape ultérieure de configuration/construction.

3) Mettre à niveau Git

J'ai d'abord rencontré une erreur d'utilisation de git liée à l'utilisation d'un paramètre -C la première fois que j'ai exécuté la commande source bootstrap.sh, qui semble établir certaines caractéristiques de l'environnement de construction. En cherchant des solutions sur Google, il semble que j'avais deux options, soit modifier le fichier bootstrap.sh en remplaçant les instances de -C par --git-dir , car apparemment celles-ci ont des fonctionnalités équivalentes, soit mettre à niveau git.

Vous pouvez exécuter git --version dans le terminal—mine était 1.7.9.5 avant la mise à niveau. Après la mise à niveau, ma version est passée à 2.18.0 et le problème du paramètre -C a disparu. La mise à niveau a été aussi simple :

4) libgdal.la introuvable

J'ai oublié où j'ai rencontré ce problème, lors de l'étape source bootstrap.sh ou éventuellement de l'étape ./configure.. . Mais j'ai l'erreur :

Sur la base des instructions sous Configurer l'environnement de construction, l'installation manuelle de libgdal1-dev comme ceci a résolu le problème :

Je suppose que vous pouvez le faire avant de supprimer l'ancien Mapnik ou de commencer l'une des étapes d'installation formelles.

5) Mention honorable, gravité inconnue

Lors de l'exécution de make test , j'ai eu des erreurs telles que :

Ils pourraient avoir été liés à ma version PostGRESql installée (9.1), qui fonctionne bien. Je n'ai jamais résolu ces erreurs/avertissements, mais ma construction/installation de Mapnik semble fonctionner correctement malgré eux. FWIW, ailleurs dans les instructions, une note oriente les utilisateurs d'Ubuntu 14.04 vers la page 9.3.

6) Installer réellement Mapnik

A ce stade je désinstallé Mapnik, puis a commencé ma nouvelle construction/installation. Je ne sais pas s'il est essentiel à 100% de supprimer d'abord votre ancien Mapnik, mais j'ai vu des instructions le recommander, de Dane pas moins. J'ai donc supprimé Mapnik comme première étape.

Tout s'est passé comme ça :

Certaines de ces étapes, en particulier l'instruction make, ont pris un certain temps, probablement parce que mon instance de serveur est minuscule. Mais sachant cela, au moins ne vous attendez pas à une ou deux minutes d'arrêt. À moins que vous ne respectiez les règles du Far West, vous souhaiterez effectuer cette mise à niveau pendant une fenêtre de maintenance raisonnable.

À ce stade, j'ai rencontré des problèmes lors de l'importation des bibliothèques Mapnik en Python. TileStache lançait des erreurs sur Apache, c'est ce que j'ai remarqué.

7) Installer les liaisons Python Mapnik

Installez d'abord les liaisons Mapnik Python. C'est super facile. Assurez-vous simplement que vous avez pip >= 1.4, ce qui a quelque chose à voir avec la dépendance Python Wheels. Utilisez pip --version pour vérifier. Le pip 7.1.2 du mien, donc je soupçonne que la version pip n'est pas un problème :

Cela résoudra probablement le problème.

8) Vérifiez ldconfig

Vous n'aurez peut-être pas besoin de le faire, mais les instructions de dépannage demandent un ajustement de la configuration LD dans le cas où Python ne trouve pas Mapnik. Je me suis légèrement écarté de la recommandation de dépannage, basée principalement sur ce que j'ai lu ici. Plutôt que d'ajouter un chemin directement vers /etc/ld.so.conf , j'ai créé un nouveau fichier dans /etc/ld.so.conf.d et y ai ajouté mes valeurs de chemin, comme ceci :

Dans niklib.cof , ajoutez les trois lignes suivantes :

Après avoir enregistré le fichier, mettez à jour l'environnement avec :

Remarque : si vous dir /etc/ld.so.conf.d et voyez libc.conf , et si vous vi /etc/ld.so.conf.d/libc.conf et voyez /usr/local/lib dans ce fichier , alors vous pouvez ignorer cette étape n°8, car votre environnement LD devrait déjà référencer les chemins nécessaires.

9) Fichiers de conception Mapnik XML (c'est-à-dire des feuilles de style de carte XML)

À ce stade, je pouvais lancer Python et importer les bibliothèques Mapnik, mais TileStache ne rendait toujours pas (la plupart) les tuiles ! En suivant le journal Apache comme ceci :

J'ai remarqué des erreurs qui ressemblaient à ceci :

Cela a pris du temps à comprendre et à corriger. Il s'avère que les configurations de build-from-source par défaut pour Mapnik utilisent une bibliothèque XML différente ( rapidxml ) que celle utilisée pour certaines builds clé en main ( libxml2 ), que je soupçonne que beaucoup de gens ont utilisé autour de la version 2.x, très probablement parce que ces les versions ont été promues par un ou plusieurs tutoriels populaires. Le problème provient des soi-disant entités XML, et il semble que les conceptions de cartes XML (plus anciennes ?) Open Street Map (OMS) aient utilisé ces entités XML, ce qui a propagé davantage cette approche. Vous pouvez trouver une discussion plus longue à ce sujet ici.

Comme cela s'est déroulé, une partie de mes propres conceptions de carte utilisaient des entités XML pour définir les attributs de la carte srs/projection, qui étaient la source de mes erreurs Apache. J'ai eu un coup de chance en remarquant que mes tuiles UTFGrid étaient en fait rendues, et une inspection minutieuse des conceptions de carte a révélé une manière différente de définir la carte srs/projection. En tant que tel, j'ai pu apporter de petites modifications à ces fichiers XML pour éliminer la dernière de mes erreurs d'arrêt, ramenant toutes les fonctionnalités en ligne.

9a) Ce que j'ai fait..

Fondamentalement, j'ai parcouru mes fichiers de carte et j'ai modifié chaque instance de quelque chose comme ça (notez la balise ENTITY):

9b) Ce que vous préférez..

Facultativement, si vous devez corriger/vérifier BEAUCOUP de conceptions XML, vous voudrez peut-être consulter xmllint , qui a une option pour nettoyer les entités XML, et que vous pouvez incorporer dans l'automatisation et utiliser pour rendre en masse tous vos fichiers XML, puis écrasez-les en place avec une seule commande.

Essayez d'appeler xmllint --version . Si vous n'obtenez aucun retour, vous pouvez installer l'utilitaire comme ceci :

Une fois que vous l'avez installé, regardez un fichier XML problématique (un qui contient une balise ENTITY), faites-en une copie et exécutez xmllint dessus comme ceci pour voir comment il transforme le code :

Il pompera XML directement dans la console et vous verrez ces balises ENTITY remplacées par leurs valeurs réelles.

10) Mention honorable, sans conséquence (version mod_python)

À ce stade, j'ai effacé mon fichier journal Apache, redémarré, puis suivi le journal pour voir si d'autres erreurs apparaissaient. Bien sûr sur les systèmes sérieux il vaut mieux faire une sauvegarde de ce fichier avant de l'effacer :

Lorsque j'ai fait cela, j'ai vu ce qui suit (notez la mention de "incompatibilité de version") :

Je craignais que cela soit lié à ma construction ou à mes liaisons, etc., mais il s'avère que c'est lié à mod_python , que TileStache utilise les requêtes et les réponses Internet de portage via Apache. Comme mon installation fonctionne, j'ai choisi de ne pas faire bouger le bateau plus loin et je me suis arrêté là. ..J'ai probablement eu cette erreur/avertissement depuis le début. Mais si vous obtenez cette erreur et que vous êtes si enclin, il semble que la suppression et la réinstallation de mod_python puissent être une solution :

Cela conclut mon expérience en passant d'un Mapnik 2.2.x fonctionnel à un Mapnik 3.x fonctionnel sur Ubuntu 12.04. J'espère que cela aidera quelqu'un à faire la transition plus rapidement que moi et à éviter certaines frustrations.


Recalculer l'étendue complète de la classe d'entités File Geodatabase ? - Systèmes d'information géographique

Le réseau Stack Exchange se compose de 177 communautés de questions-réponses, dont Stack Overflow, la communauté en ligne la plus importante et la plus fiable pour que les développeurs apprennent, partagent leurs connaissances et construisent leur carrière.

Communauté actuelle

Vos communautés

Plus de communautés d'échange de piles

Connectez-vous et partagez vos connaissances au sein d'un emplacement unique, structuré et facile à rechercher.

Conférencier en technologie géospatiale, South Dakota School of Mines & Technology * USGS (retraité) * Esri Certified Desktop Professional * Esri Geonet MVP >>> Go To Mines! <<<

Meilleurs messages du réseau

Garder un profil bas.

Cet utilisateur n'a pas encore posté.

Insignes (1)

Argent

Bronze

Le plus rare

conception du site / logo © 2021 Contributions des utilisateurs de Stack Exchange Inc sous licence cc by-sa. rév 2021.6.28.39592

En cliquant sur "Accepter tous les cookies", vous acceptez que Stack Exchange puisse stocker des cookies sur votre appareil et divulguer des informations conformément à notre politique en matière de cookies.


Expériences

Matériaux

Le méthacrylate d'hydroxyéthyle et le méthacrylate de méthyle ont été achetés auprès de Merck, Allemagne. Le diméthacrylate de triéthylèneglycol, l'itaconate de diméthyle, le 2,2'-azobisisobutyronitrile (AIBN) et le méthacrylate de 3-(triméthoxysilyle)propyle ont été fournis par Sigma-Aldrich, Allemagne. L'AIBN a été recristallisé dans du méthanol avant la synthèse afin d'éliminer toutes les impuretés. Le silsesquioxane oligomère polyédrique méthacrylate (POSS-acrylate) a été obtenu auprès de Hybrid Plastics, USA et utilisé tel que reçu. Le bromure de 3-[4,5-diméthylthiazol-2-yl]-2,5 diphényltétrazolium MTT, la coloration au rouge alizarine, la dexaméthasone et l'acide ascorbique (Sigma) ont été achetés auprès de Sigma, Royaume-Uni, Roswell Park Memorial Institute-1640.

Méthodes

Réaction de polymérisation

La synthèse de matériaux de lentilles en acrylate de silicium en combinaison avec du POSS-acrylate était l'objectif de cette étude. La polymérisation d'un certain nombre de monomères soigneusement sélectionnés a été réalisée en utilisant une approche de polymérisation en masse par radicaux libres pour laquelle les données cinétiques ainsi que le degré de conversion sont rapportés ici. Par conséquent, le méthacrylate d'hydroxyéthyle, le méthacrylate de méthyle, le diméthacrylate de triéthylène glycol, l'itaconate de diméthyle, le méthacrylate de 3-(triméthoxysilyle) propyle et le mélange POSS-acrylate ont été soigneusement mélangés sous N2 atmosphère jusqu'à l'obtention d'un mélange homogène. Ensuite, AIBN a été ajouté et le mélange a été transféré dans un moule approprié. Dans la première étape, les composés polymères ont été chauffés à une température optimisée (65 °C) pendant 24 h. Les lentilles ont été démoulées et maintenues à 45°C pendant 48h pour achever la polymérisation. Sur la figure 1, la réaction de polymérisation est représentée schématiquement.


Voir la vidéo: How to convert Esri Shapefile to Geodatabase (Octobre 2021).