Suite

Comment faire correspondre deux classes d'entités avec la même géographie et utiliser une partie du nom de l'une pour nommer l'autre


J'ai donc des classes d'entités surfaciques avec des noms d'identification uniques que je souhaite utiliser pour renommer d'autres classes d'entités de type point et ayant la même géographie que l'une des classes d'entités surfaciques correspondantes. Fondamentalement, les points de la deuxième classe d'entités s'intègrent dans la classe d'entités polygone. La classe d'entités ponctuelles n'a pas de nom, donc j'aimerais changer cela et ajouter au moins une partie du nom de la classe d'entités surfaciques au nom en fonction du fait qu'elles partagent la même géographie.

Je pensais pouvoir utiliser l'outil Sélectionner par emplacement, mais le problème est que j'ai simplement un tas de classes d'entités ponctuelles sans nom dans un dossier, donc ce n'est pas comme si je pouvais sélectionner des classes d'entités individuelles. Donc, je dois parcourir toutes les classes d'entités ponctuelles et les renommer en fonction de la classe d'entités surfaciques à laquelle elles correspondent. Je suppose que je peux utiliser Arcpy pour le faire. Toute aide ou orientation serait appréciée.


Effectuez une jointure spatiale des polygones aux points. Cela introduit le champ d'identifiant de polygone souhaité dans la table attributaire de points. Utilisez un calcul de champ pour concaténer l'identifiant du polygone avec l'identifiant du point.

Par ailleurs, de bons algorithmes pour joindre spatialement une couche de polygones (ayant p arêtes totales) à une couche de m points nécessitent un effort de prétraitement p*log(p) (pour construire un "index spatial" ou son équivalent) et n*log(p) pour le calcul réel. Ainsi, au moins après la construction de l'index, le temps de la jointure est directement proportionnel au nombre de points (et la constante de proportionnalité évolue lentement avec p). En l'absence de bogues, qui ont entravé cette opération dans les versions précédentes d'ArcGIS, la jointure devrait être rapide et s'adaptera à d'énormes jeux de données.


Je pense que la première étape pour cela pourrait être de créer une fusion de tous les fichiers de polygones avec un attribut sur les polygones pour désigner de quelle classe d'entités le polygone est originaire.

Ensuite, pour chaque classe d'entités ponctuelles avec ses milliers de points, vous pouvez effectuer une jointure spatiale par rapport à la classe d'entités surfaciques fusionnée, puis effectuer des statistiques de table à partir de la jointure pour trouver quelle classe d'entités surfaciques correspond le plus souvent.

Ensuite, une fois que vous avez ce nom de fichier, vous pouvez l'utiliser pour créer un nouveau nom pour la classe d'entités points et le renommer.


Histoire du supercontinent Pangée

Walter Myers/Stocktrek Images/Getty Images

  • M.A., Géographie, California State University - East Bay
  • B.A., anglais et géographie, California State University - Sacramento

La Pangée (orthographe alternative : Pangée) était un supercontinent qui existait sur Terre il y a des millions d'années, couvrant environ un tiers de sa surface. Un supercontinent est une grande masse continentale composée de plusieurs continents. Dans le cas de la Pangée, presque tous les continents de la Terre étaient connectés en un seul relief. La plupart des gens pensent que la Pangée a commencé à se développer il y a plus de 300 millions d'années, s'est complètement formée il y a 270 millions d'années et s'est séparée il y a environ 200 millions d'années.

Le nom Pangée vient d'un ancien mot grec signifiant "toutes les terres". Ce terme a été utilisé pour la première fois au début du 20e siècle lorsqu'Alfred Wegener a remarqué que les continents de la Terre semblaient s'emboîter comme un puzzle. Il a ensuite développé la théorie de la dérive des continents pour expliquer les formes et les positions des continents et a inventé le titre Pangée lors d'un symposium en 1927 sur le sujet. Cette théorie a évolué au fil du temps dans l'étude moderne de la tectonique des plaques.


