Suite

Convertir une polyligne en polygone à l'aide d'ArcObjects


J'ai une polyligne et je souhaite la convertir en une seule entité surfacique, j'ai utilisé ce code mais j'obtiens une erreur alors que je peux convertir le même fichier de formes en utilisant une entité en polygone sur ArcGIS. Où est mon erreur ?

ESRI.ArcGIS.DataManagementTools.FeatureToPolygon ftp = new ESRI.ArcGIS.DataManagementTools.FeatureToPolygon(chemin + "lines.shp", chemin + "polygones.shp"); ftp.attributes = "NO_ATTRIBUTES"; GP.Execute(ftp, null);

Le chemin est défini sur

string path= System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"	empConversations" ;

et l'erreur qui se produit est :

L'erreur HRESULT E_FAIL a été renvoyée à partir d'un appel à un composant COM.

J'ai essayé de changer le chemin de sortie en

"E:/MASTER/Project/Semirom/file gis semirom/New Folder/gisiran.gdb/tester"

Mais j'obtiens la même erreur… Pensez-vous que je dois définir un espace de travail Environnement ou quelque chose comme ça ? J'utilise aussi :

ESRI.ArcGIS.ConversionTools.GPXtoFeaturesetESRI.ArcGIS.DataManagementTools.PointsToLine(chemin + "points.shp", chemin + "lines.shp");avec les mêmes paramètres et ils fonctionnent bien… :(

Existe-t-il une meilleure approche pour créer un polygone ?


essaye ça

en utilisant ESRI.ArcGIS.DataManagementTools ; FeatureToPolygon featureToPolygon = new FeatureToPolygon(); featureToPolygon.in_features = pInWorkspace.PathName + "" + pInFeatureClassName.FeatureDatasetName.Name + "Temp_Line_UnNamed" ; featureToPolygon.out_feature_class = pInWorkspace.PathName + "" + pInFeatureClassName.FeatureDatasetName.Name + "Master_Poly_UnNamed" ; featureToPolygon.attributes = "ATTRIBUTS"; featureToPolygon.cluster_tolerance = 0,01; featureToPolygon.label_features = ""; RunTool(gp, featureToPolygon, null); public static void RunTool (géoprocesseur géoprocesseur, processus IGPProcess, ITrackCancel tc) { // définir l'option d'écrasement sur true geoprocessor.OverwriteOutput = true; // exécute l'outil try { geoprocessor.Execute(process, null); ReturnMessages(géoprocesseur); } catch (Exception err) { Console.WriteLine(err.Message); ReturnMessages(géoprocesseur); } } private static void ReturnMessages(Geoprocessor gp) { if (gp.MessageCount > 0) { for (int i = 0; i <= gp.MessageCount - 1; i++) { Console.WriteLine(gp.GetMessage(i)) ; } } }

Ce??

static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop); Application.Run(new frmHydroLinesToPolygons()); } private void frmHydroLinesToPolygons_Load (expéditeur d'objet, EventArgs e) { bool bLicenseAvailable; // initialise l'environnement d'exécution des composants ArcObjects. // Cette classe doit être la première Arcobject créée IAoInitialize aoInitialize = new AoInitializeClass(); état esriLicenseStatus ; // vérifie la licence ArcInfo - essentiel lors de la conversion de l'entité en polygones status = aoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced); //.esriLicenseProductCodeArcInfo); //.esriLicenseProductCodeArcView); // vérifie si la licence est disponible if ((status == esriLicenseStatus.esriLicenseAvailable) || (status == esriLicenseStatus.esriLicenseAlreadyInitialized) || (status == esriLicenseStatus.esriLicenseCheckedOut)) { =true;Available } else { bLicenseAvailable = false; } // si pas de licence - initialiser la licence if (bLicenseAvailable != true) { if (status == esriLicenseStatus.esriLicenseNotLicensed) { MessageBox.Show("Désolé… Une licence ArcInfo est requise pour ce programme"); } this.Fermer(); } }

Vous devez vérifier les licences des extensions requises :

aoInitialize.CheckOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst); aoInitialize.CheckOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst);

Lors de l'utilisation d'une licence ArcView ou ArcEditor, un programme doit explicitement utiliser AoIntialize et le produit doit être défini sur ArcView ou ArcEditor, sinon le programme échoue. Par défaut, le géoprocesseur suppose toujours qu'une licence ArcInfo est requise pour l'exécution d'un script ; par conséquent, si un programme ne définit pas explicitement le produit requis par les outils qu'il exécute, une licence ArcInfo est initialisée. Voir l'exemple de code suivant :

