Suite

Créer une condition if-else avec les zones de liste déroulante de l'API ArcGIS pour JavaScript ?


J'ai une application Web API JavaScript ArcGIS qui utilise plusieurs zones de liste déroulante. Je voudrais créer une instruction conditionnelle if-else entre deux champs de ma couche d'entités. Si un champ est choisi dans la zone de liste déroulante un est 1, alors la zone de liste déroulante trois devrait automatiquement se remplir à 3.

Vous trouverez ci-dessous ma fonction de validation pour mon type de demande.

function changeonevent() { (dijit.byId("cbRequestType").on('change'), changeonevent (MFValue) { if (MFValue == 'Electronic Waste') { dijit.byID("cbMFSubType"). set (' value', 'Copy Machine'); } else if MFValue == '… '{ dijit.by.ID('cbMFSubType').set('value', 'Printer'); }

Désolé pour le commentaire concis, je peux développer ici. Direfooetbarsont vos dijits de zone de liste déroulante :

dijit.byId('foo').on('change', function (new_value) { if (new_value == 'multi_family_refuse') { dijit.byId('bar').set('value', 'bar value 1' ); } else if (new_value == '… ') { dijit.byId('bar').set('value', 'bar value 2'); } else {… } });

si vous avez beaucoup d'états différents, essayez d'utiliserchangerdéclaration à la place.

En utilisant votre exemple mis à jour :

dijit.byId("cbRequestType").on('change', fonction (MFValue) { if (MFValue == 'Electronic Waste') { dijit.byID("cbMFSubType").set('value', 'Copy Machine' ); } else if MFValue == '… '{ dijit.by.ID('cbMFSubType').set('value', 'Printer'); } });

Services de géocodage et localisateurs

Le processus de géocodage transforme une représentation textuelle d'un lieu ou d'une adresse en une représentation cartographique de son emplacement. Le géocodage vous permet de rechercher et d'afficher des adresses sur une carte et de voir comment elles se rapportent aux entités environnantes. Parfois, vous pouvez voir les relations en examinant la carte à d'autres moments, vous pouvez utiliser des outils d'analyse spatiale pour révéler des informations qui ne sont pas facilement visibles. Le travail de géocodage est effectué par un service appelé localisateur.

Les localisateurs aident les utilisateurs à trouver des adresses, des lieux d'intérêt, des parcelles et d'autres actifs. Dans ArcGIS Enterprise , les localisateurs sont alimentés par des services de géocodage. Ils prennent en charge un large éventail d'applications, de la gestion des affaires et des clients à l'expédition et la distribution, en passant par les directions et la navigation. Un localisateur doit être capable de géocoder efficacement les emplacements dans la zone d'intérêt, soit à partir d'une seule requête (comme la barre d'adresse dans une application mobile) ou d'une requête par lots (comme lorsqu'un fichier de table est géocodé dans une classe d'entités).

Il existe de nombreux localisateurs et services de géocodage disponibles dans le commerce, tels que ArcGIS World Geocoding Service . Mais ces localisateurs peuvent ne pas répondre aux besoins spécifiques de votre organisation, et ils n'offrent pas la flexibilité de créer un localisateur à l'aide des données d'actif et d'adresse que votre organisation collecte et gère.

En investissant du temps pour créer votre propre localisateur, vous pouvez vous assurer que vos besoins de géocodage sont satisfaits. Par exemple, une entreprise de services publics locale peut construire un localisateur à l'aide de sa collection de compteurs intelligents au sein d'une municipalité, géocodant chaque compteur pour planifier les itinéraires de ses releveurs.

Vous pouvez créer votre propre localisateur dans ArcMap ou ArcGIS Pro .

Si vous travaillez dans ArcGIS Pro , vous pouvez partager votre localisateur terminé sur votre portail ArcGIS Enterprise, qui publiera également un service de géocodage sur son site ArcGIS Server fédéré. De plus, vous pouvez publier un service de géocodage sur un site ArcGIS Server autonome à partir d'ArcGIS Pro 2.4.

Si vous travaillez dans ArcMap , vous pouvez uniquement partager votre localisateur terminé avec ArcGIS Server en tant que service de géocodage.

Une fois que le localisateur ou le service de géocodage se trouvent dans votre déploiement ArcGIS Enterprise, vous pouvez les utiliser dans des applications clientes, notamment Map Viewer et ArcGIS Web AppBuilder .


ArcUser en ligne

La carte du déversement de pétrole du golfe du Mexique d'Esri montre l'information géographique volontaire (VGI) en action. VGI est un terme appliqué aux informations géographiques qui ont été volontairement recueillies et saisies par des individus. Ce site se concentre sur la marée noire massive qui a commencé le 20 avril 2010, à la suite d'une explosion et d'un incendie à bord d'une plate-forme de forage semi-submersible.

Les sites Web de VGI facilitent la création, l'assemblage et la diffusion de contenu généré par les utilisateurs. Sur les fonds de carte fournis, les utilisateurs peuvent définir leur propre contenu sur la base d'une connaissance directe de la géographie locale. L'application cartographique Oil Spill est optimisée par ArcGIS Server 10 bêta hébergée dans l'infrastructure Amazon Web Service. Il intègre des informations fournies par VGI telles que des liens vers des photos en ligne, des sites Web, des flux GeoRSS, des tweets et des vidéos YouTube qui sont combinés avec des données de fond de carte faisant autorité qui incluent la couverture des plans de rue, des images satellite, des cartes topographiques, des cartes de navigation et des données sur les éléments sensibles à l'environnement. des sites. Les visiteurs peuvent placer de nouvelles informations sur la carte en choisissant une icône d'entité, en cliquant sur la carte et en créant un lien vers le contenu à ajouter. Apprenez-en plus en visitant le site.

VGI est un exemple spécifique du modèle de collecte d'informations basé sur la communauté qui présente un contenu développé par les utilisateurs finaux. Amazon et Trip Advisor sont des exemples familiers de sites qui intègrent les commentaires de la communauté des utilisateurs. Ces commentaires fournissent des informations provenant de vrais consommateurs ayant une connaissance directe du sujet et aident les acheteurs potentiels à prendre des décisions. Vous connaissez probablement aussi déjà les sites qui promeuvent la géocollaboration et la cartographie communautaire. Open Street Map et WikiMapia sont des exemples de ce type de site. Ces sites et d'autres sites de géocollaboration similaires donnent accès à des sources informelles de données et à des connaissances locales sur la géographie d'un lieu.

Cet exemple interactif est utilisé pour démontrer les fonctionnalités d'édition Web de base. Les développeurs peuvent utiliser l'exemple de code pour ajouter l'édition Web aux applications Web personnalisées.

Tous les sites qui dépendent du contenu généré par les utilisateurs doivent motiver les gens à agir volontairement. Les contributeurs doivent comprendre comment le contenu qu'ils collectent soutient l'objectif global du site. De plus, les sites qui permettent aux utilisateurs finaux de saisir des informations doivent être gérés par un administrateur pour s'assurer que le contenu publié est crédible, pertinent et non offensant dans son contenu ou sa langue et pour éviter les problèmes de violation du droit d'auteur. Lorsque les utilisateurs finaux ont été motivés avec succès et contribuent à la carte, les administrateurs filtrent la géométrie de la carte pour éviter l'encombrement qui pourrait rendre la carte illisible. Par exemple, dans les endroits qui ont une couverture cartographique peu détaillée ou une cartographie obsolète ou expressive, la saisie rapide d'informations par la communauté des utilisateurs peut entraîner des cartes dont les formes se chevauchent. L'administration du site est abordée plus en détail plus loin dans cet article.

Configuration requise pour la création d'un site VGI à l'aide d'ArcGIS 10

La création d'un site VGI nécessite non seulement l'assemblage de personnes et de logiciels, mais également la conception d'un workflow, d'un schéma de données, d'une géodatabase et d'un modèle de carte. Une discussion de ces exigences suit.

Gens

Le processus de conception, de construction, de mise en œuvre et d'administration du site et de mise en œuvre de la mise à jour Web nécessitera un ou plusieurs professionnels du SIG ayant une connaissance d'ArcSDE, de la conception de géodatabase et de l'utilisation d'ArcMap pour la conception de cartes Web et une connaissance des services de publication à l'aide d'ArcGIS Server. Une ou plusieurs personnes seront également nécessaires pour agir en tant qu'administrateurs du site afin de maintenir la crédibilité du contenu. En option, le rôle de l'administrateur peut être limité à la mise en place d'une politique de sécurité pour garantir que les données ne sont accessibles et/ou modifiées que par un groupe sélectionné de personnes. Cependant, le facteur le plus important pour le succès du site est une communauté d'utilisateurs disposée à fournir volontairement des informations.

Composants logiciels requis

L'application Web de collecte de données doit utiliser ArcGIS 10 et l'une des API de cartographie Web ArcGIS qui a été configurée afin que tous les composants de mise à jour des données géographiques soient activés. Les composants suivants, configurés comme décrit ici, sont requis lors de la configuration d'un site VGI :

  • Géodatabase ArcSDE contenant des entités configurées pour gérer les mises à jour Web
  • Un document ArcMap qui référence une ou plusieurs classes d'entités à partir d'une géodatabase ArcSDE
  • Un modèle d'entité qui définit les propriétés requises pour créer une nouvelle entité
  • Le document ArcMap et son modèle associé, publiés en tant que service de carte avec accès aux fonctionnalités
  • Une application Web avec des contrôles d'interface utilisateur pour apporter des modifications à la géométrie et/ou aux attributs

Conception du flux de travail du schéma de classe d'entités ArcSDE

Commencez par préparer les classes d'entités ArcSDE qui participeront aux workflows de mise à jour. Gardez à l'esprit que les champs et leurs noms (ou alias, s'ils sont fournis) seront visibles pour l'utilisateur final de l'application d'édition. Une fois la classe d'entités ajoutée à ArcMap en tant que couche, les propriétés de la table, telles que le nom d'alias et la visibilité, peuvent être affinées davantage. Veuillez noter que l'ordre des champs ne peut être défini que dans la table des classes d'entités, ils doivent donc être dans l'ordre dans lequel vous souhaitez que l'utilisateur final les voie dans l'application Web. D'autres éléments à prendre en compte à ce stade de la préparation des données comprennent

  • Création d'une classe d'entités de géodatabase distincte pour prendre en charge la mise à jour Web si le contenu existe également dans la géodatabase faisant autorité
  • Comment voulez-vous que les données attributaires soient représentées pour les utilisateurs qui ne sont peut-être pas familiers avec le SIG ?
  • Définir des sous-types et des domaines (dans la mesure du possible) pour simplifier l'expérience d'édition d'attributs
  • Décider si les données peuvent être enregistrées comme versionnées ou modifiées dans un environnement non versionné (les classes d'entités qui participent à des types de données non simples, tels que la topologie ou les données réseau, doivent être enregistrées comme versionnées.)
  • Configuration de la classe d'entités pour prendre en charge les pièces jointes dans la géodatabase. (Une classe d'entités qui a été configurée pour utiliser des pièces jointes doit être ajoutée et publiée avec la carte.)

Préparation de la géodatabase ArcSDE

Lors de la préparation de la géodatabase ArcSDE, n'oubliez pas que toutes les données qui seront ajoutées à la carte pour la mise à jour doivent provenir d'une seule géodatabase ArcSDE et doivent être enregistrées avec cette géodatabase. Examinez le fichier de connexion à la base de données pour déterminer si l'accès aux classes d'entités sera contrôlé à l'aide de l'authentification du système d'exploitation ou de l'authentification de la base de données.

Dans le gestionnaire IIS de Windows Vista, cliquez sur Ajouter une application pour ajouter votre dossier MyVGI.

Définition des propriétés de la couche et de la table dans ArcMap

La symbologie d'entité et les noms de couche définis dans la carte seront exposés à l'utilisateur final de l'application Web. Prenez grand soin de choisir des symboles qui seront significatifs pour les utilisateurs non SIG et créez des alias pour toutes les couches.

  • Lors de la conception des symboles qui seront utilisés lors de la mise à jour des entités, ajoutez temporairement les couches de fond de carte qui seront également utilisées avec l'application Web afin de voir comment les entités apparaîtront dans la légende et sur la carte lorsque l'application Web est utilisée. Dans ArcMap, vous pouvez modifier davantage la façon dont les couches modifiables apparaîtront dans l'application Web pour les utilisateurs finaux.
  • Créez des alias pour tous les champs de table exposés dans l'interface de mise à jour Web dans la géodatabase ou dans ArcMap en modifiant la table attributaire de cette classe d'entités. Vous pouvez masquer des champs en modifiant leur visibilité dans ArcMap. Ne masquez pas le champ Forme&mdash, cela empêchera la géométrie de cette couche de s'afficher dans l'application Web. Les champs peuvent également être mis en lecture seule. L'ordre des champs est défini dans le schéma de classe d'entités&mdashnot dans ArcMap en modifiant les propriétés de la couche.
  • Lors de la publication de la carte qui sera la source du service de mise à jour, n'incluez que les couches qui seront mises à jour dans l'application Web. Les couches de fond de carte et les couches opérationnelles qui ne seront pas modifiées dans l'application d'édition Web doivent être publiées dans des services distincts et mélangées avec le service d'édition dans l'application Web.

Création d'un modèle de fonction

Un modèle d'entité regroupe les paramètres qui ont été définis dans ArcMap et les met à la disposition du service Web qui sera utilisé pour la mise à jour. Les modèles de fonctionnalités définissent l'expérience de modification des fonctionnalités ainsi que les informations requises pour créer une nouvelle fonctionnalité, que ce soit sur le bureau ou sur le Web. Ces informations incluent la couche où la nouvelle entité sera stockée, les attributs avec lesquels une nouvelle entité sera créée et l'outil par défaut utilisé pour créer cette entité. De nouveaux modèles d'entités sont créés et les modèles existants sont modifiés dans ArcMap. Les modèles d'entités sont enregistrés avec la carte utilisée pour les créer.

Lors de la création d'un modèle d'entité, vous remarquerez que les couches ArcMap qui sont symbolisées avec une valeur unique ou des rendus catégoriels auront chaque catégorie de symboles exposée en tant que couche distincte dans le modèle d'entité (et par la suite dans l'interface utilisateur de mise à jour Web). Lorsque la classe d'entités est également sous-typée, chaque catégorie du modèle d'entités conservera également les valeurs d'attribut par défaut telles que définies pour ce sous-type. Si vous n'utilisez pas de sous-types, définissez la valeur de champ par défaut pour chaque modèle d'entité, le cas échéant. Cela rend l'expérience d'édition d'attributs intuitive pour les utilisateurs finaux.

Publication de la carte et activation de l'accès aux fonctionnalités sur le service

Enfin, la carte est publiée sur ArcGIS Server avec les fonctionnalités de cartographie et d'accès aux entités activées. La capacité de mappage et la capacité d'accès aux fonctionnalités créent des URL pour les services générés. Alors qu'un service de carte diffuse une image d'entités, un service d'entités vous permet de diffuser des entités sur Internet. La mise à jour sur le Web fonctionne via un nouveau type de service disponible avec ArcGIS 10 : le service d'entités. En plus de servir des entités, le service d'entités utilise également la symbologie définie dans la carte pour restituer les entités. Les opérations de service d'entités incluent l'édition et l'interrogation.

Définir l'expérience utilisateur

L'expérience de l'utilisateur final est directement affectée par la conception de la classe d'entités, de la carte et du modèle d'entité. Les composants API de cartographie Web prêts à l'emploi pour l'édition incluent le sélecteur de modèles, l'inspecteur d'attributs et l'éditeur de pièces jointes.

  • Le sélecteur de modèles affiche une galerie de modèles d'une ou plusieurs couches d'entités. Pour chaque modèle, le symbole et l'étiquette définis dans la carte sont affichés. Notez que le développeur de l'application peut écraser ces symboles dans le code.
  • L'inspecteur d'attributs affiche les attributs des entités sélectionnées à partir d'une ou plusieurs couches d'entités. Si la couche est modifiable, les attributs de l'entité seront modifiables. Le widget Inspecteur d'attribut honore les domaines et les sous-types qui ont été définis par le service d'entités.
  • L'éditeur de pièces jointes prend en charge l'affichage des pièces jointes pour les couches d'entités pour lesquelles les pièces jointes sont activées. Si les couches d'entités proviennent d'un service d'entités, l'éditeur de pièces jointes inclura la possibilité de créer, afficher et supprimer des pièces jointes. Le développeur/configurateur d'applications peut également déterminer les composants d'édition d'API à inclure dans l'application d'édition Web pour adapter l'expérience d'édition à l'utilisateur final et au type de contenu collecté.

L'administration garantit la qualité du contenu généré par les utilisateurs

Un site Web VGI peut devenir inutilisable s'il n'est pas modéré par un administrateur. Un administrateur élimine le langage offensant, les données inexactes, le contenu non lié à l'objectif du site et le contenu qui pourrait constituer une violation du droit d'auteur. Une meilleure pratique pour les sites VGI est la création d'une application simple qui permet aux utilisateurs non SIG de surveiller le contenu volontaire et de le modifier si nécessaire. La sécurité est une autre fonction administrative. Envisagez d'implémenter la sécurité du service ArcGIS Server pour restreindre l'accès au service d'entités modifiables. N'oubliez pas que le niveau de sécurité est défini au niveau du service, et non fonctionnalité par fonctionnalité.

Faites-le vous-même : utilisez un échantillon VGI existant pour créer votre propre site VGI

Suivez ces étapes pour utiliser un exemple d'application Web qui contient des fonctionnalités d'édition de fonctionnalités comme modèle pour créer votre propre site VGI. Cet exercice pratique ne nécessite pas que vous ayez ArcGIS Server 10, mais il nécessite

  • Un navigateur Web et un accès à Internet
  • Un serveur Web exécuté sur votre ordinateur (Microsoft IIS est utilisé dans cet exemple.)
  • Un éditeur de texte (Microsoft Notepad est utilisé dans cet exemple.)

Voir l'échantillon en direct d'une application VGI de base

  1. Accédez au Centre de ressources de l'API JavaScript ArcGIS à l'adresse http://help.arcgis.com/en/webapi/javascript/arcgis/.
  2. Cliquez sur l'onglet Exemples et, sous Exemples d'API JavaScript, développez le livre d'édition.
  3. Cliquez sur le premier échantillon, Éditeur par défaut.
  4. Cliquez sur le lien Afficher l'échantillon en direct dans la zone Description et explorez le fonctionnement de l'échantillon.
  5. Laissez l'échantillon en direct ouvert.

Copiez le code source de l'application

Le widget Éditeur par défaut vous permet de créer et de modifier des entités. Il comprend un sélecteur de modèles, un inspecteur d'attributs et un éditeur de pièces jointes. Dans ces prochaines étapes, vous allez voler le code de l'ensemble de l'échantillon afin de pouvoir incorporer ces composants fonctionnels dans un site VGI hébergé sur votre machine.

  1. Tout d'abord, créez un dossier appelé MyVGI sous la racine de votre serveur Web (c'est-à-dire C:inetpubwwwrootMyVGI).
  2. Ensuite, dans le navigateur contenant l'échantillon en direct pour l'éditeur par défaut, cliquez avec le bouton droit sous le sélecteur de modèles (situé à droite de la carte) et choisissez Afficher la source (ou Afficher la source de la page, selon le navigateur Web utilisé). Sélectionnez tout le texte source de la page, cliquez avec le bouton droit de la souris et cliquez sur Copier.
  3. Maintenant, ouvrez le Bloc-notes Microsoft et collez le contenu dans un nouveau fichier Bloc-notes. Enregistrez le fichier dans le dossier MyVGI et nommez-le sample_VGI.html. Modifiez le Type de fichier sur Tous les fichiers afin que le fichier n'essaie pas d'enregistrer en tant que fichier texte (.txt).
  4. Enfin, accédez à votre dossier MyVGI et double-cliquez sur le fichier sample_VGI.html que vous venez de créer pour ouvrir à nouveau l'application & mdash cette fois, vous ouvrirez le fichier à partir du code sur votre machine. La fonctionnalité d'édition ne fonctionnera pas correctement à ce stade, mais vous corrigerez cela à l'étape suivante.

Faire de MyVGI Folder une application Web à l'aide d'IIS

Dans cette étape, vous utiliserez Microsoft IIS pour créer une application Web à partir du dossier MyVGI.

  1. Ouvrez votre Panneau de configuration, double-cliquez sur Outils d'administration, puis double-cliquez sur Gestionnaire des services Internet (IIS).
  2. Bien que le gestionnaire IIS puisse sembler légèrement différent pour les systèmes d'exploitation XP, Vista et Windows 7, la tâche est la même pour les trois&mdashdéveloppez l'arborescence IIS pour exposer votre dossier MyVGI qui sera situé dans le dossier du site Web par défaut, puis ajoutez ou créer l'application.
  3. Pour Vista, dans le dossier Site Web par défaut, cliquez avec le bouton droit sur le dossier MyVGI et cliquez sur Ajouter une application. Dans la boîte de dialogue Ajouter une application, nommez l'alias MyVGI et, si nécessaire, définissez le chemin physique en cliquant sur le bouton points de suspension et en naviguant jusqu'à votre dossier MyVGI. Sélectionnez-le et cliquez sur OK, puis cliquez à nouveau sur OK pour fermer la boîte de dialogue Ajouter une application.
  4. Pour XP, dans le dossier Site Web par défaut, sélectionnez MyVGI et choisissez Propriétés. Dans l'onglet Répertoire sous Paramètres de l'application, cliquez sur Créer. Cliquez sur OK.
  5. Fermez le Gestionnaire IIS.

Modifier le code d'application

Maintenant que votre application est reconnue par votre serveur Web, vous allez apporter quelques modifications mineures au code de l'application afin qu'elle fonctionne sur votre machine locale.

  1. Tout d'abord, dans votre navigateur Web, revenez au Centre de ressources de l'API ArcGIS pour JavaScript et cliquez sur l'onglet Concepts. Développez le livre Utilisation des services ArcGIS Server et cliquez sur Utilisation de la page proxy.
  2. Cliquez sur le lien Télécharger et configurer (dans le corps du texte du sujet) et cliquez sur proxypage_net.zip pour télécharger le fichier compressé. Enregistrez-le dans votre dossier MyVGI.
  3. Extrayez le proxypage_net.zip dans le dossier MyVGI.
  4. Dans le Bloc-notes, ouvrez votre fichier sample_VGI.html et recherchez la section qui commence,

Changer le chemin dans la ligne

Enregistrez et fermez sample_VGI.html.

Remarque : assurez-vous de remplacer <your_machine_name> par le nom de votre machine.

Ouvrez un navigateur Web et accédez à votre application Web MyVGI :

http://<votre nom de machine>/MyVGI/sample_VGI.html

N'oubliez pas de remplacer <your machine name> par le nom de votre machine.

L'apparence et les fonctionnalités de l'application seront exactement les mêmes que celles de l'exemple du Centre de ressources de l'API JavaScript, sauf qu'elle est désormais hébergée sur votre machine.

Remplacer le service de fonctionnalités par un service de fonctionnalités différent

Maintenant que vous hébergez l'application MyVGI, vous allez remplacer le service de fonctionnalités qu'il utilise par un service de fonctionnalités différent. Cette action représente ce que vous pourriez faire si vous utilisiez votre propre service d'entités hébergé sur votre ArcGIS Server. Dans ce cas, vous emprunterez un service de fonctionnalités différent à Esri.

Dans votre navigateur Web, accédez à

Cette page est le répertoire des services ArcGIS pour sampleserver3 chez Esri. Le répertoire des services fait partie de toute implémentation ArcGIS Server et permet d'explorer et d'accéder aux points de terminaison REST des services ArcGIS Server. Gardez à l'esprit que les services sur sampleserver3 sont uniquement à des fins de démonstration et ne doivent pas être utilisés dans vos applications de production.

  1. Cliquez sur BloomfieldHillsMichigan pour exposer les services dans ce dossier. Ces services ont été créés selon le processus décrit dans la première partie de cet article.
  2. Cliquez sur BloomfieldHillsMichigan/LandusePlanning (FeatureServer) pour afficher une liste des couches de ce service. Le service contient trois couches : les points d'intérêt d'utilisation des terres, les entités linéaires d'utilisation des terres et les zones d'aménagement du territoire.
  3. Cliquez sur Land Use Points of Interest (0) et copiez l'URL de la barre d'adresse du navigateur dans le presse-papiers de votre système.

Si nécessaire, ouvrez à nouveau votre fichier sample_VGI.html dans le Bloc-notes et recherchez la ligne qui commence comme suit (vers le milieu du fichier) :

var operationsPointLayer = new esri.layers.FeatureLayer

Remplacez l'URL de cette couche d'entités par l'URL que vous avez copiée pour les points d'intérêt d'utilisation des terres (0).

La carte a maintenant été supprimée du contenu VGI qui s'accumule dans l'exemple d'application ArcGIS API for JavaScript, et un nouvel ensemble de symboles d'entités a remplacé l'ensemble précédent dans le modèle de mise à jour.

Prenez quelques instants pour ajouter du nouveau contenu à la carte.

Gardez à l'esprit que bien que cette application soit hébergée sur votre machine, les couches d'entités sont stockées dans une géodatabase hébergée par Esri. Pour que cette application soit vraiment la vôtre, vous devez créer vos propres couches d'entités, comme décrit dans la première partie de cet article.

Conclusion

Cet exercice vous a guidé tout au long du processus de configuration de l'un des exemples d'édition sur votre ordinateur local et de mise à jour des références au service d'entités pour modifier le contenu qui sera modifié par l'application.


Présentation de la méthode

Active l'heure sur une couche si des informations temporelles sont stockées dans des champs.

Extrude des entités 2D dans une couche pour afficher la symbologie 3D.

Obtient la définition CIM d'une couche.

Renvoie la sélection d'un calque sous la forme d'un ensemble Python d'ID d'objet.

Renvoie une liste Python d'objets LabelClass dans un calque.

Renvoie une liste Python d'objets Layer à partir d'un groupe de calques ou d'un calque composite.

Enregistre un calque dans un fichier de calque ( .lyrx ).

Définit la définition CIM d'une couche.

Définit la sélection d'un calque à l'aide d'une liste Python d'ID d'objet.

Utilisé pour déterminer si un type de calque particulier prend en charge une propriété sur l'objet calque. Tous les calques ne prennent pas en charge le même ensemble de propriétés. La propriété supports peut être utilisée pour tester si un calque prend en charge cette propriété avant de tenter de la définir.

Remplace les propriétés de connexion à l'aide d'un dictionnaire ou d'un chemin d'accès à un espace de travail.

Met à jour une couche à partir d'une chaîne JSON.


Présentation du schéma

Un projet Workforce est composé de deux couches de fonctionnalités, de trois tables et de trois domaines de valeurs codées au sein d'un seul service de fonctionnalités. Le service de fonctionnalité Workforce est généré automatiquement au moment de la création du projet avec un dossier, un groupe et les cartes Web du répartiteur et du travailleur. Le service d'entités a une relation d'élément avec les deux cartes Web et se trouve dans un schéma prédéfini, illustré ci-dessous.

Certains noms de champs sont différents dans ArcGIS Enterprise . Au lieu de OBJECTID , GlobalID , CreationDate , Creator , EditDate et Editor , ils sont respectivement objectid , globalid , created_date , created_user , last_edited_date et last_edited_user .

Service de fonctionnalité de la main-d'œuvre

Le service d'entités Workforce contient les couches et les tables suivantes :

  • Couche de travailleurs
    • Une couche d'entités ponctuelles qui contient un enregistrement pour chaque travailleur mobile inclus dans le projet.
    • Comprend des informations sur le travailleur mobile, y compris son numéro de contact et son titre de poste.
    • Le nom d'utilisateur de l'organisation ArcGIS du travailleur mobile est stocké dans le champ userid.
    • La couche suit qui a créé et mis à jour pour la dernière fois chaque travailleur mobile.
    • Il existe une relation clé primaire-clé étrangère (PK-FK) de GlobalID à Assignments.workerid . L'utilisation de la valeur GlobalID de la couche Workers comme valeur du champ Assignments.workerid associe le travailleur mobile à toutes ses affectations.
    • La couche a les associations de domaines de valeurs codées suivantes :
      • Le champ de statut est associé au domaine de valeurs codées Worker_Status pour suivre le statut du travailleur mobile.
      • Une couche d'entités ponctuelles qui contient un enregistrement pour chaque affectation.
      • Comprend des informations sur l'affectation, y compris son état, son emplacement et sa description, entre autres.
      • La couche suit qui a créé et mis à jour chaque affectation en dernier.
      • Les pièces jointes sont activées sur la couche d'entités.
      • La couche contient des clés étrangères pour certains champs, associant des valeurs d'une autre couche à cette couche :
        • Assignments.workerid à Workers.GlobalID .
        • Assignments.dispatcherid à Dispatchers.GlobalID .
        • Assignments.workorderid peut être utilisé comme clé étrangère vers un système externe, tel qu'un système de gestion des actifs ou de la maintenance, en fournissant des valeurs provenant de l'autre système.
        • Il existe une relation PK-FK de GlobalID à Assignment.assignmenttype . L'utilisation de la valeur GlobalID de la couche Affectations comme valeur de champ Affectations.assignmenttype associe l'affectation au type d'affectation.
        • Le champ d'état est associé au domaine de valeurs codées Assign_Status pour suivre l'état d'assignation.
        • Le champ de priorité est associé au domaine de valeur codée Priorité pour gérer la priorité des affectations de travail.
        Mise en garde:

        Si une affectation a une valeur nulle pour sa géométrie, elle n'apparaîtra pas dans Workforce .

        • Une table qui contient un enregistrement pour chaque répartiteur du projet.
        • Comprend des informations sur le répartiteur, y compris son nom et son numéro de téléphone.
        • Le nom d'utilisateur de l'organisation ArcGIS du répartiteur est stocké dans le champ userid.
        • La couche suit qui a créé et mis à jour en dernier chaque répartiteur.
        • Il existe une relation PK-FK entre GlobalID et Assignments.dispatcherid . L'utilisation de la valeur GlobalID de la table Dispatchers comme valeur de champ Assignments.dispatcherid associe le répartiteur à toutes les affectations qu'il a attribuées.
        • Une table qui contient un enregistrement pour chaque type d'affectation dans le projet.
        • Cette table est vide lors de la création du projet. Il contient des valeurs une fois que les types d'affectation ont été ajoutés lors de la configuration du projet.
        • Il comprend les descriptions des types d'affectation spécifiés par le propriétaire du projet lorsque les types d'affectation ont été ajoutés.
        • Il existe une relation PK-FK de GlobalID à Assignments.assignmenttype . L'utilisation de la valeur du champ GlobalID du tableau Types d'affectation associe le type d'affectation aux affectations.
        • Une table qui contient un enregistrement pour chaque intégration d'affectation dans le projet.
        • Cette table contient un enregistrement pour l'intégration avec ArcGIS Navigator lors de sa création.
        • Le tableau Intégrations des affectations contient les attributs définis par l'utilisateur suivants, en plus des attributs standard définis par le système :
          • app : un identifiant pour l'application intégrée qui aidera à trouver les configurations d'intégration nécessaires pour remplir l'expérience de configuration dans l'application Web. Par exemple, arcgis-collector ou https://collector.arcgis.app .
          • assignationtype : l'ID global d'un type d'affectation si l'intégration ne doit être affichée que pour certains types d'affectation. Une valeur nulle indique que l'intégration prend en charge tous les types d'affectation dans le projet.
          • invite : l'invite affichée dans le client mobile. Par exemple, accédez à l'affectation.
          • urltemplate : l'URL du modèle utilisé pour appeler l'application intégrée.

          Les trois domaines de valeurs codées sont les suivants :

          • Assign_Status : stocke les sept valeurs valides pour l'état d'une affectation. Les valeurs de 0 à 20 sont réservées pour une utilisation future par Workforce . Les clients qui souhaitent stocker leurs propres valeurs dans ce champ doivent choisir une valeur en dehors de cette plage.
          • Priorité : stocke les quatre valeurs valides pour la priorité d'une affectation.
          • Worker_Status : stocke les trois valeurs valides pour l'état du travailleur mobile.

          Pour les valeurs des domaines de valeurs codées, voir le diagramme de schéma Workforce.

          Relation entre les éléments de la carte Web

          La relation d'élément entre le service d'entités Workforce et les cartes Web du travailleur et du répartiteur a la définition suivante :

          • Type de relation : WorkforceMap2FeatureService
          • Type d'origine—Carte Web
          • Type de destination—Service d'entités
          • Des règles
            • mustOwnAllItems : le propriétaire du projet établit la relation et doit posséder la carte associée.
            • title : le titre du projet.
            • snippet — La brève description du projet.
            • miniature : la miniature du projet.
            • typeKeywords — Workforce Worker est ajouté à la carte Workforce et Workforce Dispatcher est ajouté à la carte Dispatcher.

            1 réponse 1

            D'après ce que j'ai compris, vous utilisez Étiqueter afficher le texte en fonction de la sélection dans la liste déroulante.

            Dans ce cas, vous devez définir le Texte propriété de votre Étiqueter champ basé sur la valeur de votre champ Choisissez.

            Pour vérifier que la valeur de Choise est égale à "Choise1" ou non, vous devez utiliser fonction SI.

            Vous devez utiliser votre formule dans Texte propriété du champ Label quelque chose comme ci-dessous :

            Noter: J'ai utilisé DataCardValue2.Text et DataCardValue2.Value .


            Gestionnaire de crowdsourcing

            Crowdsource Manager, un modèle d'application configurable associé aux applications de collecte de données telles que Crowdsource Reporter, permet aux utilisateurs au sein d'une organisation d'examiner les problèmes ou les observations soumis via l'application Reporter. L'application peut être utilisée sur des tablettes et des ordinateurs de bureau.

            L'application Crowdsource Manager présente une ou plusieurs cartes qui peuvent être utilisées pour examiner les problèmes ou les observations signalées. Les utilisateurs s'authentifient avec leurs informations d'identification ArcGIS et recherchent des modèles et des clusters, examinent les détails du problème, mettent à jour l'état et attribuent la responsabilité.

            Conditions

            Crowdsource Manager nécessite un logiciel spécifique.

            • Portail pour ArcGIS, ArcGIS Enterprise ou ArcGIS Online
            • L'application est optimisée pour l'affichage sur des ordinateurs de bureau et des tablettes utilisant tous les navigateurs pris en charge par ArcGIS Online, Portal for ArcGIS et ArcGIS Enterprise.

            Ce que vous obtenez

            L'application Crowdsource Manager peut être configurée dans ArcGIS Online, Portal for ArcGIS ou ArcGIS Enterprise sans télécharger l'application. Cependant, si vous souhaitez héberger l'application sur votre propre serveur, l'application est disponible au téléchargement depuis GitHub.

            Quoi de neuf

            Vous trouverez ci-dessous les dates de sortie et les notes de Crowdsource Manager.

            • Un correctif pour le BUG-000133477 pour améliorer la sécurité des applications en mettant à jour la version de la bibliothèque JQuery.
            • Ajout d'une option de configuration pour prendre en charge la réinitialisation des filtres et des sélections existants lors de l'utilisation du bouton d'actualisation.
            • Application améliorée pour prendre en charge l'intervalle d'actualisation de la carte Web.
            • Ajout d'un message d'obsolescence du navigateur Internet Explorer et Microsoft Edge Legacy.
            • Application mise à jour pour utiliser la version 3.35 de l'API ArcGIS pour JavaScript.
            • Enhanced the performance of the Select All button when accessing a large number of features.
            • Replaced the search button with a search textbox.
            • Updated app to use version 3.34 of the ArcGIS API for JavaScript.
            • Added support for interactive selection of multiple records using shift+click.
            • Added button to select all records and clear selected records.
            • Updated app to use version 3.33 of the ArcGIS API for JavaScript.
            • Updated app to use version 3.32 of the ArcGIS API for JavaScript.
            • Updated app to use version 3.31 of the ArcGIS API for JavaScript.
            • Updated app to use version 3.30 of the ArcGIS API for JavaScript.
            • Updated app to use version 3.29 of the ArcGIS API for JavaScript.
            • Application now honors detailed editing settings, such as the option for editors to only edit the features they created.
            • Added a configurable option to support adding and removing attachments from features.
            • Added a configurable option to support exporting the attributes of the currently selected rows to a CSV file.
            • Updated app to use version 3.28 of the ArcGIS API for JavaScript.
            • Updated app to use version 3.27 of the ArcGIS API for JavaScript.
            • Updated app to use version 3.26 of the ArcGIS API for JavaScript.
            • A fix for BUG-000110591 to improve search results from layers with sets of filters.
            • A fix for an issue with writing default values to fields not exposed for editing.
            • An enhancement to support filtering on values that contain apostrophes.
            • Updated app to use version 3.24 of the ArcGIS API for JavaScript.
            • Added the ability to build a URL that links directly to a record in Manager.
            • Added the ability to see pop-up information for non-editable layers.
            • Added configuration options to display a basemap toggle and a legend in the map area.
            • Updated app to use version 3.23 of the ArcGIS API for JavaScript.
            • A fix for BUG-000101689 to correct the display of subtype-dependent fields.
            • A fix for BUG-000105122 to display layers that do not have an OBJECTID field.
            • Updated app to use version 3.22 of the ArcGIS API for JavaScript.
            • A fix for BUG-000102143 to correct the display of the number of currently selected records.
            • A fix for BUG-000102247 to improve support for layers with visibility ranges.
            • Added support for layer that have Update, but not Add, capabilities.
            • Updated app to use version 3.21 of the ArcGIS API for JavaScript.
            • Support for shared theme
            • Added support for feature collections as reference layers.
            • Added a configurable option to display the details, media, or related record panel first upon selecting a record.
            • Updated app to use version 3.20 of the ArcGIS API for JavaScript.
            • A fix for BUG-000100542 to improve how the app behaves with subtypes and integer coded domain values that use the value 0.
            • A fix for BUG-000099365 to allow editing record in related table layers that have a Global ID field.
            • A fix for BUG-000099306 to display the correct icons for different attachment file types.
            • Filters on the comment table are now honored to facilitate comment moderation.
            • Updated app to use version 3.19 of the ArcGIS API for JavaScript.
            • Added the ability to create related records (submit comments), and to include attachments with those new related records.
            • Changed the behavior when selecting features on the map to allow selection of stacked features. Now all features at or near to the selection location will be selected, or will be added to the current selection with the CTRL key is pressed.
            • Hyperlinked images and videos now display int he media panel.
            • Addressed several image caption display issues in the media panel.
            • Fixed a bug where the favicon displayed in the browser was always the application logo.
            • Updated app to use version 3.18 of the ArcGIS API for JavaScript.
            • Ability to update attributes for multiple features by holding down the CTRL key and clicking multiple features in the table or map.
            • Ability to filter the map and table by attribute values using the Ask for Value filters set in the map.
            • Ability to filter the map and table by time using the time slider settings configured in the map.
            • Added a configuration option to enable display of uneditable layers along with each editable layer.
            • Added support for maps with multi-layer basemaps.
            • Added the ability to edit attributes of related records.
            • Added a media display panel for images and charts that are attached to each record.
            • Updated app to use version 3.17 of the ArcGIS API for JavaScript.
            • Simplified app interface when working with a single map and a single layer.
            • Improved support for right-to-left languages.
            • Added ability to display related records using the pop-up configuration of the related layer.
            • Updated to use version 3.16 of the ArcGIS API for JavaScript.
            • Fixed a bug that was causing dates to be displayed in the incorrect format.
            • Updated to use version 3.15 of the ArcGIS API for JavaScript.
            • Removed the horizontal constraint on the app logo.
            • App state (table view, map view) is maintained on app refresh.
            • A series of enhancements and improvements to the user interface.
            • An enhancement to the table removing geographic filtering.
            • An enhancement to allow the application to be accessed from a public URL.
            • Updated to use version 3.14 of the ArcGIS API for JavaScript.
            • First release of Crowdsource Manager

            You may be interested in

            ArcGIS Solutions for Local Government includes several related maps and apps that also can be configured in your organization:

            Crowdsource Manager is used in the following maps and apps that can be configured for your organization:


            Web maps

            An ArcGIS web map is an interactive display of geographic information that you can use to tell stories and answer questions. For example, you may find or create a map that addresses the question, How many people in the United States live within a reasonable walk or drive to a supermarket? This map has layers showing which neighborhoods are within a 10-minute drive or 1-mile walk to a supermarket, and for context, the map has a topographic basemap that includes cities, roads, and buildings overlaid on land cover and shaded relief imagery.

            Maps contain a basemap, a set of data layers (many of which include interactive pop-up windows with information about the data), an extent, and navigation tools to pan and zoom. In general, the basemap and layers are hosted and shared through ArcGIS Online . However, maps can also contain layers added directly to the map and layers and basemaps referenced externally. Many maps also contain scaled symbols and other smart styling that reveal data and patterns as you interact with it. For example, the map below shows the relative magnitude of earthquakes.

            Click on any earthquake symbol to learn the magnitude and date of each event. The map also has scaled symbols, showing the relative magnitude of each earthquake.

            Maps can be created in a few basic steps and opened in standard web browsers, mobile devices, and desktop map viewers. They can be shared through links or embedded in websites, and used to create map-based web apps. When a map is shared, the author decides what to include with the map. For example, when the map is shared with the general public through Map Viewer or Map Viewer Classic , the map includes options to switch basemaps view a legend (if the map contains one) view details about the map share, print, and measure the map and find locations on the map. Signing in to Map Viewer or Map Viewer Classic with an ArcGIS account may reveal additional options for adding layers,getting directions, and so on. Maps embedded in websites and shared through apps often contain a focused set of tools for a specific purpose, such as collecting information, editing features, or comparing two maps side-by-side.

            Web maps can be used across ArcGIS because they adhere to the same web map specification. This means you can create web maps in one ArcGIS app and view and modify them in another. For example, you can create a web map in ArcGIS Pro and your colleague can modify it in ArcGIS Online .


            Configure advanced parameters

            There are several advanced parameters that can be used to further customize your webhooks. These parameters will be applied to all configured webhooks in your portal and can be accessed from https://machine.domain.com/webadaptor/sharing/rest/portals/<orgID>/webhooks/settings.

            The Update operation allows you to update the following parameters:

            • Number of delivery attempts—Specify the number of attempts that will be made to deliver a payload. The default is three attempts, and it can be increased up to five attempts.
            • Notification timeout—Specify the length of time a connection will wait to receive a response. If a response is not received within this interval, the connection will time out and is considered a failed notification attempt.
            • Elapsed time between delivery attempts—Specify the time between each payload delivery attempt. The default is 30 seconds, and it can be increased to a maximum of 100 seconds or decreased to a minimum of 1 second.

            See the webhooks API documentation for more information on how to configure advanced parameters.


            I prefer SetVisible(bool visible) , because it lets me write client code like this:

            instead of having to write

            The SetVisible approach may also allow for easier implementation. For example, if a particular concrete class simply delegates the method to its composite classes, then SetVisible means one less method to implement.

            I disagree with all posters suggesting multiple functions to do the same thing is a good thing. Whilst three functions instead of one may not seem like much bloat, remember that your class is likely to end up with many such functions (e.g. setEnabled , enable , disable ) and thus this approach will end up with a much larger class interface. Moreover, it's likely that you'll end up with a bunch of similar sounding functions/properties/whatever in your class and the multiplication of functions will further obscure which one goes with what.

            In languages which support properties, these should be preferred but since neither Java nor C++ do, I guess that's a moot point.

            I think setVisible() should be preferred for these reasons:

            1. It's immediately obvious what the inverse function is. To reverse setVisible(false) you call setVisible(true) whereas the opposite of hide() could easily be reveal() .
            2. It's programmatically simpler whenever you're determining which state it should take in code, i.e. you can call setVisible(wantToSee) rather than using an if statement.
            3. Once you have multiple similar functions the setX() format generalises so you can have a set of consistent functions whereas the verbed approach spawns a host of functions that can be difficult to locate if you don't know what you're looking for. Consistency in APIs makes them considerably easier to learn and remember.

            It depends on what showing and hiding means in the context. First you want to figure out which one is your "main way", and focus on developing that:

            • Reasons to pick setVisible(bool)
              • It is just a simple bit-flip, or your object is mainly holding state
              • Your object is going to spend most of its time in a CRUD framework
              • There is a lot of easily-shared code between showing and hiding
              • There are a important side-effects or lots of logic being run, such as when the object has to check all of its containers for their visibility state, or triggers a transition animation.
              • Is it part of a domain model where expressing intent is important

              OK, so now that you've coded the "gold standard" core of it, you need to figure out whether it it worth adding thin convenience-methods in the other style, to make life easier for whomever is going to use your object.

              • Convenience of setVisible(bool)
                • Lets you avoid if-statements that have trivial conditions and only affect visibility (ex. setVisible(a==b) )
                • Can be wired into certain getter/setter frameworks, if that's somethign you expect to happen
                • Useful in a language with first-class functions and callbacks (ex. onSuccess(widget.show) )
                • Much easier to read with stack-traces and performance profiling, since you can quickly see what the program was trying to do

                TLDR: Find out which one is most important, implement it, and then ask yourself whether it's worth adding the other style as thin convenience methods.

                Show() and Hide() tend to be easier to grok than SetVisible(true) and SetVisible(false) . However, when you want to set visibility logically it is better to have a method taking a bool rather than constructing an if around that bool .

                You can support all three without duplicating logic and minimal boilerplate:

                Alternatively, if the things you are wrapping have a more SetVisible -ish API:

                I prefer show() and hide(), in fact, every method that receive one boolean can be changed for two methods tan express better the intention of the API. For example Robert Martin in clean code recommend prefer methods wit zero arguments over methods with one argument.

                Another important argument for me is readability, in my opinion good code can be read like prose, its really strange prose something like "main_window setVisible false" instead of "main_window hide", you write or talk like that normally?, why use this strange language construction in software programs when is perfectly possible use a more natural language?.

                I do believe that the more the method is expressive, the more readable, and consequently, maintainable the code will be. Consider the following two cases:

                In the first case, it is clear what the function "setVisible" is doing, but if you want to read it, you would say:

                set the customer panel to visible if the customer is enabled or set it to hidden if the customer is disabled.

                While its more descriptive to say:

                • check the status of the customer:
                  • if the customer is enabled then show the customer's panel
                  • otherwise, hide it

                  which will change the "Case 1" function into the following:

                  it produces more code, but is more readable.

                  The second case has an obvious flaw, which is, you already know that you want to show the panel, so why not use the "Show" function ?

                  I am not saying that using "setVisible" is absolutely wrong, but it gets confusing when you try to read code not written by you over time, and it does not conform with the "A function should perform only one operation" rule.

                  I believe that the Hide() / Show() alternative is attractive because it's easier to understand what's going on than with SetVisible(true) , while having a single function is preferable because it avoids lots of conditionals.

                  If that's the case then I suggest using an enumeration as the input to SetVisible , so you get either SetVisible(Visibility.Visible) or SetVisible(Visibility.Hidden) . You have a single function you can instantly read what action is being taken.

                  Using Java's naming conventions, you would have maybe setVisible(Visibility.VISIBLE) or setVisible(Visibility.HIDDEN) .

                  I agree with Darien's answer, but wanted to add a point of view from a C# programmers perspective.

                  When I see code which says 'setXXX' I read that to say that it's setting a value on a thing, I don't expect this to have side effects in that thing other than setting that value, and I do expect this to be idempotent (ie I can keep setting it with the same value and it's okay). It's rather like accessing a field. Generally I'd also expect to see a 'getXXX' method along with a 'setXXX'.

                  I don't know if this is what you expect in Java and C++, but that's what I'd expect in C#, albeit in C# there's a short hand for this called Properties. And here's some nice guidance on how to use Properties (http://msdn.microsoft.com/en-us/library/ms182181.aspx).

                  Given this view, then the interface I'd choose depends purely on if there are any side effects (other than changing that field value):

                  If performing the action has side effects, for example it's showing a dialog box then I'd go with "Show()", and "Hide()".

                  If it doesn't have side effects, say I'm setting the visibility of a "widget" and something else renders that widget depending on it's state then I'd use setVisibility or setIsVisible. (I wouldn't call it SetVisible).

                  In C# (not sure about Java) it's pretty common to adopt an observer pattern, where a UI framework will listen for changes to objects and will automatically re-render the UI when a property such as Visibility changes. That means that setting the value by calling setIsVisible appears as if it has side effects, but in my definition it doesn't. The widget's contract is fulfilled by setting it's field value representing "IsVisible".