Faits basiques

  • Capitale: Sacramento
  • Population: 38 292 687 (estimation de janvier 2009)
  • Les plus grandes villes: Los Angeles, San Diego, San José, San Francisco, Long Beach, Fresno, Sacramento et Oakland
  • Surface: 155 959 milles carrés (403 934 km2)
  • Le point le plus élevé: Mont Whitney à 14 494 pieds (4 418 m)
  • Le point le plus bas: Vallée de la Mort à -282 pieds (-86 m)

8 réponses 8

Si je fais cela, je devrai alors spécifier le nom complet de l'espace de noms avant ma classe statique afin d'y accéder ?

Non, cela n'est pas nécessaire, bien que les détails dépendent de la classe qui utilisera ces types et des déclarations d'utilisation dont elle dispose.

Si vous utilisez uniquement une des espaces de noms de la classe, il n'y a pas d'ambiguïté et vous pouvez continuer et utiliser le type.

Si vous utilisez les deux espaces de noms, vous devrez soit qualifier complètement les utilisations, soit utiliser des alias d'espaces de noms/types pour lever l'ambiguïté des types.


Géographie humaine

La géographie humaine est l'une des deux grandes branches de la géographie, avec la géographie physique. La géographie humaine est aussi appelée géographie culturelle. C'est l'étude des nombreux aspects culturels que l'on trouve dans le monde entier et de leur relation avec les espaces et les lieux d'où ils proviennent et les espaces et les lieux vers lesquels ils se rendent ensuite, alors que les gens se déplacent continuellement dans diverses régions.

Certains des principaux phénomènes culturels étudiés en géographie humaine comprennent la langue, la religion, les différentes structures économiques et gouvernementales, l'art, la musique et d'autres aspects culturels qui expliquent comment et/ou pourquoi les gens fonctionnent comme ils le font dans les régions où ils vivent. La mondialisation devient également de plus en plus importante dans le domaine de la géographie humaine, car elle permet à ces aspects spécifiques de la culture de voyager facilement à travers le monde.

Les paysages culturels sont importants pour le domaine car ils relient la culture aux environnements physiques dans lesquels les gens vivent. Un paysage culturel peut soit limiter, soit favoriser le développement de divers aspects de la culture. Par exemple, les personnes vivant dans une zone rurale sont souvent plus liées culturellement à l'environnement naturel qui les entoure que celles vivant dans une grande zone métropolitaine. C'est généralement l'objet de la "Tradition Homme-Terre" dans les Quatre Traditions de la géographie, qui étudie l'impact humain sur la nature, l'impact de la nature sur les humains et la perception qu'ont les gens de l'environnement.


7 réponses 7

Notez également que si vous utilisez les modèles intégrés pour ajouter des classes à un dossier, il sera par défaut placé dans un espace de noms qui reflète la hiérarchie des dossiers.

Les cours seront plus faciles à trouver et cela seul devrait être une raison suffisante.

  • Le nom du projet/assembly est le même que l'espace de noms racine, à l'exception de la fin .dll
  • La seule exception à la règle ci-dessus est un projet avec une fin .Core, le .Core est supprimé
  • Les dossiers sont égaux aux espaces de noms
  • Un type par fichier (classe, struct, enum, délégué, etc.) permet de trouver facilement le bon fichier

J'ai essayé les deux méthodes sur de petits et grands projets, à la fois avec un seul (moi) et une équipe de développeurs.

J'ai trouvé que la voie la plus simple et la plus productive était d'avoir un seul espace de noms par projet et toutes les classes vont dans cet espace de noms. Vous êtes ensuite libre de placer les fichiers de classe dans les dossiers de projet de votre choix. Il n'y a aucun problème à ajouter des instructions using en haut des fichiers tout le temps car il n'y a qu'un seul espace de noms.

Il est important d'organiser les fichiers source dans des dossiers et, à mon avis, tous les dossiers doivent être utilisés. Exiger que ces dossiers soient également mappés sur des espaces de noms n'est pas nécessaire, crée plus de travail, et j'ai trouvé que c'était en fait préjudiciable à l'organisation car la charge supplémentaire encourage la désorganisation.

Prenez cet avertissement FxCop par exemple :

