Suite

ArcGIS / .Net - Charger les pyramides dans le thread

ArcGIS / .Net - Charger les pyramides dans le thread


J'ai besoin d'afficher un grand raster avec ArcGIS. Pour ce faire, j'utilise des pyramides, et ça marche, mais elles peuvent être longues à construire. J'aimerais donc construire les pyramides dans un fil séparé. Ce faisant, la couche est ajoutée dans la table des matières, mais pas sur la carte.

Voici un exemple de code :

classe privée Worker { délégué privé void RasterLoadedCallback(IRasterDataset rasterDataset); public void DoWork() { // Définit l'espace de travail et les noms de fichiers : string workspacePath = "C:PathToMyFolder"; string nom_fichier = "nom_fichier.tif" ; // Ouvrir un espace de travail : IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactory(); IRasterWorkspace rasterWorkspace = (IRasterWorkspace)workspaceFactory.OpenFromFile(workspacePath, 0); // Ouvrir un fichier dans l'espace de travail : IRasterDataset rasterDataset = rasterWorkspace.OpenRasterDataset(fileName); // Création des pyramides : IRasterPyramid rasterPyramids = (IRasterPyramid)rasterDataset; rasterPyramids.Create(); // Exécuté sur le thread principal : RasterLoadedCallback callback = AddRasterToMap; Dispatcher.FromThread(mainThread).Invoke(rappel, nouvel objet[] { rasterDataset }); } private static void AddRasterToMap(IRasterDataset rasterDataset) { // Créer une couche raster à partir d'un jeu de données raster : IRasterLayer rasterLayer = new RasterLayer(); rasterLayer.CreateFromDataset(rasterDataset); // Ajoutez-le à une carte si la couche est valide. if (rasterLayer != null) { carte IMap = MyAxMapControl.ActiveView.FocusMap; map.AddLayer((ILayer)rasterLayer); } } }

Est-ce que quelqu'un sait quel pourrait être le problème ?


J'ai trouvé une solution : rouvrir le raster dans le thread principal lorsque la création des pyramides est terminée, au lieu de passer le dataset en paramètre.

Donc mon code est :

classe privée Worker { délégué privé void RasterLoadedCallback(); public void DoWork() { // Définit l'espace de travail et les noms de fichiers : string workspacePath = "C:PathToMyFolder"; string nom_fichier = "nom_fichier.tif" ; // Ouvrir un espace de travail : IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactory(); IRasterWorkspace rasterWorkspace = (IRasterWorkspace)workspaceFactory.OpenFromFile(workspacePath, 0); // Ouvrir un fichier dans l'espace de travail : IRasterDataset rasterDataset = rasterWorkspace.OpenRasterDataset(fileName); // Création des pyramides : IRasterPyramid rasterPyramids = (IRasterPyramid)rasterDataset; rasterPyramids.Create(); // Exécuté sur le thread principal : RasterLoadedCallback callback = AddRasterToMap; Dispatcher.FromThread(mainThread).Invoke(rappel, nouvel objet[] { }); } private static void AddRasterToMap() { // Ouvrir un espace de travail : IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactory(); IRasterWorkspace rasterWorkspace = (IRasterWorkspace)workspaceFactory.OpenFromFile(workspacePath, 0); // Ouvrir un fichier dans l'espace de travail : IRasterDataset rasterDataset = rasterWorkspace.OpenRasterDataset(fileName); // Crée une couche raster à partir d'un jeu de données raster : IRasterLayer rasterLayer = new RasterLayer(); rasterLayer.CreateFromDataset(rasterDataset); //rasterLayer.PyramidsPresent = true // Ajoutez-le à une carte si la couche est valide. if (rasterLayer != null) { IMap map = MyAxMapControl.ActiveView.FocusMap; map.AddLayer((ILayer)rasterLayer); } } }

Notes de version pour 100.1

Cette page fournit des détails sur les améliorations apportées à la version 100.1 d'ArcGIS Runtime SDK pour iOS. Il répertorie également les problèmes connus de cette version.

La version 100.1.1 ajoute la prise en charge d'iOS 11 et Xcode 9 en résolvant un avertissement où certaines API UIKit ont été appelées sur un thread d'arrière-plan. De plus, il contient des corrections de bogues pour améliorer l'identification des couches d'images cartographiques et le filtrage des données des couches d'entités à l'aide d'expressions de définition.

Prise en charge de la 3D sur les appareils mobiles disponible dans le commerce

Dans la version précédente, les développeurs pouvaient déployer des applications 3D sur des téléphones mobiles et des tablettes uniquement, car BETA 3D n'était commercialement pris en charge que sur les plates-formes de bureau. Désormais à 100.1.0, les capacités 3D sont entièrement prises en charge sur les téléphones mobiles et les tablettes.

Prise en charge de raster sur les appareils mobiles disponible dans le commerce

Dans la version précédente, les applications qui utilisaient des données raster locales sur des téléphones mobiles et des tablettes ne pouvaient être déployées que car BETA Raster n'était commercialement pris en charge que sur les plates-formes de bureau. À 100.1.0, les capacités raster locales sont entièrement prises en charge sur les téléphones mobiles et les tablettes.

Des cartes Web ou des zones spécifiques d'une carte Web à partir d'un portail peuvent être téléchargées et utilisées dans des scénarios déconnectés. La nouvelle OfflineMapTask fournit une API de haut niveau pour télécharger la définition de la carte et ses données associées. Lorsque la carte est mise hors ligne, elle est stockée en tant que carte mobile. Si la carte contient des couches d'entités activées pour la synchronisation, celles-ci peuvent être modifiées hors ligne et les modifications synchronisées lorsque la connectivité réseau sera disponible ultérieurement.

Contrôle de l'étiquetage côté client

Une nouvelle classe AGSLabelDefinition est introduite qui définit comment l'étiquetage est appliqué aux données d'entité pour une plage d'échelle donnée. Vous pouvez spécifier les éléments suivants :

  • Quelles fonctionnalités sont couvertes par la définition (en appliquant la définition d'étiquette & la clause where)
  • Quel texte doit être affiché, en fonction des attributs de l'entité individuelle et de la formule d'expression d'étiquette de définition d'étiquette. Les expressions d'arcade sont prises en charge dans les définitions d'étiquettes et les variables visuelles, mais pas dans les rendus à valeur unique ou les rendus de rupture de classe.
  • Comment le texte doit apparaître, en utilisant le symbole de texte de définition
  • Où le texte doit apparaître par rapport à sa caractéristique, en utilisant le placement de l'étiquette de définition
  • Comment déplacer ou éviter d'autres étiquettes ou entités qui chevaucheraient chaque étiquette

Dans cette version, vous pouvez uniquement construire une instance AGSLabelDefinition à partir de JSON, mais il n'y a pas d'API explicite pour spécifier les paramètres d'étiquetage.

Prise en charge de types de calques supplémentaires

Cette version ajoute la prise en charge des types de couche de données suivants.

  • OGC WMTS
  • Service d'images
  • Sous-couches dynamiques d'un service de carte ArcGIS
  • OpenStreetMap
  • Bing

Cette version fournit des API pour afficher des tuiles personnalisées. L'AGSWebTiledLayer est une couche extensible qui demande des tuiles de carte à un service Web basé sur un modèle d'URI. Il fournit un moyen simple d'intégrer des services non ArcGIS en tant que couche dans une carte. En outre, des couches carrelées personnalisées peuvent être créées en sous-classant AGSImageTiledLayer et sa sous-classe, AGSServiceImageTiledLayer . Ces deux classes abstraites exposent des méthodes abstraites protégées pour extraire des images de tuiles ou renvoyer l'URL des images de tuiles. En étendant ces deux classes et en implémentant les méthodes abstraites, vous pouvez créer des couches tuilées personnalisées et les ajouter à une carte.

Cette version fournit des API pour prendre en charge les tables associées. Grâce à cela, les applications peuvent gérer des flux de travail qui impliquent la lecture, la modification et l'interrogation de données associées dans des tables spatiales et non spatiales. Ces workflows de table associés sont pris en charge dans les cartes en ligne et hors ligne.

Une nouvelle classe AGSHeatmapRenderer utilise les points d'une couche pour calculer et afficher la densité relative des points sur une carte. La densité est affichée sous forme de carte thermique en faisant varier en douceur des ensembles de couleurs allant du froid (faible densité de points) au chaud (forte densité de points). Dans cette version, cette classe est construite uniquement à partir de JSON lorsqu'elle est définie dans une carte Web et qu'aucune API explicite n'est fournie pour l'utiliser.

Édition des services de fonctionnalités publiques disponibles au niveau de la licence Lite

La possibilité d'effectuer des modifications dans un environnement connecté sur des services d'entités publics à partir d'ArcGIS Online ou Enterprise au niveau de la licence Lite a été introduite dans cette version. Dans la version 100.0.0, toutes les fonctionnalités d'édition ont commencé au niveau de base. L'édition de services d'entités privés ou l'édition dans un environnement hors ligne reste aux niveaux de licence de base, standard et avancé.

Analyse de la zone de service et de l'installation la plus proche

Les tâches de l'installation et de la zone de desserte les plus proches sont désormais disponibles pour effectuer davantage d'analyses de réseau dans vos applications ArcGIS Runtime.

Une aire de service est une région qui englobe toutes les rues accessibles à une distance ou un temps de déplacement donnés à partir d'une ou plusieurs installations. Par exemple, un polygone de temps de conduite de trois minutes autour d'une épicerie peut déterminer quels résidents peuvent atteindre le magasin en trois minutes et sont donc plus susceptibles d'y faire leurs achats.

La tâche de l'installation la plus proche génère des itinéraires entre les installations et les incidents. Les itinéraires peuvent inclure une forme d'itinéraire et des indications routières. La tâche peut générer des itinéraires des installations aux incidents ou des incidents aux installations et peut trouver un nombre d'itinéraires spécifié par l'utilisateur, par exemple en trouvant les trois casernes de pompiers les plus proches pour une adresse.

La classe AGSCoordinateFormatter peut être utilisée pour convertir entre les points et les chaînes de notation de coordonnées formatées telles que les degrés décimaux degrés, minutes et secondes U.S. National Grid (USNG) et Military Grid Reference System (MGRS).

Les contrôleurs de caméra vous permettent de modifier le comportement par défaut de la caméra dans une vue de scène. Deux contrôleurs de caméra "quotorbit" ont été ajoutés pour verrouiller la mise au point d'une caméra sur une cible à point fixe ou sur un graphique éventuellement en mouvement.

Prise en charge des packages StreetMap Premium

StreetMap Premium for ArcGIS Runtime est un nouveau produit de données, sous licence en tant qu'extension d'ArcGIS Runtime, qui fournit des données routières enrichies, qui alimentent une carte cartographique de haute qualité et une recherche, un géocodage et une analyse d'itinéraire de haute qualité. Les cartes Streetmap Premium for ArcGIS Runtime sont cohérentes dans toutes les régions du monde et peuvent être mises hors ligne pour une utilisation déconnectée. Elles peuvent simultanément répondre au besoin d'un localisateur d'adresses, d'un jeu de données de réseau routier et d'un fond de carte dans votre application.

StreetMap Premium for ArcGIS Runtime fournit les données HERE sous forme de package de carte mobile (un fichier .mmpk) auquel votre application peut accéder localement. Ce format MMPK permet d'accéder aux données hors ligne et ne consomme donc pas les données de votre forfait de données utilisateur. Il s'agit des mêmes données de haute qualité utilisées par les services ArcGIS Online, notamment le service de géocodage mondial, le service de routage et le service de carte des rues.

AGSMapView et AGSSceneView ont été améliorés pour afficher automatiquement l'attribution des couches de carte et de scène respectivement. L'attribution est dynamique et se met à jour au fur et à mesure que des couches sont ajoutées/supprimées, activées/désactivées ou changent de visibilité lorsqu'elles entrent et sortent de la plage d'échelle.


Notes de version pour 100.1

Cette page fournit des détails sur les nouveautés de la version 100.1 d'ArcGIS Runtime SDK pour Android. Il répertorie également les dépréciations de cette version, les problèmes résolus et les problèmes connus.

La 3D a été intégrée à ArcGIS Runtime pour le développement d'applications natives. Créez des scènes 3D avec des ensembles de données raster, tuiles et vectorielles, y compris une symbologie 3D spécifique pour des visualisations « meilleures qu'à plat ».

Prise en charge de raster sur les appareils mobiles disponible dans le commerce

Dans la version précédente, les applications qui utilisaient des données raster locales sur des téléphones mobiles et des tablettes ne pouvaient être déployées que car BETA Raster n'était commercialement pris en charge que sur les plates-formes de bureau. À 100,1, les capacités raster locales sont entièrement prises en charge sur les téléphones mobiles et les tablettes.

Des cartes Web ou des zones spécifiques d'une carte Web à partir d'un portail peuvent être téléchargées et utilisées dans des scénarios déconnectés. La nouvelle OfflineMapTask fournit une API de haut niveau pour télécharger la définition de la carte et ses données associées. Lorsque la carte est mise hors ligne, elle est stockée en tant que carte mobile. Si la carte contient des couches d'entités activées pour la synchronisation, celles-ci peuvent être modifiées hors ligne et les modifications synchronisées lorsque la connectivité réseau sera disponible ultérieurement.

Contrôle de l'étiquetage côté client

Une nouvelle classe LabelDefinition est introduite qui définit comment l'étiquetage est appliqué aux données d'entité pour une plage d'échelle donnée. Vous pouvez spécifier les éléments suivants :

  • Quelles fonctionnalités sont couvertes par la définition (en appliquant la définition d'étiquette & la clause where)
  • Quel texte doit être affiché, en fonction des attributs de l'entité individuelle et de la formule d'expression d'étiquette de définition d'étiquette. Les expressions d'arcade sont prises en charge dans les définitions d'étiquettes et les variables visuelles, mais pas dans les rendus à valeur unique ou les rendus de rupture de classe.
  • Comment le texte doit apparaître, en utilisant le symbole de texte de définition
  • Où le texte doit apparaître par rapport à sa caractéristique, en utilisant le placement de l'étiquette de définition
  • Comment déplacer ou éviter d'autres étiquettes ou caractéristiques qui chevaucheraient chaque étiquette

Dans cette version, vous pouvez uniquement construire une instance LabelDefinition à partir de JSON, mais il n'y a pas d'API explicite pour spécifier les paramètres d'étiquetage.

Prise en charge de types de calques supplémentaires

Cette version ajoute la prise en charge des types de couche de données suivants.

  • OGC WMTS
  • Service d'images
  • Sous-couches dynamiques d'un service de carte ArcGIS
  • OpenStreetMap
  • Bing

Cette version fournit des API pour afficher des tuiles personnalisées. Le WebTiledLayer est une couche extensible qui demande des tuiles de carte à un service Web basé sur un modèle d'URI. Il fournit un moyen simple d'intégrer des services non ArcGIS en tant que couche dans une carte. En outre, des couches carrelées personnalisées peuvent être créées en sous-classant ImageTiledLayer et sa sous-classe, ServiceImageTiledLayer. Ces deux classes abstraites exposent des méthodes abstraites protégées pour extraire des images de tuiles ou renvoyer l'URL des images de tuiles. En étendant ces deux classes et en implémentant les méthodes abstraites, vous pouvez créer des couches tuilées personnalisées et les ajouter à une carte.

Cette version fournit des API pour prendre en charge les tables associées. Grâce à cela, les applications peuvent gérer des flux de travail qui impliquent la lecture, la modification et l'interrogation de données associées dans des tables spatiales et non spatiales. Ces workflows de table associés sont pris en charge dans les cartes en ligne et hors ligne. Pour plus de détails, voir Associer des fonctionnalités et Rechercher des fonctionnalités liées.

Une nouvelle classe HeatmapRenderer utilise les points d'une couche pour calculer et afficher la densité relative des points sur une carte. La densité est affichée sous forme de carte thermique en faisant varier en douceur des ensembles de couleurs allant du froid (faible densité de points) au chaud (forte densité de points). Dans cette version, cette classe est construite uniquement à partir de JSON lorsqu'elle est définie dans une carte Web et qu'aucune API explicite n'est fournie pour l'utiliser.

Une classe SketchEditor 2D permet d'esquisser des géométries sur une carte. Il peut être utilisé pour créer de nouvelles géométries et modifier celles existantes. Ce type d'esquisse est généralement effectué via l'interaction de l'utilisateur. L'esquisse par programmation est également prise en charge. La classe SketchEditor prend également en charge l'annulation/rétablissement des modifications, le style personnalisé de l'éditeur et un système de notifications que le développeur doit gérer pendant le processus d'esquisse.

Édition des services de fonctionnalités publiques disponibles au niveau de la licence Lite

La possibilité d'effectuer des mises à jour dans un environnement connecté sur des services d'entités publics à partir d'ArcGIS Online ou Enterprise au niveau de la licence Lite a été introduite dans cette version. À la version 100.0, toutes les capacités d'édition ont commencé au niveau de base. L'édition de services d'entités privés ou l'édition dans un environnement hors ligne reste aux niveaux de licence de base, standard et avancé.

Analyse de la zone de service et de l'installation la plus proche

Les tâches de l'installation et de la zone de service les plus proches sont désormais disponibles pour effectuer davantage d'analyses de réseau dans vos applications ArcGIS Runtime. Une aire de service est une région qui englobe toutes les rues accessibles à une distance ou un temps de déplacement donnés à partir d'une ou plusieurs installations. Par exemple, un polygone de temps de conduite de trois minutes autour d'une épicerie peut déterminer quels résidents peuvent atteindre le magasin en trois minutes et sont donc plus susceptibles d'y faire leurs achats. La tâche de l'installation la plus proche génère des itinéraires entre les installations et les incidents. Les itinéraires peuvent inclure une forme d'itinéraire et des indications routières. La tâche peut générer des itinéraires des installations aux incidents ou des incidents aux installations et peut trouver un nombre d'itinéraires spécifié par l'utilisateur, par exemple en trouvant les trois casernes de pompiers les plus proches pour une adresse.

La classe CoordinateFormatter peut être utilisée pour convertir entre les points et les chaînes de notation de coordonnées formatées telles que les degrés décimaux degrés, minutes et secondes U.S. National Grid (USNG) et Military Grid Reference System (MGRS).

Les contrôleurs de caméra vous permettent de modifier le comportement par défaut de la caméra dans une vue de scène. Deux contrôleurs de caméra "quotorbit" ont été ajoutés pour verrouiller la mise au point d'une caméra sur une cible à point fixe ou sur un graphique éventuellement en mouvement.

Prise en charge des packages StreetMap Premium

StreetMap Premium for ArcGIS Runtime est un nouveau produit de données, sous licence en tant qu'extension d'ArcGIS Runtime, qui fournit des données routières enrichies, qui alimentent une carte cartographique de haute qualité et une recherche, un géocodage et une analyse d'itinéraire de haute qualité. Les cartes Streetmap Premium for ArcGIS Runtime sont cohérentes dans toutes les régions du monde et peuvent être mises hors ligne pour une utilisation déconnectée. Elles peuvent simultanément répondre au besoin d'un localisateur d'adresses, d'un jeu de données de réseau routier et d'un fond de carte dans votre application.

StreetMap Premium for ArcGIS Runtime fournit les données HERE sous forme de package de carte mobile (un fichier .mmpk) auquel votre application peut accéder localement. Ce format MMPK permet d'accéder aux données hors ligne et ne consomme donc pas les données de votre forfait de données utilisateur. Il s'agit des mêmes données de haute qualité utilisées par les services ArcGIS Online, notamment le service de géocodage mondial, le service de routage et le service de carte des rues.

MapView et SceneView ont été améliorés pour afficher automatiquement l'attribution des couches de carte et de scène respectivement. L'attribution est dynamique et se met à jour au fur et à mesure que des couches sont ajoutées/supprimées, activées/désactivées ou changent de visibilité lorsqu'elles entrent et sortent de la plage d'échelle.

  • Type de retour de MapView.getOnTouchListener() refactorisé de MapView.OnTouchListener() à View.OnTouchListener().

La liste suivante montre les nouvelles classes qui ont été ajoutées à l'API :

  • ArcGISScène
  • ArcGISScene.BasemapChangedEvent
  • ArcGISScene.BasemapChangedListener
  • ArcGISSceneLayer
  • ArcGISTiledElevationSource
  • AtmosphèreEffet
  • DefaultSceneViewOnTouchListener
  • DistanceCompositeScèneSymbole
  • ElévationSource
  • Mode d'éclairage
  • EmplacementVersEcranRésultat
  • LocationToScreenResult.SceneLocationVisibility
  • MarqueurScèneSymbole
  • ModèleScèneSymbole
  • RasterElevationSource
  • ScèneSymbole
  • Vue de la scène
  • SimpleMarqueurScèneSymbole
  • Surface
  • ArcGISMapServiceSublayerInfo
  • ArcGISMapServiceSublayerInfo.ServiceType
  • BingMapsCouche
  • BingMapsLayer.Style
  • ImageServiceRaster
  • ImageTiledLayer.NoDataTileBehavior
  • MapSublayerSource
  • OpenStreetMapLayer
  • RasterSublayerSource
  • ServiceImageTiledLayer
  • Source de la sous-couche
  • WebTiledLayer
  • WmtsCouche
  • WmtsLayerInfo
  • Service Wmts
  • WmtsServiceInfo
  • WmtsTileMatrixSet
  • WmtsTileMatrixSet.TileMatrix
  • ClosestFacilityParameters
  • Résultat de l'installation la plus proche
  • Route de l'installation la plus proche
  • Tâche de l'établissement le plus proche
  • ClosestFacilityTaskInfo
  • Établissement
  • Incident
  • ServiceAreaInstallation
  • ServiceAreaChevauchementGéométrie
  • Paramètres de la zone de service
  • ServiceAreaPolygone
  • ServiceAreaPolygonCutoffGéométrie
  • ServiceAreaPolygonDétail
  • ServiceAreaPolyline
  • ServiceAreaRésultat
  • ServiceAreaTâche
  • ServiceAreaTaskInfo
  • HeureDébutUtilisation
  • Direction de voyage
  • GénérerOfflineMapJob
  • GenerateOfflineMapParameters
  • GenerateOfflineMapResult
  • Capacité hors ligne
  • Capacités de carte hors ligne
  • OfflineMapItemInfo
  • OfflineMapSyncJob
  • OfflineMapSyncLayerResult
  • OfflineMapSyncParameters
  • OfflineMapSyncResult
  • Tâche de synchronisation de carte hors ligne
  • Hors ligneMapTâche
  • Fonctionnalité associéeRésultat de la requête
  • Paramètres de requête connexes
  • RelationCardinalité
  • RelationContrainteViolation
  • RelationInfo
  • RelationRôle
  • TableJoinSublayerSource
  • TableQuerySublayerSource
  • TableSous-coucheSource
  • Mode de création d'esquisse
  • Éditeur de croquis
  • SketchGeometryChangedEvent
  • SketchGeometryChangedListener
  • Style d'esquisse
  • AnimationCourbe
  • ArcGISImageServiceInfo
  • AttributionTextChangedEvent
  • AttributionTextChangedListener
  • CameraController
  • CameraDistanceChangedEvent
  • CaméraDistanceChangéÉcouteur
  • CameraHeadingOffsetChangedEvent
  • CaméraHeadingOffsetChangedListener
  • CameraPitchOffsetChangedEvent
  • CameraPitchOffsetChangedEcouteur
  • Formateur de coordonnées
  • CoordinateFormatter.GarsConversionMode
  • CoordinateFormatter.LatitudeLongitudeFormat
  • CoordinateFormatter.MgrsConversionMode
  • CoordinateFormatter.UtmConversionMode
  • Options d'extension
  • GeoprocessingParameterInfo
  • GéotraitementTaskInfo
  • GlobeCaméraContrôleur
  • HeatmapRenderer
  • OrbitGeoElementCameraController
  • OrbitLocationCameraController
  • ImageRemplissageSymbole
  • Type de pixel
  • PopupRelatedFeaturesDéfinition
  • PopupFonctionnalités connexesTrierOrdre
  • RègleRendu
  • RenderingRuleInfo

La liste suivante répertorie les dépréciations de l'API et, le cas échéant, l'API de remplacement.


Voir la vidéo: ArcMap 10: How to create Profiles using a DEM - Channel cross sections! Ground Truthing! YAY