regarde cet exemple :

en utilisant ESRI.ArcGIS.Geoprocessor ; en utilisant ESRI.ArcGIS.esriSystem ; static void Main(string[] args) { //Initialise l'application. esriLicenseStatus licenseStatus = esriLicenseStatus.esriLicenseUnavailable; IAoInitialize m_AoInitialize = new AoInitializeClass(); licenseStatus = m_AoInitialize.Initialize (esriLicenseProductCode.esriLicenseProductCodeArcInfo); licenseStatus = m_AoInitialize.CheckOutExtension (esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst); // Initialise le géoprocesseur. Géoprocesseur gp = new Géoprocesseur(); Pente tPente = new Pente(); tSlope.in_raster = @"E:Datademlatgrd"; tSlope.out_raster = @     E:  Data  aspect03 ";gp.Execute(tSlope, null); licenseStatus = m_AoInitialize.CheckInExtension (esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst); m_AoInitialize.ShutInitial(}); m_Ao = null

Trouvez votre emplacement

Lors de la création d'applications géolocalisées, l'une des tâches les plus courantes consiste à afficher l'emplacement actuel de l'utilisateur sur une carte. Pour cela, il existe de nombreuses solutions différentes. Une façon possible consiste à utiliser CoreLocation d'Apple pour obtenir des emplacements à partir des capteurs GPS intégrés de l'appareil.

Le SDK HERE fonctionne sans problème avec n'importe quelle solution de positionnement propriétaire. À l'avenir, une solution complète de positionnement HERE est prévue avec des fonctionnalités plus avancées. Une implémentation dépendant de la plate-forme possible est illustrée ci-dessous.

Avant d'accéder aux capteurs de l'appareil, vous devez demander la permission à l'utilisateur. Ajoutez les autorisations suivantes à votre fichier Info.plist :

Ensuite, obtenez une instance de CLLocationManager à partir de la plate-forme iOS et demandez des mises à jour de localisation :

Pour recevoir des événements, notre classe doit se conformer au protocole CLLocationManagerDelegate :

le délégué est de type PlatformPositioningProviderDelegate . Il s'agit d'un protocole que nous avons défini pour permettre à une autre classe d'être facilement notifiée.

Ceci est juste un exemple de la façon d'intégrer un CLLocationManager qui donne accès aux services de localisation iOS. N'hésitez pas à l'adapter à vos propres besoins.

Ci-dessous vous pouvez trouver la classe complète:

Pour intégrer cette classe dans votre propre application, créez une nouvelle instance et définissez la classe appelante en tant que délégué :

En définissant la classe appelante en tant que délégué, vous devez vous conformer au protocole PlatformPositioningProviderDelegate et votre classe peut commencer à recevoir des événements CLLocation :

Vous pouvez ensuite démarrer et arrêter la localisation en appelant les méthodes suivantes :

Notez que notre classe reçoit des événements CLLocation. Utilisez la méthode suivante pour les convertir en classe Location utilisée par le SDK HERE pour couvrir les champs les plus courants :

Pour plus d'informations sur le CLLocationManager et comment utiliser les autres fonctionnalités de positionnement de la plate-forme, veuillez vous référer à la documentation officielle d'iOS.


Abstrait

Les robots autonomes dans des environnements réels sont confrontés à un certain nombre de défis, même pour accomplir des tâches apparemment simples comme se déplacer vers un emplacement donné. Nous présentons quatre scénarios réalistes dans lesquels la navigation du robot prend en compte des informations partielles, des structures hiérarchiques et des objectifs multiples. Nous commençons par discuter de la navigation dans des environnements intérieurs partagés avec les gens, où les itinéraires sont caractérisés par l'effort, le risque et l'impact social. Ensuite, nous améliorons la navigation en calculant des trajectoires optimales et en mettant en œuvre des comportements de navigation locaux conviviaux. Enfin, nous passons aux environnements extérieurs, où les robots s'appuient sur des estimations de traversabilité incertaines et doivent prendre en compte le risque de rester bloqué ou de devoir changer d'itinéraire.


Voir la vidéo: Convert Point To Polygon in ArcGIS (Octobre 2021).