CA1020 : évitez les espaces de noms avec peu de types
cause : un espace de noms autre que l'espace de noms global contient moins de cinq types https://msdn.microsoft.com/en-gb/library/ms182130.aspx

Cet avertissement encourage le vidage de nouveaux fichiers dans un dossier Project.General générique, ou même la racine du projet jusqu'à ce que vous ayez quatre classes similaires pour justifier la création d'un nouveau dossier. Cela arrivera-t-il jamais?

Recherche de fichiers

La réponse acceptée dit "Les cours seront plus faciles à trouver et cela seul devrait être une raison suffisante."

Je soupçonne que la réponse fait référence au fait d'avoir plusieurs espaces de noms dans un projet qui ne correspondent pas à la structure de dossiers, plutôt que ce que je suggère qui est un projet avec un seul espace de noms.

Dans tous les cas, bien que vous ne puissiez pas déterminer dans quel dossier se trouve un fichier de classe à partir de l'espace de noms, vous pouvez le trouver en utilisant Go To Definition ou la zone de l'explorateur de solutions de recherche dans Visual Studio. De plus, ce n'est pas vraiment un gros problème à mon avis. Je ne consacre même pas 0,1% de mon temps de développement au problème de trouver des fichiers pour justifier son optimisation.

Conflits de noms

Bien sûr, la création de plusieurs espaces de noms permet au projet d'avoir deux classes avec le même nom. Mais est-ce vraiment une bonne chose ? Est-il peut-être plus facile de simplement interdire que cela soit possible? Autoriser deux classes avec le même nom crée une situation plus complexe où 90% du temps les choses fonctionnent d'une certaine manière et puis soudain, vous vous trouvez face à un cas particulier. Supposons que vous ayez deux classes Rectangle définies dans des espaces de noms distincts :

Il est possible de rencontrer un problème selon lequel un fichier source doit inclure les deux espaces de noms. Maintenant, vous devez écrire l'espace de noms complet partout dans ce fichier :

Ou déconner avec une déclaration d'utilisation désagréable :

Avec un seul espace de noms dans votre projet, vous êtes obligé de trouver des noms différents, et je dirais plus descriptifs, comme celui-ci :

Et l'utilisation est la même partout, vous n'avez pas à vous soucier d'un cas particulier lorsqu'un fichier utilise les deux types.

à l'aide d'instructions

La facilité de ne pas avoir à ajouter d'espaces de noms tout le temps lors de l'écriture de code. Ce n'est pas le temps que cela prend vraiment, c'est la rupture du flux d'avoir à le faire et de simplement remplir des fichiers avec beaucoup d'instructions d'utilisation - pour quoi ? Est-ce que ça vaut le coup?

Modification de la structure du dossier du projet

Si les dossiers sont mappés sur des espaces de noms, le chemin du dossier du projet est effectivement codé en dur dans chaque fichier source. Cela signifie que tout changement de nom ou déplacement d'un fichier ou d'un dossier dans le projet nécessite la modification du contenu réel du fichier. À la fois la déclaration d'espace de noms des fichiers dans ce dossier et l'utilisation d'instructions dans tout un tas d'autres fichiers qui font référence aux classes de ce dossier. Bien que les modifications elles-mêmes soient triviales avec l'outillage, elles se traduisent généralement par un gros commit composé de nombreux fichiers dont les classes n'ont même pas changé.

Avec un seul espace de noms dans le projet, vous pouvez modifier la structure du dossier du projet comme vous le souhaitez sans qu'aucun fichier source ne soit modifié.

Visual Studio mappe automatiquement l'espace de noms d'un nouveau fichier au dossier du projet dans lequel il est créé

Malheureusement, mais je trouve que la corvée de corriger l'espace de noms est moindre que la corvée de les traiter. De plus, j'ai pris l'habitude de copier-coller un fichier existant plutôt que d'utiliser Ajouter-> Nouveau.

Intellisense et navigateur d'objets

À mon avis, le plus grand avantage de l'utilisation de plusieurs espaces de noms dans les grands projets est d'avoir une organisation supplémentaire lors de l'affichage des classes dans tout outil qui affiche des classes dans une hiérarchie d'espaces de noms. Même la documentation. De toute évidence, le fait d'avoir un seul espace de noms dans le projet entraîne l'affichage de toutes les classes dans une seule liste plutôt que de les diviser en catégories. Cependant, personnellement, je n'ai jamais été bloqué ou retardé à cause d'un manque de cela, donc je ne trouve pas que cela soit un avantage assez important pour justifier plusieurs espaces de noms.

Bien que si j'écrivais une grande bibliothèque de classe publique, je aurait utiliser probablement plusieurs espaces de noms dans le projet afin que l'assemblage ait l'air soigné dans l'outillage et la documentation.


Dimanche 12 octobre 2014

Campus virtuel ESRI : Premiers pas avec la géodatabase

Au cours de cet exercice, j'ai utilisé le tutoriel de formation disponible sur le site du campus virtuel d'ESRI et ArcMaps 10.2.2. L'utilisation du didacticiel de formation d'ESRI était très similaire à la réalisation d'exercices de notre manuel Maîtriser ArcGIS. Cet exercice était axé sur l'apprentissage des géodatabases et de leur fonctionnement. En cours de route, j'ai pu travailler avec des géodatabases existantes et créer certaines des miennes.

Au cours de la première partie de l'exercice, j'ai beaucoup appris sur les géodatabases. Par exemple, il existe trois types différents de géodatabases : personnelle, fichier et multi-utilisateur. En outre, l'utilisation de géodatabases pour stocker des données spatiales présente des avantages, notamment la possibilité de stocker des données spatiales à un seul endroit et de stocker plusieurs images en une seule avec une mosaïque dans une géodatabase. L'apprentissage de ces informations d'introduction au début de l'exercice suit essentiellement le format que Maîtriser ArcGIS utilise dans ses didacticiels de formation et ses exercices à la fin de chaque chapitre.

Poursuivant l'exercice, j'ai ensuite eu la chance de parcourir les géodatabases existantes et d'apprendre de première main comment elles fonctionnent. Une information importante que j'ai apprise en consultant ces géodatabases est que toutes les classes d'entités du même jeu de classes d'entités doivent avoir le même système de coordonnées. Encore une fois, cette méthode d'apprentissage pratique grâce à l'utilisation de données existantes a été utilisée à la fois dans cet exercice et dans les exercices de Maîtrise d'ArcGIS.

De plus, j'ai appris tout le processus de création d'une géodatabase. Tout d'abord, certaines considérations doivent être prises en compte avant même de créer une géodatabase. L'utilisateur doit évaluer les données existantes pour s'assurer qu'aucun problème ne survient en essayant d'ajouter des données à la géodatabase. Par exemple, les informations souhaitées que l'utilisateur souhaite ajouter à la géodatabase doivent être dans un format auquel la géodatabase s'appliquera. Ces formats incluent les couvertures, les fichiers de formes et les CAO. Il est également très important de sélectionner un système de coordonnées approprié pour vos données. D'autres considérations à prendre en compte avant de créer une géodatabase seraient de déterminer quelles géométries chaque classe d'entités aura et quelle sera la résolution des données.

Poursuivant le processus de création d'une géodatabase, l'utilisateur doit ensuite définir la structure, également connue sous le nom de schéma, pour la géodatabase. La structure définit les attributs et les types de champs des objets et contrôle la manière dont les données seront représentées dans la géodatabase. J'ai appris qu'il existe deux façons de définir la structure d'une géodatabase. La première consiste à importer des données existantes avec un schéma défini déjà en place. La structure importée sera transférée dans la nouvelle géodatabase et structurera toutes les nouvelles données qui y sont insérées. La deuxième façon de définir la structure de la géodatabase consiste à créer de nouvelles données et à définir manuellement le schéma.

La dernière étape de la création d'une géodatabase complète consiste à ajouter les données souhaitées dans la nouvelle géodatabase. Il existe quatre façons différentes d'ajouter des données. Tout d'abord, vous pouvez importer des données existantes. Deuxièmement, vous pouvez utiliser le chargeur de données simple, qui vous permet d'ajouter des entités et des objets dans une classe d'entités ou une table existante. Troisièmement, vous pouvez utiliser le chargeur d'objets, qui est le même que le chargeur de données simple mais peut charger des objets et leur comportement dans une géodatabase. Enfin, vous pouvez ajouter des données à une géodatabase en créant vous-même de nouvelles entités. Cela inclut l'utilisation d'outils de géotraitement et la numérisation de nouvelles données.

Après avoir tout appris sur les géodatabases, j'ai eu l'opportunité de créer ma propre géodatabase. En utilisant le processus que j'avais appris, j'ai d'abord évalué les données que je voulais ajouter à la géodatabase. Ensuite, j'ai créé une géodatabase vide dans le dossier souhaité. Ensuite, j'ai importé la structure souhaitée pour la géodatabase à partir d'une classe d'entités existante. Enfin, j'ai ajouté des données à ma nouvelle géodatabase en important, en chargeant et en créant de nouvelles données.

À la fin de l'exercice, j'ai également pu créer une nouvelle mosaïque dans une géodatabase existante. Pour ce faire, j'ai d'abord ajouté des rasters existants à la mosaïque. Cela m'a permis de voir tous les rasters sur une seule carte assemblés de manière transparente. Ensuite, j'ai appliqué une fonction d'image aux rasters pour améliorer l'image. La fonction image ajoutait l'indice de végétation par différence normalisée. Cela m'a permis de voir clairement les différences sur la carte, où la végétation était verte et l'eau était rouge.

La possibilité de faire ce genre d'activités pratiques était également disponible à la fin de chaque chapitre de Maîtriser ArcGIS, où vous pouviez effectuer leurs exercices sans trop d'aide du livre.

Dans l'ensemble, cet exercice m'a vraiment aidé à en apprendre beaucoup sur les géodatabases et m'a donné une excellente expérience pratique de la création d'une géodatabase et de l'ajout de données à celle-ci. Les exercices de formation du campus virtuel ESRI et les exercices fournis dans Mastering ArcGIS se sont avérés très bénéfiques pour mon apprentissage.


Technologies utilisées dans l'environnement ASU Online

Les cours en ligne de l'ASU proposent une large gamme d'outils d'apprentissage basés sur la technologie, associés à une gamme robuste de ressources. Ceux-ci incluent un accès complet à la bibliothèque en ligne et une assistance technologique 24h/24 et 7j/7.

"Les devoirs des cours en ligne de l'ASU tirent parti des plates-formes d'apprentissage technique qui permettent de brouiller les frontières entre les cours en ligne et sur le campus", a déclaré Heidi Sanborn, professeure adjointe clinique au Edson College of Nursing and Health Innovation de l'ASU. « Les étudiants soumettront des devoirs à l'aide de plateformes d'intelligence artificielle et de réalité virtuelle, de présentations vidéo et de simulations virtuelles, ce qui se traduira par un ensemble complet de compétences directement applicables au monde réel. »

Certains professeurs utilisent Yellowdig, une plate-forme logicielle qui tire parti du partage d'idées et de connaissances académiques grâce à la technologie. Yellowdig s'intègre au système de gestion de l'apprentissage et offre une fonctionnalité de notation automatique, des options d'intégration multimédia riches, des fonctionnalités de brouillon et une interface familière pour les étudiants. Les élèves obtiennent des points grâce au nombre de mots et en participant à des comportements courants sur les réseaux sociaux, comme « aimer » ou « aimer » une publication ou publier un commentaire.

Playposit est un autre outil utilisé dans les cours en ligne ASU. L'outil numérique donne aux professeurs la possibilité de transformer le contenu vidéo en une expérience interactive. Les professeurs peuvent intégrer des activités d'évaluation formative et des questions tout au long d'une vidéo. Les étudiants peuvent horodater, rechercher et télécharger leurs notes numériques.

"Nous comprenons également qu'il existe plusieurs domaines d'apprentissage", a déclaré Jordan Miller, conférencier au College of Health Solutions de l'ASU et coordinateur du baccalauréat en éducation à la santé et promotion de la santé en ligne. « Nous incluons donc du matériel audio et des devoirs d'apprentissage actif pour répondre aux besoins des apprenants auditifs et tactiles-kinesthésiques, en plus du matériel d'apprentissage visuel qui est courant dans les environnements d'apprentissage en ligne. »


3 réponses 3

Une autre approche sera les méthodes de surcharge.
Parce que vous avez une logique différente en fonction du type donné. Et les types n'ont rien en commun (interface/classe abstraite).

Ensuite, l'utilisation sera suffisamment claire

C'est le genre de chose pour laquelle les interfaces ont été conçues. Tout d'abord, définissez une interface commune :

Deuxièmement, implémentez-le dans vos classes objX :

Et enfin, modifiez votre méthode de notification pour accepter le type d'interface comme paramètre :

Je revisite cette réponse car elle semble avoir une bonne visibilité. OP a probablement évolué depuis longtemps, mais pour les autres qui pourraient tomber sur cette réponse, voici une autre solution.

Je crois toujours que les interfaces sont la voie à suivre. Cependant, l'interface suggérée ci-dessus est extrêmement générique et finalement pas très utile. Il rencontre également certaines violations DRY car, comme l'a dit Fabio dans un commentaire, si deux classes objX implémentent des notifications de la même manière, cette approche vous oblige à dupliquer le code entre elles.

Au lieu d'une interface globale, ayez plutôt des interfaces pour chaque tâche de notification spécifique, c'est-à-dire ISMSNotification , IPushNotification , IEmailNotification . Vous pouvez ensuite utiliser le modèle mixin pour donner à chaque instance d'interface une implémentation par défaut de la méthode d'envoi :

Vous pouvez ensuite l'implémenter dans les classes objX comme ceci :

Notez qu'en utilisant cette approche, il est facile non seulement de prendre en charge des objets qui utilisent des systèmes de notification identiques, mais vous pouvez également prendre en charge des objets avec plusieurs systèmes de notification :

Vous remarquerez peut-être que cette approche rend NotificationHelper obsolète puisqu'il n'est plus nécessaire de faire passer les objets par une étape de traitement pour déterminer par quel système de notification traiter l'objet. C'est vrai, et peut-être à juste titre, puisque les objets devraient être pleinement capables de décider cela par eux-mêmes (selon votre mentalité d'aborder ce problème). Cependant, NotificationHelper peut toujours avoir ses utilités, par exemple si vous vouliez prétraiter les informations qui sont envoyées aux services de notification, ou si vous vouliez un point d'entrée commun pour vous aider à vous moquer et à tester.

Une fonctionnalité proposée de C# 8 est la possibilité de donner aux interfaces une implémentation par défaut des méthodes au sein de la définition de l'interface elle-même. Lorsque (si) cela se produit, vous n'avez plus besoin d'utiliser le modèle mixin et pouvez définir directement les implémentations de méthode par défaut dans les interfaces. La fonctionnalité n'a pas encore été finalisée, mais elle pourrait ressembler à ceci :


Conclusion

Avez-vous compris les avantages de l'utilisation du type de données géographiques géographiques ?

  • Les données spatiales ou géospatiales désignent les données sur des points situés à la surface de la Terre.
  • Il peut être utilisé pour la requête « plus proche voisin » pour rechercher les cinémas, restaurants, clubs, etc. à proximité.
  • Il est également pratique pour l'analyse de données géospatiales, comme le rapport que nous avons créé dans Power BI.
  • Les éléments fondamentaux de la création d'une instance géographique sont des éléments tels que le texte connu (WKT), l'identifiant de référence spatiale (SRID) et la méthode STGeomFromText.

Dans cet article, nous n'avons abordé qu'une partie de ce que les données spatiales dans SQL Server peuvent faire pour vous. Vous ne les utilisez peut-être pas tous en même temps, mais les cas d'utilisation les plus courants sont là pour vous aider à démarrer. Pourquoi ne pas explorer davantage les références de Microsoft ci-dessous ?

Si vous aimez cet article, partagez-le avec vos plateformes de médias sociaux préférées.