Suite

Problème lors de la création d'un point IFeatureClass


J'essaie de créer un point IFeatureClass, mais mon code ne fonctionne pas.

Fonction publique CreatePointFeatureClass(ByVal featureClassName As String, _ ByVal featureWorkspace As IFeatureWorkspace) As IFeatureClass ' Instanciez une description de classe d'entités pour obtenir les champs requis. Dim fcDescription As IFeatureClassDescription = New FeatureClassDescriptionClass() Dim ocDescription As IObjectClassDescription = CType(fcDescription, IObjectClassDescription) Dim champs As IFields = New FieldsClass Dim fieldsEdit As IFieldsEdit = CType(fields, IFieldsEdit) Dim fieldEdit = FieldEdit AsIFieldDefined CType(fieldUserDefined, IFieldEdit) ' Configure la définition de géométrie pour le champ Shape. ' Vous n'avez pas besoin de définir la référence spatiale, car elle est héritée du jeu de classes d'entités. Dim geometryDef As IGeometryDef = New GeometryDefClass Dim geometryDefEdit As IGeometryDefEdit = CType(geometryDef, IGeometryDefEdit) ' En définissant la taille de la grille sur 0, vous autorisez ArcGIS à déterminer les tailles de grille appropriées pour la classe d'entités. ' S'il s'agit d'une géodatabase personnelle, la taille de la grille est de 1 000. S'il s'agit d'une géodatabase fichier ou ArcSDE, la taille de la grille ' est basée sur le chargement initial ou l'insertion d'entités. geometryDefEdit.GeometryType_2 = ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint ' Définit les propriétés de champ standard. fieldEdit.Name_2 = "SHAPE" fieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry fieldEdit.GeometryDef_2 = geometryDefEdit fieldEdit.IsNullable_2 = True fieldEdit.Required_2 = True fieldsEdit.AddField(fieldUserDefined) ' Ajoute un champ X. Double champ au Dim field1 As IField = New FieldClass() Dim fieldEdit1 As IFieldEdit = CType(field1, IFieldEdit) fieldEdit1.Name_2 = "X" fieldEdit1.Type_2 = esriFieldType.esriFieldTypeDouble fieldsEdit.AddField(field1) ' Ajoute un champ Y Double aux champs requis . Dim field2 As IField = New FieldClass() Dim fieldEdit2 As IFieldEdit = CType(field2, IFieldEdit) fieldEdit2.Name_2 = "Y" fieldEdit2.Type_2 = esriFieldType.esriFieldTypeDouble fieldsEdit.AddField(field2) ' Ajoute un champ Elevation Double aux champs requis . Dim field3 As IField = New FieldClass() Dim fieldEdit3 As IFieldEdit = CType(field3, IFieldEdit) fieldEdit3.Name_2 = "Elevation" fieldEdit3.Type_2 = esriFieldType.esriFieldTypeDouble fieldsEdit.AddField(field3) ' Utilisez IFieldChecker pour créer une collection de champs validée. Dim fieldChecker As IFieldChecker = New FieldCheckerClass() Dim enumFieldError As IEnumFieldError = Nothing Dim enabledFields As IFields = Nothing fieldChecker.ValidateWorkspace = CType(featureWorkspace, IWorkspace) fieldChecker.Validate(fields, enumField'E) inspecté enumField pointer pour déterminer ' quels champs ont été modifiés lors de la validation. ' Créer la classe d'entités. Dim featureClass As IFeatureClass = featureWorkspace.CreateFeatureClass(featureClassName, enabledFields, _ ocDescription.InstanceCLSID, ocDescription.ClassExtensionCLSID, esriFeatureType.esriFTSimple, _ "SHAPE", "") Retour featureClass End Function

La documentation indique que vous devez ajouter une référence spatiale valide à votre objet geometryDefEdit.

Ajoutez ces lignes après la création de votre objet geometryDef (extrait de http://resources.esri.com/help/9.3/ArcGISengine/ArcObjects/esriGeodatabase/IFeatureWorkspace.CreateFeatureClass_Example.htm)

Dim spatialReferenceFactory As ESRI.ArcGIS.Geometry.ISpatialReferenceFactory3 = New ESRI.ArcGIS.Geometry.SpatialReferenceEnvironmentClass() Dim spatialReference As ESRI.ArcGIS.Geometry.ISpatialReference = spatialReferenceFactory.CreateProjectedCoordinateSystem. .ArcGIS.Geometry.ISpatialReferenceResolution = CType(spatialReference, ESRI.ArcGIS.Geometry.ISpatialReferenceResolution) spatialReferenceResolution.ConstructFromHorizon() Dim spatialReferenceTolerance As ESRI.ArcGIS.Geometry.ISpatialReferenceTolerance = CType(spatialReference.Gat. () geometryDefEdit.SpatialReference_2 = spatialReference

Comme l'a dit Goldorak84, il vous manque une référence spatiale.

Puis-je suggérer de créer une méthode utilitaire, c'est comme ça. Désolé d'utiliser C# ici.

static public ISpatialReference GetSpatialReference() { ISpatialReference spatialReference; ISpatialReferenceFactory3 spatialReferenceFactory = new SpatialReferenceEnvironmentClass(); spatialReference = spatialReferenceFactory.CreateSpatialReference((int)esriRSGeoCSType.esriSRGeoCS_WSG1984); return spatialReference; }

Évidemment, vous voudrez également y définir votre résolution et votre tolérance.


Faute de frappe mineure, remplacez esriSRGeoCSType.esriSRGeoCS_WGS1984 par esriRSGeoCSType.esriSRGeoCS_WSG1984


Problème de lecture de netcdf

J'ai réussi à lire certains fichiers netcdf et à les afficher correctement. D'autres échouent lamentablement, car les informations de coordonnées sont ignorées et le fichier est affiché vers le sud et l'est à partir de 0,0 …. Est-ce un problème connu ? J'ai regardé les fichiers avec ncdump, mais je n'ai pas pu repérer de différences qui devraient faire fonctionner l'un d'eux et l'autre échouer. Lorsque l'on regarde les métadonnées dans qgis ou arcgis, il est clair qu'il manque beaucoup pour les fichiers qui ne s'affichent pas correctement.

Éditer:
Lors de la conversion des fichiers de netcdf4 en netcdf3, ils ont bien fonctionné. est-ce un problème connu dans arcgis/qgis ? (en utilisant arcgis 10, il semble utiliser gdal, mais je ne trouve pas quelle version, qgis 2.2 d'osgeo4w en utilisant gdal 1.10)

Edit2 :
Les fichiers originaux étaient si volumineux qu'il était un peu difficile de les partager. Maintenant, j'ai créé un exemple de fichier qui se comporte de la même manière : http://sickel.net/div/test.nc – il est créé à partir de http://sickel.net/div/test.cdl – il devrait, pour autant que je sache, couvrir une zone de -160 à -15 E, 20 – 60 N, c'est-à-dire la plupart des terres continentales des États-Unis et près du Royaume-Uni dans l'océan Atlantique, mais cela se termine par 0,0 et sud et est dans qgis, dans arcmap 10.0, il se termine par un point sur -160,20 …

2 réponses

Il y a des bogues dans NetCDF dans GDAL - voir la liste au bas de http://trac.osgeo.org/gdal/wiki/NetCDF pour ceux connus/identifiés.

Il est un peu difficile de dire lequel de ces bogues affecte votre situation particulière puisque vous n'avez pas décrit les données, mais peut-être le problème de support du "pôle rotatif" sur http://trac.osgeo.org/gdal/ticket/4285 est le "problème connu" particulier que vous recherchiez.

Répondu il y a 1 mois par BradHards avec 2 votes positifs

Même problème avec les fichiers netcdf très simples créés par moi. Les dimensions/variables lat et lon ne sont pas interprétées correctement au format netcdf4. Après avoir converti en NetCDF3 avec l'outil ncks, cela fonctionne bien :

Exécuter qgis 2.12.3-Lyon sous Windows avec gdal 1.11.2

Les dimensions sont lat et lon en degrés. Dans CDL, l'en-tête du fichier ressemble à ceci :


Comment l'IA falsifie les images satellites : un problème croissant de « deepfake Geography »

Ce qui peut sembler être une image de Tacoma est en fait une image simulée, créée en transférant des motifs visuels de Pékin sur une carte d'un véritable quartier de Tacoma. Crédit : Zhao et al., Cartographie et science de l'information géographique

Un incendie à Central Park semble apparaître sous la forme d'un panache de fumée et d'une ligne de flammes sur une image satellite. Les lumières colorées de la nuit de Diwali en Inde, vues de l'espace, semblent montrer une activité de feux d'artifice généralisée.

Les deux images illustrent ce qu'une nouvelle étude dirigée par l'Université de Washington appelle « l'usurpation d'emplacement ». Les photos - créées par différentes personnes, à des fins différentes - sont fausses mais ressemblent à de véritables images de lieux réels. Et avec les technologies d'IA plus sophistiquées disponibles aujourd'hui, les chercheurs préviennent qu'une telle «géographie profonde» pourrait devenir un problème croissant.

Ainsi, en utilisant des photos satellite de trois villes et en s'appuyant sur des méthodes utilisées pour manipuler des fichiers vidéo et audio, une équipe de chercheurs a entrepris d'identifier de nouvelles façons de détecter de fausses photos satellite, d'alerter sur les dangers des données géospatiales falsifiées et d'appeler à un système de vérification des faits géographiques.

« Il ne s'agit pas seulement de photoshoper des choses. Cela rend les données incroyablement réalistes », a déclaré Bo Zhao, professeur adjoint de géographie à l'UW et auteur principal de l'étude, publiée le 21 avril 2021 dans la revue. Cartographie et sciences de l'information géographique. « Les techniques sont déjà là. Nous essayons simplement d'exposer la possibilité d'utiliser les mêmes techniques et la nécessité de développer une stratégie d'adaptation pour cela.

Cette illustration simplifiée montre comment une image satellite simulée (à droite) peut être générée en plaçant une carte de base (Ville A) dans un modèle d'image satellite deepfake. Ce modèle est créé en distinguant un groupe de paires de cartes de base et d'images satellites d'une seconde ville (Ville B). Crédit : Zhao et al., 2021, Cartographie et science de l'information géographique

Comme le soulignent Zhao et ses co-auteurs, les faux emplacements et autres inexactitudes font partie de la cartographie depuis l'Antiquité. Cela est dû en partie à la nature même de la traduction de lieux réels sous forme de carte, car aucune carte ne peut capturer un lieu exactement tel qu'il est. Mais certaines inexactitudes dans les cartes sont des parodies créées par les cartographes. Le terme « villes de papier » décrit de fausses villes, montagnes, rivières ou autres éléments placés discrètement sur une carte pour empêcher la violation du droit d'auteur. À l'extrémité la plus légère du spectre, une carte routière officielle du ministère des Transports du Michigan dans les années 1970 incluait les villes fictives de « Beatosu et « Goblu », une pièce de théâtre sur « Beat OSU » et « Go Blue », parce que le chef de l'époque du département a voulu saluer son alma mater tout en protégeant les droits d'auteur de la carte.

Mais avec la prévalence des systèmes d'information géographique, de Google Earth et d'autres systèmes d'imagerie satellitaire, l'usurpation d'emplacement implique une sophistication bien plus grande, disent les chercheurs, et comporte plus de risques. En 2019, le directeur de la National Geospatial Intelligence Agency, l'organisation chargée de fournir des cartes et d'analyser les images satellites pour le département américain de la Défense, a laissé entendre que les images satellites manipulées par l'IA peuvent constituer une grave menace pour la sécurité nationale.

Ce sont des cartes et des images satellites, réelles et fausses, d'un quartier de Tacoma. Le coin supérieur gauche montre une image du logiciel de cartographie et le coin supérieur droit est une image satellite réelle du quartier. Les deux panneaux du bas sont des images satellites simulées du quartier, générées à partir des données géospatiales de Seattle (en bas à gauche) et de Pékin (en bas à droite). Crédit : Zhao et al., 2021, Cartographie et science de l'information géographique

Pour étudier comment les images satellites peuvent être truquées, Zhao et son équipe se sont tournés vers un cadre d'IA qui a été utilisé pour manipuler d'autres types de fichiers numériques. Lorsqu'il est appliqué au domaine de la cartographie, l'algorithme apprend essentiellement les caractéristiques des images satellite d'une zone urbaine, puis génère une image deepfake en alimentant les caractéristiques des caractéristiques de l'image satellite apprises sur une carte de base différente - de la même manière que les filtres d'image populaires peuvent cartographier les caractéristiques d'un visage humain sur un chat.

Ensuite, les chercheurs ont combiné des cartes et des images satellites de trois villes – Tacoma, Seattle et Pékin – pour comparer les caractéristiques et créer de nouvelles images d'une ville, tirées des caractéristiques des deux autres. Ils ont désigné Tacoma comme leur ville de « carte de base », puis ont exploré comment les caractéristiques géographiques et les structures urbaines de Seattle (similaires en termes de topographie et d'utilisation des terres) et de Pékin (différentes des deux) pourraient être incorporées pour produire des images deepfake de Tacoma.

Dans l'exemple ci-dessous, un quartier de Tacoma est montré dans le logiciel de cartographie (en haut à gauche) et dans une image satellite (en haut à droite). Les images satellites fausses et profondes qui ont suivi du même quartier reflètent les modèles visuels de Seattle et de Pékin. Les immeubles de faible hauteur et la verdure marquent la version "Seattle-ized" de Tacoma en bas à gauche, tandis que les bâtiments plus hauts de Pékin, que l'IA a adaptés aux structures des bâtiments de l'image de Tacoma, projettent des ombres - d'où l'apparence sombre des structures dans le image en bas à droite. Pourtant, dans les deux cas, les réseaux routiers et les emplacements des bâtiments sont similaires.

L'œil non averti peut avoir des difficultés à détecter les différences entre le vrai et le faux, soulignent les chercheurs. Un spectateur occasionnel pourrait attribuer les couleurs et les ombres simplement à une mauvaise qualité d'image. Pour tenter d'identifier un « faux », les chercheurs se sont concentrés sur des aspects plus techniques du traitement d'images, tels que les histogrammes de couleurs et les domaines fréquentiels et spatiaux.

Certaines images satellites simulées peuvent servir un objectif, a déclaré Zhao, en particulier lorsqu'elles représentent des zones géographiques sur des périodes de temps pour, par exemple, comprendre l'étalement urbain ou le changement climatique. Il peut y avoir un emplacement pour lequel il n'y a pas d'images pendant une certaine période de temps dans le passé, ou en prévision de l'avenir, donc créer de nouvelles images basées sur celles existantes - et les identifier clairement comme des simulations - pourrait combler les lacunes et aider donner un point de vue.

L'objectif de l'étude n'était pas de montrer que les données géospatiales peuvent être falsifiées, a déclaré Zhao. Les auteurs espèrent plutôt apprendre à détecter les fausses images afin que les géographes puissent commencer à développer des outils de littératie des données, similaires aux services de vérification des faits actuels, pour le bien du public.

"Alors que la technologie continue d'évoluer, cette étude vise à encourager une compréhension plus holistique des données et informations géographiques, afin que nous puissions démystifier la question de la fiabilité absolue des images satellites ou d'autres données géospatiales", a déclaré Zhao. "Nous voulons également développer une réflexion plus tournée vers l'avenir afin de prendre des contre-mesures telles que la vérification des faits si nécessaire", a-t-il déclaré.

Référence : “Fake géographie profonde ? Quand les données géospatiales rencontrent l'intelligence artificielle” par Bo Zhao, Shaozeng Zhang, Chunxue Xu, Yifan Sun et Chengbin Deng, 21 avril 2021, Cartographie et sciences de l'information géographique.
DOI : 10.1080/15230406.2021.1910075

Les co-auteurs de l'étude étaient Yifan Sun, un étudiant diplômé du département de géographie de l'UW Shaozeng Zhang et Chunxue Xu de l'Oregon State University et Chengbin Deng de l'Université de Binghamton.


Mardi 29 juin 2010

Semaine 7 : Décisions sur l'emplacement - par vous-même

Les cartes affichées dans l'article ci-dessous ont été réalisées dans le cadre du programme de certification SIG en ligne de l'Université de Floride occidentale, Applications des systèmes d'information géographique (GIS4048/5100). Les cartes ont été complétées pour le devoir de la semaine 7, qui consistait à créer un ensemble de cartes similaire à celui de l'activité de la semaine dernière, mais adapté à une recherche de proximité du désir des étudiants.

J'ai choisi de faire une étude de proximité similaire à celle des semaines dernières basée sur la recherche d'une nouvelle maison dans le comté de Marion, en Floride, par un couple, John et Wilma Green. Les Verts fictifs recherchent une maison dans le comté de Marion, principalement rural, dans l'espoir de trouver une maison de bon rapport qualité-prix qui réalise leur rêve de vivre sur un lac de taille décente, disons 200 acres ou plus. M. Green doit encore se rendre à son travail le long de l'Interstate 75 (I-75) et recherche donc également un emplacement proche d'une entrée/sortie de l'I-75, mais pas trop près. Les Verts sont également des cyclistes passionnés et sont intéressés à trouver une propriété à proximité des pistes cyclables désignées. Enfin, les Verts espèrent trouver un logement qui n'existe pas dans une zone moins dense du département.

Un ensemble de cartes a été préparé pour que les Verts leur présentent le comté de Marion et mettent en évidence les zones du comté qui pourraient le mieux répondre à leurs besoins sur la base des critères susmentionnés.


La première est une carte de base du comté qui met en évidence certaines des caractéristiques les plus remarquables, notamment les villes, les routes et les terres publiques, ainsi que les lacs et les pistes cyclables. Les Verts peuvent utiliser cette carte pour les aider à s'orienter sur l'emplacement des lieux et des caractéristiques alors qu'ils continuent à chercher une maison.


La carte suivante, la carte des préférences personnalisées, a été préparée en utilisant les différents critères spécifiés par les Verts comme importants dans leur décision d'emplacement de domicile. Ils ont précisé six critères :

1. Proximité des rampes d'accès pour l'Interstate 75
2. Proximité de l'Interstate 75, mais pas trop près.
3. Zones à faible densité de population.
4. Les zones qui ont des valeurs de propriété plus élevées.
5. Proximité des pistes cyclables désignées.
6. Proximité d'un lac de taille raisonnable (de préférence sur le lac).

La carte montre les résultats de l'analyse pour déterminer à quel point une zone dans le comté est proche de chacune des caractéristiques physiques ou comment les différentes zones se classent en ce qui concerne la densité de population et la valeur de la maison.


Enfin, la dernière carte montre deux analyses pondérées réalisées à l'aide du programme SIG en pondérant chacune des priorités des Verts en fonction de leur importance. Sur la carte de gauche, les Verts ont précisé que la chose la plus importante pour eux était la proximité d'un lac et qu'il était donc le mieux noté dans la superposition (30%). La densité de population était la deuxième plus importante (20 %), suivie de la valeur de la maison et de la proximité des pistes cyclables. Les critères de l'autoroute étaient chacun pondérés à 10 %, j'espère trouver des propriétés le long de ce corridor qui étaient de bons paris. Les meilleurs choix, plusieurs bords de lac réellement adjacents sont indiqués comme les zones bleues les plus foncées.

Pour la carte pondérée à droite, les préoccupations concernant la proximité de l'autoroute ont été entièrement supprimées, bien que la proximité des sorties ait été laissée à 15 %. L'idée était que les critères de sortie attireraient plus de zones de rang élevé proches de l'autoroute au nord, près de la frontière du comté d'Alachua autour du lac Orange. Cependant, chose assez surprenante, cela ne s'est pas produit. Un plus grand nombre de zones répondaient aux nouveaux critères, mais davantage se trouvaient dans un couloir à l'est de l'autoroute, mais la région d'Orange Lake ne s'est toujours pas inscrite comme une priorité absolue pour la recherche de domicile. Il est possible que les classements des sorties/entrées n'aient pas été enregistrés de la manière nécessaire pour générer le résultat attendu. Malheureusement, le temps était compté et puisque les deux cartes fournissaient des données utiles pour les Verts, elles ont été incluses dans le package de recherche de domicile final.


Vendredi 21 novembre 2014

Analyse de réseau

L'objectif de ce laboratoire était d'introduire, de se familiariser avec et d'effectuer une analyse de réseau. Pour atteindre cet objectif, le laboratoire a travaillé avec des données qui tournaient autour du thème d'un semestre de l'extraction du sable de fracturation. L'objectif du laboratoire était de déterminer les dommages potentiels pouvant être causés au réseau routier du Wisconsin par comté en raison de l'augmentation du nombre de camions transportant du sable. Dans la première partie de cet atelier, j'ai développé un script python qui m'a aidé à rechercher les mines souhaitées en fonction d'un ensemble spécifique de critères.

Afin de déterminer les dommages causés par les camions aux routes, je devais d'abord déterminer les itinéraires qu'ils emprunteraient le plus probablement.Pour ce faire, j'ai utilisé l'outil d'installation la plus proche d'ArcMap qui a établi le terminal ferroviaire le plus proche de chaque mine. Étant donné que le sable est le plus facilement transporté par les chemins de fer, il était prudent de dire que les camions transportant le sable se rendraient très probablement au terminal ferroviaire le plus proche. Une fois le terminal ferroviaire le plus proche identifié, l'outil est capable de calculer l'itinéraire le plus rapide, dans le réseau routier, de la mine au terminal. (Voir Figure 1)

Figure 1 : Carte des routes de camionnage du sable de fracturation

Une fois l'itinéraire le plus rapide établi, je devais ajouter dans mon ensemble de données de comté pour déterminer la longueur de l'itinéraire pour chaque comté. Pour ce faire, j'ai utilisé l'outil d'identification, qui prend une classe d'entités et lui donne les attributs d'une autre classe d'entités qui se chevauchent, dans ce cas, il s'agissait des routes chevauchant les comtés. Après l'exécution de l'outil d'identification, je devais maintenant déterminer la durée des itinéraires dans chaque comté. Puisqu'il y avait déjà un champ de longueur pour les routes, tout ce que j'avais à faire était de projeter l'ensemble de données afin que l'unité de mesure passe des degrés décimaux à une unité (mètres) pouvant effectuer des calculs arithmétiques. Une fois que mes données étaient en mètres, je pouvais ensuite effectuer une série d'additions et de calculs de champs pour découvrir combien d'argent il en coûte pour avoir les camions de sable sur la route. Vous trouverez ci-dessous le modèle de données qui montre tous les différents outils utilisés dans ce processus.

  • Les camions se rendront au terminal ferroviaire le plus proche de chaque mine
  • Chaque mine de sable effectue 50 trajets en camion jusqu'au terminal ferroviaire par an
  • Les dommages causés aux routes coûtent 2,2 cents par mile
  • Distance en Miles = Distance en mètres/1609
  • Miles parcourus par an = Distance en miles * 100 (50 trajets en camion multipliés par 2 en raison d'un aller-retour)
  • Coût pour chaque comté par an = Miles parcourus par an * 0,022 (2,2 cents)




Figure 3 : Tableau de chaque comté et leurs coûts estimés des dommages causés par le transport du sable de fracturation

Les résultats du tableau montrent que chaque année, il y a une quantité importante de dommages aux routes dans les comtés touchés par le transport du sable de fracturation. Avec la croissance rapide de l'industrie de l'extraction de sable de fracturation, les dommages devraient augmenter. Les effets sur les routes du transport du sable peuvent être un problème facile à négliger et, espérons-le, des chiffres comme celui-ci aideront à empêcher que cela ne se reproduise à l'avenir. Ces résultats posent une question importante à laquelle le grand public et les politiciens de l'État doivent réfléchir lorsqu'ils prennent des décisions concernant les mines de sable de fracturation. Cette question est de savoir si les effets secondaires de l'extraction de sable de fracturation en valent la peine ?

Dans l'ensemble, ce laboratoire m'a montré comment effectuer une analyse de réseau. L'analyse de réseau est essentielle pour comprendre si vous allez vous lancer dans le domaine des SIG et ce laboratoire m'a aidé à le réaliser. Les chiffres qui ont été calculés dans les résultats ne signifient pas grand-chose à cause de toutes les hypothèses, mais peut-être qu'avec des recherches plus approfondies, une étude pourrait être menée pour déterminer les véritables effets du transport du sable de fracturation. Cependant, malgré le manque de résultats précis, le laboratoire m'a permis de développer mes compétences en analyse de réseau.


Cartographie de l'infrastructure des services publics et migration des applications d'Avenue vers VBA

Ce document présente les conseils techniques et les méthodes pour la cartographie efficace de l'infrastructure des services publics municipaux. De plus, les spécificités de l'utilisation de VBA basé sur ArcInfo pour le développement d'applications sont abordées. Les utilisateurs expérimentés bénéficieront d'une exposition à la méthodologie détaillée présentée concernant la création d'une mosaïque utilitaire transparente conforme à l'exécution dans le poste de travail ArcInfo et la cartographie des caractéristiques ultérieure dans le modèle de données de géodatabase personnelle. La conception de l'interface utilisateur graphique est abordée à la fois conceptuellement et techniquement, avec une attention particulière portée à la conversion du code Avenue existant en équivalent VBA. De nombreux exemples de code sont fournis en parallèle : utilisant à la fois les formats de langage VBA et Avenue.

Introduction

Le document suivant s'adresse aux utilisateurs expérimentés d'ArcInfo en présentant les conseils techniques et les méthodes qui traitent de plusieurs problèmes spécifiques liés à l'application de G.I.S. dans un cadre de gouvernement local. En plus de la présentation de méthodologies spécifiques, cet article s'efforce de démontrer la faisabilité d'une entité gouvernementale locale atteignant un niveau relativement sophistiqué de G.I.S. développement, sans investir une petite fortune dans la sous-traitance de consultants spécialisés. Comme pour toute décision impliquée dans la mise en œuvre d'un SIG, il en résulte à la fois des avantages et des coûts.

Les avantages de l'exécution des méthodes décrites ici, en interne, sont nombreux et comprennent les suivants : a.) Absence d'« évaluations des besoins » coûteuses en raison du développement/croissance graduel et progressif du système, b.) facilité de débogage dans le cas de erreurs système dues à une connaissance intime des données et des applications personnalisées, c.) facilité d'adaptation aux changements futurs dans la structure de la base de données/ensemble de données, d.) facilité des futures personnalisations des applications, et e.) familiarité considérablement accrue du personnel avec chaque terrain individuel parcelle et les caractéristiques de l'infrastructure cartographiable. De plus, la création d'applications personnalisées en interne permet d'obtenir des interfaces utilisateur entièrement adaptées aux besoins particuliers de l'organisation et, par conséquent, ne contenant aucun module et/ou méthode « conservé ».

Les coûts associés à ces méthodes internes impliquent le temps requis pour le développement/croissance graduel et progressif du G.I.S. Fonctionnalité. Il est estimé qu'un laps de temps raisonnable pour le G.I.S. personnel pour développer et mettre en œuvre un système entièrement fonctionnel (cartographie de l'infrastructure et développement/déploiement de l'interface graphique) est d'environ 3 à 4 ans. Un consultant spécialisé, en revanche, pourrait probablement atteindre un niveau de développement équivalent (ou plus) en 6 à 12 mois, selon l'étendue de ses applications « personnalisées » existantes.

Comme pour tout plan d'action caractérisé à la fois par des coûts et des avantages, des arguments valables peuvent être avancés pour les deux parties. Néanmoins, la différence entre l'externalisation de G.I.S. le développement et la mise en œuvre des méthodes de ce document, en interne, peuvent facilement représenter des dépenses bien supérieures à un million de dollars, plus les frais de maintenance annuels ultérieurs. Bien que ce processus soit beaucoup plus lent que de tout sous-traiter, on estime que les avantages décrits ci-dessus sont presque incommensurables.

Méthodes

La ville de Coconut Creek, en Floride, a pris l'initiative d'effectuer une conversion en interne de toutes les infrastructures des services publics, des dessins mylar aux données spatiales numériques dans un système d'information géographique (SIG) entièrement fonctionnel. Cela comprend la phase initiale d'inventaire et de catalogage complet de tous les dessins d'enregistrement archivés, suivie de la numérisation de chaque document. ArcInfo d'Esri (versions 8.0.2 et 8.1) a ensuite été implémenté afin de faire pivoter, mettre à l'échelle, transformer et découper chaque image numérique via une procédure de géoréférencement. Une fois cela accompli, ce même logiciel a été utilisé pour cartographier toutes les informations pertinentes sur les lignes et les points dans une géodatabase personnelle dans le système de coordonnées State-Plane.

De plus, la ville de Coconut Creek a réalisé le développement d'applications internes personnalisées requis pour que le tout nouveau G.I.S. les données soient facilement accessibles aux utilisateurs du réseau. Cette interface utilisateur graphique (GUI) a été initialement développée et implémentée dans ArcView 3.1 à l'aide du langage de programmation Avenue. Par la suite, cette application GUI a été recréée dans ArcInfo 8.0.2/8.1 à l'aide de la version Esri de Visual Basic [ArcInfo-based Visual Basic for Applications (VBA)].

Numérisation des dessins d'enregistrement sur papier

On estime que la ville de Coconut Creek possède plus de 3 300 dessins conformes à l'exécution archivés dans deux grandes armoires de rangement en mylar. Parmi ces dessins, le G.I.S. La section a actuellement numérisé environ 80% des dessins d'enregistrement susmentionnés à l'aide d'un scanner monochrome (N/B) grand format (24"x36") possédant une seule caméra. Les images résultantes ont été créées avec une résolution de 500 dpi et enregistrées en utilisant un format d'image TIFF avec compression LZW. Au total, 2 640 fichiers ont été scannés et organisés en 444 dossiers. Le niveau supérieur de cette structure de répertoires est régi par un système de grille rectangulaire défini par une méthode Section-Township-Range (S-T-R). Chaque canton-rang est composé de 36 sections, chaque section ayant une superficie d'environ un mile carré. L'origine de ce système de grille est située à Tallahassee, en Floride. Les divisions de canton s'incrémentent dans une orientation nord-sud et les divisions de rang s'incrémentent dans une direction est-ouest. La ville de Coconut Creek, par exemple, est approximativement centrée sur les sections 19 et 20 du canton 48 sud, rang 42 est. Au total, le niveau supérieur de la structure de répertoires d'archives de fichiers numérisés de Coconut Creek est composé de 17 dossiers S-T-R uniques. Sous le dossier de chaque section se trouve une liste de sous-répertoires qui correspondent à la liste actuelle des plats enregistrés (ou dans certains cas, des re-plats) dans cette section. Dans le cas de plats supérieurs aux limites de section, une méthode pondérée est utilisée afin de déterminer la section dominante par pourcentage de surface. Les as-builts scannés ont ensuite été placés dans le répertoire de la section dominante avec des fichiers texte (Readme.txt) contenant les informations de localisation du répertoire étant placés dans les sous-répertoires de la section adjacente. Tous les mylars plats scannés résident à ce niveau de nom de plat dans la structure de répertoires. Rarement, le numéro de folio de l'évaluateur de propriété du comté d'un plat particulier a été remplacé par celui d'un plan de site du comté, et dans un tel cas, le nom du plan de site serait utilisé pour représenter la propriété. Au niveau du sous-répertoire tertiaire, tous les dossiers correspondent soit à des noms de plan de site de comté, soit à des noms de développement communautaire (voir Figure 1).

Figure 1 . Exemple de structure de répertoires d'archives numérisées et de conventions de nommage de fichiers standardisées

Création de mosaïque telle que construite utilitaire transparente

L'environnement ArcInfo Workstation a été principalement utilisé pour la création de la mosaïque de l'utilitaire tel que construit. Plus précisément, les commandes REGISTER et RECTIFY ont été utilisées afin de géoréférencer une partie des quelque 2000 feuilles conformes à l'exécution relatives à la zone de service de Coconut Creek Utility (remarque : exclut les feuilles conformes à l'exécution numérisées telles que les détails, les coupes transversales, couvertures, etc.). Avant l'enregistrement proprement dit, chaque image d'eau, d'égout ou de drainage conforme à l'exécution était importée dans Corel PhotoPaint. Les images ont ensuite été ré-échantillonnées à 300 dpi pour être enregistrées au format TIFF non compressé. Cette étape était nécessaire car la Ville n'a pas autorisé la compression LZW dans ArcInfo et la taille du fichier serait autrement ingérable. L'outil de masque irrégulier a ensuite été utilisé dans Corel PhotoPaint pour copier les régions appropriées de l'image rééchantillonnée et ainsi éliminer les informations indésirables. Selon le contenu du fichier tel que construit particulier, lors de l'enregistrement, l'image telle que construite nouvellement rééchantillonnée et découpée a été placée dans l'un des répertoires de fichiers suivants : ..ScannedFilesCompositeAsBuiltsWater, ..W&S, . .Égout, ou ..Drainage.

Ensuite, l'image a été importée dans ArcInfo Workstation pour enregistrement. Le processus d'enregistrement nécessite l'utilisation de données de couverture existantes afin de géoréférencer l'imagerie raster. Dans le cas du projet de la ville de Coconut Creek, un fond de carte à haute précision de positionnement horizontal a été utilisé comme données de couverture. Ce fond de carte de parcelle de qualité topographique a été créé pour la ville par le bureau de l'évaluateur des propriétés du comté de Broward dans le but de créer un fond de carte de comté de 440 milles carrés. Un GPS cinématique en temps réel (précision sub-centimétrique) a été mis en œuvre dans le cadre de ce projet de cartographie afin d'établir un réseau de points de contrôle à l'échelle du comté. On estime que le fond de carte parcellaire résultant utilisé dans ce projet Coconut Creek a une erreur horizontale de moins de 6 pouces à n'importe quel endroit donné.

REGISTER est une commande ARC qui lance un affichage multi-fenêtres interactif permettant à l'utilisateur de géoréférencer une image à l'aide des données de couverture existantes. REGISTER utilise des liens définis par l'utilisateur pour appliquer une transformation affine (1er ordre, équation linéaire) afin de calculer la quantité de mise à l'échelle, de rotation et de translation requise pour aligner l'image sur les coordonnées de la carte. Ainsi, l'échelle et la rotation de l'image géoréférencée ne doivent pas varier sur l'ensemble de l'image. Un minimum de trois liens définis par l'utilisateur, ou points de contrôle, est requis pour le processus de géoréférencement. Dans la plupart des cas, l'enregistrement des feuilles telles que construites dans le projet City of Coconut Creek a utilisé trois points de contrôle, préférentiellement le long de trois bords/coins de l'image. La qualité de l'ajustement a été déterminée visuellement en verrouillant l'image transformée et le dessin au trait des données de couverture dans la fenêtre de superposition de l'environnement REGISTER. Dans le cas d'un mauvais repérage (> 3 pi de décalage), le processus a été répété avec jusqu'à quatre points de contrôle définis par l'utilisateur. Lorsque vous utilisez plus de trois liens avec REGISTER, l'erreur peut être évaluée par le rapport de solution des moindres carrés fourni par ArcInfo. Dans le cas du projet City of Coconut Creek, l'adéquation restait à déterminer visuellement, même dans le cas de quatre liens. Une fois que l'enregistrement était acceptable (c'est-à-dire, une superposition montrant un décalage ligne/image de moins de 3 pieds), le processus d'enregistrement a été terminé en enregistrant la transformation dans un fichier mondial (*.tfw). Le processus d'enregistrement a ensuite été suivi d'une rectification de l'image originale sur la base des informations enregistrées dans le fichier mondial. RECTIFY est la commande ArcInfo qui applique la transformation enregistrée de façon permanente à l'image, créant une nouvelle image géoréférencée qui est correctement tournée, mise à l'échelle et transformée en coordonnées cartographiques.

Cartographie des caractéristiques des utilitaires dans la géobase de données personnelle

La cartographie des caractéristiques des utilitaires a été effectuée dans l'environnement de bureau d'ArcInfo 8.0.2/8.1. Le choix a été fait de créer une GeoDatabase personnelle (pGDB) afin d'utiliser les capacités de cartographie avancées disponibles dans ArcMap. La conception de la géodatabase, y compris les propriétés des classes d'entités, est résumée dans le tableau 1. Comme on peut le voir, plusieurs valeurs par défaut ont été automatiquement attribuées aux tables attributaires de chaque entité nouvellement créée d'une classe d'entités donnée. De plus, aucune règle de validation d'attribut n'a été créée pour les sous-types définis (c'est-à-dire aucun domaine d'attribut, aucune règle de connectivité ni aucune règle de relation). Une fois toutes les classes d'entités et leurs propriétés de la pGDB créées, un document ArcMap distinct (*.mxd) a été créé pour chacune des trois couches de services publics : eau, égouts et drainage. Au niveau supérieur de la légende de chaque document, toutes les couches de données d'entités correspondantes ont été positionnées dans l'ordre : point, ligne, polygone. En dessous de ces ensembles de données, une photographie aérienne en noir et blanc haute résolution était positionnée et affichée avec une transparence de 35 %. Chaque image as-built géoréférencée a ensuite été introduite dans le document ArcMap respectif et positionnée au niveau inférieur de la légende ordonnée entre elles afin d'obtenir une visibilité maximale de chaque image lorsqu'elle est affichée dans la mosaïque. De cette façon, la photographie aérienne est suffisamment transparente pour voir à travers, ce qui permet à l'utilisateur de visualiser simultanément le G.I.S. des couches de données, des photographies aériennes et des dessins d'exécution numérisés.

Tableau 1 . Résumé des classes d'entités de la géodatabase personnelle créées pour la cartographie des infrastructures de services publics dans la ville de Coconut Creek. De plus, les sous-types définis et les valeurs d'attribut par défaut attribuées automatiquement sont affichés.

La numérisation des caractéristiques cartographiques individuelles a ensuite été effectuée en traçant le tracé des lignes et des caractéristiques ponctuelles indiqués sur les as-built numériques géoréférencés. La numérisation de nouvelles entités dans Desktop ArcInfo se caractérise par l'affichage de la nouvelle entité avec la symbologie correcte au moment de sa création. De plus, la photographie aérienne transparente peut être affichée sur la mosaïque géoréférencée telle que construite pour faciliter davantage le processus de numérisation. Au fur et à mesure que chaque entité point/ligne est créée, toute modification des attributions d'attributs par défaut est effectuée. Par exemple, si une ligne d'eau est créée, l'attribut par défaut attribué au champ TYPE est DIP 8". Si cette canalisation est délimitée comme une canalisation 6" sur l'image as-built géoréférencée, la valeur peut être modifiée immédiatement dans le fenêtre d'attributs" lancé à partir de la barre d'outils de l'éditeur. Dans le projet Coconut Creek, il a été décidé de numériser les symboles ponctuels dans un ordre spécifique afin d'obtenir la visibilité souhaitée des caractéristiques. Les symboles ponctuels créés dans une pGDB sont superposés dans l'affichage selon l'ordre dans lequel ils sont numérisés. Par conséquent, il était nécessaire de déterminer l'ordre de numérisation le plus efficace afin d'obtenir la visibilité optimale de la symbologie des points de ce projet (voir la figure 2 pour les symboles). Par exemple, les tés ont été numérisés en premier, suivis des robinets-vannes (ou vannes de bouches d'incendie), suivis des réducteurs, puis des bouches d'incendie. Cet ordre a été mis en œuvre principalement en raison de la visibilité, mais peut également indiquer l'importance des différentes fonctionnalités.

Figure 2 . Symbologie cartographique actuelle pour les entités ponctuelles dans la géobase de données personnelle de Coconut Creek

L'environnement d'accrochage dynamique fournit un moyen rapide non seulement de modifier l'entité d'accrochage actuelle, mais également de basculer entre les jeux de classes d'entités. De plus, tout un tableau hiérarchique de fonctions d'accrochage actives peut être invoqué simultanément. Dans le cas des canalisations d'égout, les conduites gravitaires ont été créées en accrochant les extrémités de chaque arc aux regards d'égout précédemment créés. Les conduites d'égout ont ensuite été accrochées aux arcs des conduites gravitaires nouvellement numérisées. De cette façon, les conduites gravitaires ne sont pas divisées en segments de ligne par les conduites latérales de raccordement (comme dans la réalité) et sont continues de trou d'homme à trou d'homme. Néanmoins, les conduites latérales d'égout sont fixées à l'emplacement exact du bord de la conduite par gravité. Dans le cas du système d'aqueduc, les conduites principales de distribution ont été numérisées en premier, avec un accrochage aux extrémités (nœuds) de la conduite principale. Des arcs principaux de transmission ont été rompus aux emplacements tels que construits de toutes les structures d'approvisionnement en eau (té, vannes, réducteurs, etc.). La numérisation du réseau a d'abord permis à la Ville de tirer pleinement parti des options de tracé parallèle, perpendiculaire et d'angle spécifié disponibles dans l'environnement de bureau. Par la suite, les caractéristiques des points d'eau ont été accrochées aux nœuds des conduites principales, les conduites d'eau étant accrochées aux bords de l'arc des conduites principales pour obtenir la même connectivité que celle décrite pour le système d'égout.

Migration de l'interface utilisateur graphique d'Avenue vers VBA

Les principes fondamentaux requis pour la migration d'Arc Avenue vers VBA pour ArcInfo ont été trouvés dans la publication Esri : ArcObjects Developer's Guide. Il s'agit de l'un des nombreux manuels fournis par Esri avec ArcInfo 8.0.2 (voir également : ArcGIS Disk #3 : Digital Books and Sample Maps "DigitalBooksArcObjectsGettingStartedIn VB" and ..ExploringArcObjects"). de ces publications fournissent des exemples de conversion de code (d'Avenue à VBA), il fournit des exemples VBA simples (et complexes) qui donnent un aperçu de la syntaxe et de la structure du codage dans le nouvel environnement de développement.De tels exemples de début sont essentiels du fait qu'ArcGIS 8.1 est construit sur un code source de langage compilé, ce qui rend impossible l'examen de la texture des scripts système. De plus, certains des exemples de cette publication du Guide du développeur montrent comment le code VBA peut être utilisé pour exécuter les commandes intégrées des menus, boutons et outils existants. Les caractéristiques supplémentaires de l'environnement VBA incluent l'utilisation requise de sous-routines, de modules et de fonctions ainsi que la nécessité d'une déclaration de variable [définissant le type de variable (c'est-à-dire myVar As Integer, String, etc.) pVar As ICollection)]. Les sous-routines et les fonctions remplacent le besoin des nombreux fichiers de script Avenue, et la déclaration de variable n'est plus simplement impliquée par l'interface DocGui en cours d'implémentation (c'est-à-dire Vue, Mise en page, Table, etc.). Dans ArcInfo 8.1, VBA contient le plus grand modèle d'objet basé sur COM jamais créé dans une application. Il s'ensuit que le modèle objet est aussi le plus complexe et le plus étendu. La déclaration de variable est clairement la partie la plus difficile du codage en VBA pour ArcGIS.

L'existence/le développement d'organigrammes programmatiques revêt une importance primordiale dans le processus de migration de l'interface graphique. Comme le montrent les annexes II et IV, un organigramme programmatique a été créé par la ville de Coconut Creek pour le développement actuel de l'interface graphique utilisant à la fois Avenue et VBA. Le re-développement de la fonctionnalité GUI a été accompli en émulant la fonction de chaque routine, une à la fois, dans un ordre descendant. En ayant l'organigramme à portée de main, chaque routine peut être examinée individuellement en isolant tous les scripts et boîtes de dialogue Avenue associés. Une fois cela fait, chaque boîte de dialogue peut ensuite être recréée graphiquement dans l'environnement de développement VBA, le code étant attaché aux événements de formulaire afin d'émuler la fonctionnalité Avenue d'origine. La seule exception à cela était dans le cas de la routine LOCATION du formulaire "ParcelSearch". Dans ce cas, il était nécessaire que l'application effectue un zoom sur la zone de ville sélectionnée (par clic de l'utilisateur), suivi immédiatement d'un zoom sur la zone sélectionnée. La première tentative impliquait l'exécution de l'outil intégré "Query_SelectFeatures", suivi de "Query_ZoomToSelected". Cela ne peut pas fonctionner car la nature multithread de VBA dans ArcInfo 8.1 entraîne l'exécution simultanée de la commande de zoom avant avec la commande de sélection d'entité. Dans ce cas, une bibliothèque de liens dynamiques Active-X (*.dll) a été créée afin de créer un outil de sélection de zoom personnalisé. Cette méthode nécessite l'utilisation de VB 6.0 pour créer un projet autonome dans lequel le module ArcID a été importé. Au lieu que ce projet VB soit ensuite compilé dans un fichier *.exe standard, il est compilé dans un fichier *.dll qui peut ensuite être ajouté en tant que ressource au projet VBA. Un exemple étape par étape de cette technique est décrit ci-dessous :

De cette manière, l'événement souris vers le bas est affecté pour sélectionner un polygone par le clic de souris de l'utilisateur, tandis que l'événement souris vers le haut est affecté pour zoomer sur le polygone sélectionné lors du relâchement du bouton de la souris.

Semblable au problème multithread décrit ci-dessus, l'utilisation d'appels à des sous-programmes ou à des fonctions définies par l'utilisateur peut entraîner l'exécution de code en parallèle lorsqu'il est destiné à s'exécuter de manière séquentielle. Dans ces cas, où il n'y a pas de problème d'attente pour qu'un outil reçoive une entrée de l'utilisateur, l'utilisation de l'instruction "DoEvents" est suffisante pour donner l'exécution afin que le système d'exploitation puisse traiter d'autres événements simultanément (voir Annexe VI ).

Discussion

L'objectif de cette section est de discuter des évaluations de l'auteur quant à l'applicabilité, la pertinence et la pertinence des travaux liés au SIG effectués par la ville de Coconut Creek. Il est de la plus haute importance de transmettre au lecteur une idée de ce qui a bien fonctionné, de ce qui n'a pas fonctionné et de ce que nous aurions fait différemment si nous avions eu l'occasion de recommencer. Un aperçu du raisonnement qui sous-tend la méthodologie employée est susceptible d'être aussi important que la méthodologie elle-même.

Considérations relatives à la numérisation des dessins d'enregistrement sur papier

Il est de la plus haute importance pour l'organisation qui entame un processus de numérisation à grande échelle, d'inventorier d'abord minutieusement toutes les parcelles de propriété dans ses limites légales (voir l'annexe I). L'essence de la structure du répertoire des images numérisées réside dans le fait que le chemin du répertoire des as-builts numériques d'une parcelle est concaténé dynamiquement par l'interface graphique, car le système est interrogé par l'utilisateur (voir l'exemple de code #3 dans les annexes III et VI) . Si les archives numériques sont mal construites ou mal renseignées, le résultat final sera que les dessins d'enregistrement correspondants deviendront inaccessibles. En d'autres termes, l'emplacement de répertoire ultime d'un fichier particulier déterminera s'il sera trouvé par les applications GUI suivantes. De plus, la convention de nommage des fichiers adoptée déterminera l'utilité de l'archive pour les utilisateurs finaux réels. En ce qui concerne la partie physique du processus de numérisation, la ville de Coconut Creek a mis en place un système utilisant un scanner monochrome (N/B) grand format (24"x36") avec une seule caméra. Les améliorations futures incluront le passage à un scanner numérique à deux caméras pour une plus grande vitesse de numérisation. D'autres changements seront une réduction de la résolution de l'image numérisée (300 dpi), afin d'éliminer le besoin de compression LZW. Une résolution de fichier numérisé de 500 dpi est excessive, même pour un traçage à grande échelle.

Création de mosaïque telle que construite

En ce qui concerne le processus de création de mosaïque As-Built, les commandes REGISTER et RECTIFY ont été utilisées dans ArcInfo Workstation en raison de l'absence de capacité de géoréférencement dans l'environnement Desktop d'ArcInfo 8.0.2. REGISTER est une commande ARC qui utilise des liens définis par l'utilisateur pour appliquer une transformation affine afin de calculer la quantité de mise à l'échelle, de rotation et de translation requise pour aligner l'image sur les coordonnées de la carte. Cette transformation affine ne gomme pas l'image ! La rotation, la translation et la mise à l'échelle sont appliquées uniformément sur l'ensemble de l'image. Par conséquent, il s'ensuit que pour que le processus d'enregistrement réussisse, les données de couverture de fond de carte doivent posséder un degré relativement élevé de précision de position horizontale (de préférence une cartographie de qualité topographique), afin de s'adapter à l'ingénierie "à l'échelle" telle que -images construites. Il est important de noter que cette même méthodologie peut être adaptée pour fonctionner dans la fonctionnalité de géoréférencement fournie dans l'environnement de bureau de la nouvelle version d'ArcInfo 8.1. De plus, le géoréférencement en 8.1 permet la rectification d'une image numérisée par rapport à une photographie aérienne rectifiée existante. Cela peut être une capacité puissante pour les organisations qui ont investi dans la photographie aérienne orthorectifiée de haute précision, par opposition à un fond de carte parcellaire de qualité topographique (comme dans le cas de la ville de Coconut Creek). Il convient toutefois de noter que si ArcInfo 8.1 est utilisé, les équations non linéaires du deuxième/troisième ordre ne sont pas recommandées. Les dessins d'enregistrement des feuilles de caoutchouc ne doivent pas être adoptés comme méthodologie lorsque la précision horizontale est la principale préoccupation.

En ce qui concerne la méthodologie Workstation, REGISTER calcule l'ajustement en partant de l'hypothèse que tous les liens sont de qualité égale. Par conséquent, si quatre liens ou plus sont utilisés, le lien 3 peut afficher une erreur élevée dans le rapport des moindres carrés. En utilisant l'hypothèse ci-dessus, la suppression du lien 3 devrait entraîner un meilleur enregistrement global. En réalité, le lien 3 pourrait être un lien de haute qualité dont la distance de décalage est influencée par d'autres liens de faible qualité. Par conséquent, l'inspection visuelle de la qualité de l'ajustement (examen graphique de la quantité de décalage entre l'image et la couverture) a été jugée de la plus haute importance dans le projet de la ville de Coconut Creek. Bien entendu, augmenter le nombre de liens diluera l'effet délétère de la création d'un lien de mauvaise qualité. Un bien meilleur choix consiste à s'appuyer sur la méthode des 3 maillons pour signaler immédiatement la présence d'un lien erroné permettant de réinitialiser la transformation et de l'effectuer à nouveau pour atteindre la qualité d'ajustement nécessaire par inspection visuelle.

Justification de la cartographie des caractéristiques utilitaires dans la géobase de données personnelle

La cartographie des caractéristiques a été choisie pour être effectuée dans l'environnement ArcInfo Desktop sur Workstation ArcInfo pour plusieurs facteurs. Tout d'abord, la symbologie d'entité avancée a permis de distinguer visuellement les éléments de carte thématique tout en numérisant chaque entité. Cette symbologie comprend tous les symboles standardisés d'ingénierie/AutoCAD, auparavant uniquement disponibles dans Arc FM. Il n'était plus nécessaire de répertorier les valeurs d'attribut pendant le processus de numérisation, afin de confirmer qu'une caractéristique avait été correctement attribuée. Deuxièmement, le remplissage automatique des éléments d'attribut avec des valeurs par défaut a fourni un moyen de développement de base de données rapide, cohérent et précis. Desktop ArcInfo possède en outre de nombreux outils de numérisation de type AutoCAD (c'est-à-dire dessiner des arcs perpendiculaires, parallèles, circulaires, etc.) qui ont considérablement facilité le processus de numérisation. De plus, l'environnement de capture dynamique était étendu et rapidement convertible entre les classes d'entités (point, nœud, arête, etc.) et les jeux de données (fond de carte parcellaire, conduites d'eau, structures d'eau, etc.). L'affichage raster avancé de l'environnement de bureau a en outre permis l'incorporation d'une superposition de photos aériennes haute résolution transparente à 35 %. Cela a permis d'utiliser simultanément la photographie aérienne en conjonction avec la mosaïque d'images géoréférencées conformes à l'exécution.

Faire la migration d'Avenue vers VBA

Contrairement à l'environnement Arc Avenue, le code système des boutons, outils et commandes de menu existants n'est pas disponible pour une utilisation directe par le programmeur. Alors que les boutons, outils et commandes de menu sont accessibles en exécutant leur fonction, le code système est compilé et ne peut pas être consulté afin d'apprendre à écrire dans l'environnement de programmation VBA. Cela représente un changement radical par rapport à la méthode courante d'apprentissage d'Avenue. Un écart encore plus important par rapport à Arc Avenue est la nécessité d'une déclaration de variable en VBA. Ce sera probablement le plus grand obstacle auquel un ancien programmeur d'Avenue devra faire face dans le processus de migration. Dans Avenue, la déclaration de variable était implicitement définie par l'utilisation d'objets appartenant à une interface DocGui particulière ( c'est-à-dire Vue, Mise en page, Tableau, etc. ). De même, les références d'objet dans ArcGIS 8.1 héritent d'un ensemble spécifique de méthodes en fonction du type d'interface implémentée. Une interface en VBA se compose d'un groupe de méthodes et de propriétés. Si une interface hérite d'une autre, alors toutes les méthodes et propriétés du parent sont directement disponibles dans l'objet héritant. Lorsque l'on considère l'énormité du modèle objet basé sur COM d'ArcGIS et les tableaux à plusieurs niveaux d'interfaces disponibles qui en résultent, la déclaration de variables dans VBA peut être une tâche écrasante. Un exemple de la signification de la déclaration de variable et des subtilités de l'implémentation de l'interface correcte est montré dans l'exemple ci-dessous.

Dans les deux parties de cet exemple, un exemple de code pour zoomer l'étendue de la vue jusqu'aux limites d'une couche de données d'entité donnée est examiné. Sur la gauche, l'exemple de code montre une sous-routine fonctionnelle qui zoome la fenêtre de vue ArcMap sur l'étendue de la carte de la première couche dans la légende de la carte. A droite, le corrélat non fonctionnel a substitué la variable pMap à pActiveView . Cela peut sembler être une substitution valide puisque la référence d'objet à pMap avait été précédemment affectée à la variable pActiveView . La raison pour laquelle cette substitution ne fonctionne pas est due au fait qu'en implémentant l'interface IActiveView via l'instruction Set, les méthodes Extent et Refresh sont possibles en ce qui concerne l'affichage de la fenêtre de vue visible.

Certes, il est extrêmement difficile de maîtriser les subtilités de la mise en œuvre des différentes interfaces disponibles pour la manipulation d'objets ArcMap en VBA. Il s'ensuit que pour certains, il est valable de continuer à utiliser des applications basées sur Avenue dans ArcView 3.x. Néanmoins, Arc Avenue et Visual Basic sont tous deux des langages de programmation orientés objet (object.request), et par conséquent, le processus de migration est quelque peu facilité. De plus, la bibliothèque étendue d'objets Arc fournit une vaste gamme de fonctionnalités ArcGIS via Visual Basic spécifique à l'application (VBA pour ArcInfo). Les programmeurs ex-Avenue réaliseront rapidement la compacité de l'attachement de code aux événements de formulaire, plutôt que de créer des dizaines de scripts Avenue individuels. De plus, les formulaires VBA possèdent un degré de personnalisation beaucoup plus élevé que celui des boîtes de dialogue pouvant être créées via ArcView Dialog Designer. Il est clairement évident pourquoi le script Avenue existant ne peut pas être, et ne pourra jamais être, simplement porté sur VBA.

Conclusion

L'intention de ce document, depuis sa création, a été de servir de guide de référence pour les entités souhaitant réaliser un SIG pleinement fonctionnel. conçu et mis en œuvre en interne. Les agences gouvernementales ont été conçues comme le public cible idéal en raison de l'investissement en temps important requis pour le développement progressif d'un tel programme. On espère en outre que grâce à l'inclusion de plusieurs annexes détaillées, les utilisateurs expérimentés disposeront des outils nécessaires pour personnaliser ArcGIS dans une mesure appréciable en effectuant la migration complète vers le nouvel environnement de codage. De toute évidence, Esri a développé ArcGIS dans le but principal de rendre son logiciel facilement extensible et personnalisable. Le potentiel de croissance du G.I.S. fonctionnalité, et heureusement pour cet auteur, la ville de Coconut Creek a été extrêmement progressiste et a encouragé son développement interne. La Ville est actuellement dans 2 ans dans son G.I.S. engagement et estimé à 2 ans avant de posséder un système d'information géographique de pointe à l'échelle de l'entreprise.

Annexes

Annexe I : Exemple de l'inventaire documenté existant de toutes les parcelles de propriété dans les limites légales de la ville de Coconut Creek

Annexe II : Organigramme programmatique représentant le développement de l'interface graphique dans Avenue

Annexe III : Exemples de codes d'avenue

Annexe IV : Organigramme programmatique représentant le développement de l'interface graphique en VBA

Annexe V : Exemple d'illustration montrant l'utilisation à l'écran de l'interface graphique VBA


Le choix d'esriSpatialRelEnum peut ralentir les performances d'IFeatureCursor NextFeature

Quelqu'un a-t-il remarqué des différences de performances lors de la lecture en boucle des fonctionnalités renvoyées par une recherche, en fonction de l'esriSpatialRelEnum que vous avez utilisé ? esriSpatialRelIntersects semble être beaucoup plus rapide que esriSpatialRelContains. Notez que la recherche elle-même est rapide, mais ce qui est lent, c'est de parcourir les fonctionnalités du curseur renvoyées par la recherche. Je ne pensais pas que esriSpatialRelEnum avait quoi que ce soit à voir avec IFeatureCursor.NextFeature.

Est-ce que je fais quelque chose de mal avec ma configuration du filtre spatial ? Y at-il un travail autour?

Pour tester, créez un complément avec un bouton et attachez-lui ce code. Ajoutez ensuite une couche de polygones à ArcMap. J'ai utilisé l'exemple de données Globe sur mon ordinateur dans C:Program Files (x86)ArcGISDesktop10.0ArcGlobeDatacontinent.shp. Cliquez sur le bouton et voyez combien de temps cela prend.

Le code utilise ESRI.ArcGIS.ADF, ESRI.ArcGIS.Carto et ESRI.ArcGIS.Geodatabase.

Vous avez raison. La partie lente est le premier appel à la fonction suivante.

J'ai essayé de créer de nouvelles classes d'entités dans ma géodatabase personnelle pour jouer avec les index spatiaux, en ajoutant mes données existantes aux nouvelles classes d'entités pour chaque test. Les données sont en coordonnées géographiques et couvrent le golfe du Mexique. J'ai essayé des tailles de grille de 18, 1 et 0,1, et j'ai obtenu à peu près les mêmes mauvaises performances à chaque fois. Hummm.

la taille de la grille dépend de la taille de vos entités. La requête spatiale utilise généralement les grilles comme première coupe pour affiner les entités candidates. Une taille de grille trop grande entraînera l'évaluation d'un trop grand nombre de fonctionnalités. Une taille de grille trop petite entraînera un trop grand nombre de cellules de grille qui doivent être pré-évaluées. Il existe des lignes directrices pour les tailles de grille dans le document d'aide et des moyens de les évaluer.

Avez-vous essayé une géodatabase fichier plutôt qu'une géodatabase personnelle. Vous devez également compacter la géodatabase s'il y a eu beaucoup de modifications ou si les données ont été chargées sans placer la base de données en mode de chargement uniquement. Les géodatabases personnelles et fichier ont également des tables d'ajout et de suppression en interne.

D'autres facteurs sont en jeu tels que la complexité de la fonction de recherche. Avoir une fonctionnalité très complexe peut également ralentir les choses.

par DuncanHornby

Je ne programme pas en c# donc quand j'ai regardé votre code j'ai remarqué quelque chose que je ne ferais pas. Cela pourrait donc être un faux-fuyant et peut-être que ce que vous faites est simplement plus lisse que la façon dont je programme ? Quoi qu'il en soit, la ligne que je pensais inhabituelle était:

while ((feature = curseur.NextFeature()) != null)

Je ne sais pas si c'est une chose de préférence mais j'aurais fait (en VB):

pFeature = pCurseur.NextFeature
faire sans pFeature n'est rien
compteur = compteur +1
pFeature = pCurseur.NextFeature
boucle

Ainsi, la récupération de la fonctionnalité que vous testez se fait dans la boucle et non sur la ligne qui évalue si ce n'est rien.

J'ai suivi les conseils et essayé la requête avec et sans index multiples, car certaines fonctionnalités sont des milliers de fois plus volumineuses que d'autres dans cet ensemble de données. Pas de réelle amélioration. Le fichier GDB n'a pas beaucoup aidé non plus. J'ai aussi essayé de compacter la base de données.

Les fonctionnalités sont principalement des rectangles, et je recherche en utilisant un rectangle de l'une des formes de la fonctionnalité à des fins de test. Ils sont dans un système de coordonnées géographiques, mais les projeter n'a pas aidé.

J'ai trouvé deux choses qui m'ont beaucoup aidé. L'éclatement d'entités en plusieurs parties en entités uniques (environ 2 % des 628 entités sont en plusieurs parties) a amélioré les performances d'un facteur 4. Ouverture d'une session de mise à jour et déplacement d'entités afin que moins d'entre elles se chevauchent, amélioration des performances d'un facteur 100. chaque caractéristique chevauche une autre caractéristique, comme des feuilles dans une pile. Cela semble être mon plus gros problème, mais c'est la nature de cet ensemble de données.

J'aurais probablement dû inclure une meilleure description de cet ensemble de données dans mon message d'origine. Je ne savais pas que les caractéristiques qui se chevauchent seraient le coupable, alors honte à mon intuition.


Application mobile eBird

À l'origine, l'application BirdLog, Cornell l'a reprise, l'a réorganisée et l'a fait sienne. La clé pour Cornell et le projet eBird était d'avoir une application de saisie de données unique, gratuite et globale pour eBird.

Si vous utilisez la version Web d'eBird, cette application est indispensable. Je l'utilise beaucoup pour la saisie de la liste de contrôle eBird - ils l'ont rendu beaucoup plus convivial sur Internet et travaillent sur de nombreuses nouvelles fonctionnalités intéressantes, telles que la connexion à votre compte eBird individuel, etc.Il existe un certain nombre de fonctions de saisie de liste de contrôle - y compris l'utilisation d'emplacements récents, la sélection d'un point d'accès à partir d'une carte (vous devez être en ligne pour que cela fonctionne), la création de votre propre emplacement personnel et la sélection d'un point d'accès à proximité ou la recherche d'un par ville ou lieu. Vous pouvez créer une liste de contrôle pour une utilisation hors ligne, mais vous devez avoir créé une liste de contrôle au préalable en ligne pour que cela fonctionne correctement, et la configuration de futures listes de contrôle (pour les voyages où vous observez des oiseaux hors de portée du service cellulaire) est également un peu maladroit . Mais dans l'ensemble, si vous gardez une liste et utilisez eBird (sinon, pourquoi pas ?), alors procurez-vous cette application. C'est une évidence.


Contenu

Les données, l'information, la connaissance et la sagesse sont des concepts étroitement liés, mais chacun a son propre rôle par rapport à l'autre, et chaque terme a sa propre signification. Selon une vision commune, les données sont collectées et les données analysées ne deviennent des informations appropriées pour prendre des décisions qu'une fois qu'elles ont été analysées d'une manière ou d'une autre. [8] On peut dire que la mesure dans laquelle un ensemble de données est informatif pour quelqu'un dépend de la mesure dans laquelle il est inattendu par cette personne. La quantité d'informations contenues dans un flux de données peut être caractérisée par son entropie de Shannon.

La connaissance est la compréhension basée sur une vaste expérience du traitement de l'information sur un sujet. Par exemple, la hauteur du mont Everest est généralement considérée comme une donnée. La hauteur peut être mesurée avec précision avec un altimètre et entrée dans une base de données. Ces données peuvent être incluses dans un livre avec d'autres données sur le mont Everest pour décrire la montagne d'une manière utile pour ceux qui souhaitent prendre une décision sur la meilleure méthode pour l'escalader. Une compréhension basée sur l'expérience de l'escalade des montagnes qui pourrait conseiller les personnes sur le chemin pour atteindre le sommet du mont Everest peut être considérée comme une "connaissance". L'escalade pratique du sommet du mont Everest basée sur cette connaissance peut être considérée comme de la « sagesse ». En d'autres termes, la sagesse fait référence à l'application pratique des connaissances d'une personne dans les circonstances où le bien peut en résulter. Ainsi la sagesse complète et complète la série « données », « information » et « connaissance » de concepts de plus en plus abstraits.

Les données sont souvent supposées être le concept le moins abstrait, l'information le suivant le moins et la connaissance le plus abstrait. [9] De ce point de vue, les données deviennent des informations par interprétation, par exemple, la hauteur du mont Everest est généralement considérée comme des « données », un livre sur les caractéristiques géologiques du mont Everest peut être considéré comme une « information », et un guide d'alpiniste contenant des informations pratiques sur les meilleurs moyen d'atteindre le sommet du mont Everest peut être considéré comme une "connaissance". « Information » porte une diversité de significations qui vont de l'usage quotidien à l'usage technique. Ce point de vue, cependant, a également été avancé pour inverser la manière dont les données émergent de l'information et l'information de la connaissance. [10] De manière générale, le concept d'information est étroitement lié aux notions de contrainte, de communication, de contrôle, de données, de forme, d'instruction, de connaissance, de sens, de stimulus mental, de modèle, de perception et de représentation. Beynon-Davies utilise le concept de signe pour différencier les données des informations. Les données sont une série de symboles, tandis que les informations se produisent lorsque les symboles sont utilisés pour faire référence à quelque chose. [11] [12]

Avant le développement des appareils et des machines informatiques, les gens devaient collecter manuellement des données et leur imposer des modèles. Depuis le développement des appareils et des machines informatiques, ces appareils peuvent également collecter des données. Dans les années 2010, les ordinateurs sont largement utilisés dans de nombreux domaines pour collecter des données et les trier ou les traiter, dans des disciplines allant du marketing, de l'analyse de l'utilisation des services sociaux par les citoyens à la recherche scientifique. Ces modèles de données sont considérés comme des informations qui peuvent être utilisées pour améliorer les connaissances. Ces modèles peuvent être interprétés comme « vérité » (bien que la « vérité » puisse être un concept subjectif), et peuvent être autorisés en tant que critères esthétiques et éthiques dans certaines disciplines ou cultures. Les événements qui laissent derrière eux des restes physiques ou virtuels perceptibles peuvent être retracés grâce aux données. Les notes ne sont plus considérées comme des données une fois le lien entre la note et l'observation rompu. [13]

Les dispositifs informatiques mécaniques sont classés selon les moyens par lesquels ils représentent les données. Un ordinateur analogique représente une donnée sous la forme d'une tension, d'une distance, d'une position ou d'une autre quantité physique. Un ordinateur numérique représente une donnée sous la forme d'une séquence de symboles tirés d'un alphabet fixe. Les ordinateurs numériques les plus courants utilisent un alphabet binaire, c'est-à-dire un alphabet de deux caractères, généralement noté "0" et "1". Des représentations plus familières, telles que des nombres ou des lettres, sont alors construites à partir de l'alphabet binaire. Certaines formes spéciales de données sont distinguées. Un programme informatique est un ensemble de données qui peuvent être interprétées comme des instructions. La plupart des langages informatiques font une distinction entre les programmes et les autres données sur lesquelles les programmes fonctionnent, mais dans certains langages, notamment Lisp et les langages similaires, les programmes sont essentiellement impossibles à distinguer des autres données. Il est également utile de distinguer les métadonnées, c'est-à-dire une description d'autres données. Un terme similaire mais antérieur pour les métadonnées est « données auxiliaires ». L'exemple prototype de métadonnées est le catalogue de la bibliothèque, qui est une description du contenu des livres.

Chaque fois que des données doivent être enregistrées, les données existent sous la forme de documents de données. Les types de documents de données incluent :

  • Dépôt de données
  • étude de données
  • base de données
  • Logiciel
  • papier de données
  • base de données
  • manuel de données
  • journal de données

Certains de ces documents de données (dépôts de données, études de données, ensembles de données et logiciels) sont indexés dans les Data Citation Indexes, tandis que les documents de données sont indexés dans les bases de données bibliographiques traditionnelles, par exemple, Science Citation Index. Voir plus loin. [14]

Collecte de données Modifier

La collecte des données peut se faire via une source primaire (le chercheur est la première personne à obtenir les données) ou une source secondaire (le chercheur obtient les données qui ont déjà été collectées par d'autres sources, telles que les données diffusées dans une revue scientifique). Les méthodologies d'analyse des données varient et incluent la triangulation et la percolation des données. [15] Ce dernier propose une méthode articulée de collecte, de classement et d'analyse des données sous cinq angles d'analyse possibles (au moins trois) afin de maximiser l'objectivité de la recherche et permettre une compréhension la plus complète possible des phénomènes étudiés : qualitatifs et méthodes quantitatives, revues de la littérature (y compris les articles scientifiques), entretiens avec des experts et simulation informatique. Les données sont ensuite "percolées" en utilisant une série d'étapes prédéterminées afin d'extraire les informations les plus pertinentes.

Bien que les données soient également de plus en plus utilisées dans d'autres domaines, il a été suggéré que leur nature hautement interprétative pourrait être en contradiction avec l'éthique des données comme « données ». Peter Checkland a introduit le terme capitaine (du latin capère, « prendre ») pour distinguer entre un nombre immense de données possibles et un sous-ensemble d'entre elles, vers lequel l'attention est orientée. [16] Johanna Drucker a soutenu que puisque les sciences humaines affirment que la production de connaissances est « située, partielle et constitutive », en utilisant Les données peut introduire des hypothèses qui sont contre-productives, par exemple que les phénomènes sont discrets ou indépendants de l'observateur. [17] Le terme capitaine, qui met l'accent sur l'acte d'observation comme constitutif, est proposé comme alternative à Les données pour les représentations visuelles en sciences humaines.

Cet article est basé sur du matériel tiré de la Dictionnaire gratuit en ligne de l'informatique avant le 1er novembre 2008 et incorporé sous les termes de "relicensing" de la GFDL, version 1.3 ou ultérieure.


La fonction d'insertion provoque une exception de mémoire insuffisante


Pouvez-vous publier des exemples de code pour savoir où vous chargez des modèles ?

Quel langage utilisez-vous pour le développement ?

Si vous utilisez un langage .NET, vous pouvez essayer d'utiliser CLRProfiler pour identifier ce qui consomme le plus de mémoire. S'il ne s'agit pas d'un problème de mémoire gérée, vous pouvez utiliser UMDH pour voir ce qui est alloué sur le tas non géré.

Faites-moi savoir si je peux aider.

Pouvez-vous publier des exemples de code pour savoir où vous chargez des modèles ?

Quel langage utilisez-vous pour le développement ?

Si vous utilisez un langage .NET, vous pouvez essayer d'utiliser CLRProfiler pour identifier ce qui consomme le plus de mémoire. S'il ne s'agit pas d'un problème de mémoire gérée, vous pouvez utiliser UMDH pour voir ce qui est alloué sur le tas non géré.

Faites-moi savoir si je peux aider.


Salut, ScJpike !
J'utilise C# avec .NET Framework 4.0

Il y a des fragments de code de mon projet à tester :
Le chargement de chaque modèle se fait avec l'instance de classe suivante (une instance de classe représente un fichier) :

//fragment de code d'implémentation de classe
public enum GeoReferencedModelAltitudeType

classe publique GeoReferencedModel
<

//les propriétés sont définies lors de la lecture du fichier
public double Longitude < obtenir un ensemble privé >
public double Latitude < obtenir un ensemble privé >
public double Altitude < get private set >
public GeoReferencedModelAltitudeType AltitudeType < obtenir un ensemble privé >
public double XAngle < obtenir un ensemble privé >
public double YAngle < obtenir un ensemble privé >
public double ZAngle < obtenir un ensemble privé >
public double ScaleX < obtenir un ensemble privé >
public double ScaleY < obtenir un ensemble privé >
publique double ScaleZ

public GeoReferencedModel(chaîne nom de fichier)
<
Nom de fichier = nom de fichier
ÉchelleX = ÉchelleY = ÉchelleZ = 1
>

IPoint public get_Placement()
<
//lire le fichier et attribuer les propriétés de la classe
//pas d'utilisation d'ArcObjects

//juste pour tester avec un modèle
Longitude = 51,310704
Latitude = 35,731657
Altitude = 0
AltitudeType = GeoReferencedModelAltitudeType.relativeToGround
ZAngle = 0
XAngle = 0
YAngle = 0
ÉchelleX = 1
ÉchelleY = 1
ÉchelleZ = 1

IPoint point = nouveau PointClass()
point.PutCoords(Longitude, Latitude)
point de retour
>

private void set_ModelAltitude (placement IPoint)
<
commutateur (AltitudeType)
<
case GeoReferencedModelAltitudeType.absolute :
placement.Z = Altitude
Pause
case GeoReferencedModelAltitudeType.clampToGround :
Pause
case GeoReferencedModelAltitudeType.relativeToGround :
placement.Z = placement.Z + Altitude
Pause
>
>

public IGeometry get_MultiPatch (placement IPoint, ISpatialReference spatialReference)
<
Géométrie IGéométrie = nulle
IImport3DFile import3DFile = new Import3DFileClass()
essayer
<
import3DFile.CreateFromFile(Nom du fichier)
géométrie = import3DFile.Geometry
((IImport3DFileRoots)import3DFile).ReleaseCurrentFile()
>
prise
<
géométrie = nulle
>
finalement
<
System.Runtime.InteropServices.Marshal.ReleaseComObject(import3DFile)
>

if (géométrie != null)
<
set_ModelAltitude(placement)
IVector3D xVector = constructVector3D (10, 0, 0)
IVector3D yVector = constructVector3D (0, 10, 0)
IVector3D zVector = constructVector3D (0, 0, 10)
((ITransform3D)géométrie).RotateVector3D(xVector, XAngle * (Math.PI / 180))
((ITransform3D)géométrie).RotateVector3D(yVector, YAngle * (Math.PI / 180))
((ITransform3D)géométrie).RotationVector3D(zVector, ZAngle * (Math.PI / 180))
((ITransform3D)géométrie).Move3D(placement.X, placement.Y, placement.Z)
((ITransform3D)géométrie).Scale3D(placement, ScaleX, ScaleY, ScaleZ)
geometrie.SpatialReference = spatialReference
géométrie.SnapToSpatialReference()
>

Le traitement de tous les fichiers de modèle avec leur insertion dans la classe d'entités de la géodatabase fichier est effectué par la méthode suivante :

classe statique publique Outils
<

public static void Import3DFiles(string GDBFilename, string Dataset, List<GeoReferencedModel> Files, ISpatialReference DatasetSpatialReference)
<
IWorkspaceFactory wsf = nouveau FileGDBWorkspaceFactoryClass()
IWorkspace datasetWorkspace=wsf.OpenFromFile(GDBFilename, 0)
System.Runtime.InteropServices.Marshal.ReleaseComObject(wsf)

IFeatureClass objectiveFeatureClass
exist = ((IWorkspace2)datasetWorkspace).get_NameExists(esriDatasetType.esriDTFeatureClass, Dataset)
si (!exister)
<

IField shapeField = new FieldClass()
fieldEdit = (IFieldEdit) shapeField
fieldEdit.Name_2 = "Forme"
fieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry

IGeometryDef geometryDef = new GeometryDefClass()
IGeometryDefEdit geometryDefEdit
geometryDefEdit = (IGeometryDefEdit)geometryDef
geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryMultiPatch
geometryDefEdit.GridCount_2 = 1
geometryDefEdit.set_GridSize(0, 0)
geometryDefEdit.HasZ_2 = vrai
geometryDefEdit.HasM_2 = false
if (DatasetSpatialReference != null) geometryDefEdit.SpatialReference_2 = DatasetSpatialReference else geometryDefEdit.SpatialReference_2 = new UnknownCoordinateSystemClass()
fieldEdit.GeometryDef_2 = geometryDef

IField oidField = new FieldClass()
fieldEdit = (IFieldEdit) oidField
fieldEdit.Name_2 = "OID"
fieldEdit.Type_2 = esriFieldType.esriFieldTypeOID
fieldEdit.Precision_2 = 0

IFields fcFields = new FieldsClass()
IFieldsEdit fcFieldsEdit = (IFieldsEdit)fcFields
fcFieldsEdit.AddField(shapeField)
fcFieldsEdit.AddField(oidField)

IFieldChecker fieldChecker = nouveau FieldCheckerClass()
IEnumFieldError enumFieldError = null
IFields validéFields = null
fieldChecker.ValidateWorkspace = datasetWorkspace
fieldChecker.Validate(fields, out enumFieldError, out ValidFields)

IObjectClassDescription objectDescription = new FeatureClassDescriptionClass()
objectiveFeatureClass = ((IFeatureWorkspace)datasetWorkspace).CreateFeatureClass(dataset, enabledFields, null, objectDescription.ClassExtensionCLSID, esriFeatureType.esriFTSimple, shapeField.Name, "")
>
autre
objectiveFeatureClass = ((IFeatureWorkspace)datasetWorkspace).OpenFeatureClass(dataset)

((ISchemaLock)objectiveFeatureClass).ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock)
((IFeatureClassLoad)objectiveFeatureClass).LoadOnlyMode = true

ISpatialReferenceFactory srFactory = new SpatialReferenceEnvironmentClass()
IGeographicCoordinateSystem gcs = srFactory.CreateGeographicCoordinateSystem(gcsType)
ISpatialReference geoSR = (ISpatialReference)gcs
ISpatialReferenceResolution srRésolution = (ISpatialReferenceResolution)sr
srResolution.ConstructFromHorizon()
srResolution.SetDefaultMResolution()
srResolution.SetDefaultXYResolution()
srResolution.SetDefaultZResolution()
ISpatialReferenceTolerance srTolérance = (ISpatialReferenceTolerance)sr
srTolerance.SetDefaultMTolerance()
srTolerance.SetDefaultXYTolerance()
srTolerance.SetDefaultZTolerance()
set_ResolutionTolerance(sr)
System.Runtime.InteropServices.Marshal.ReleaseComObject(srFactory)

featureBuffer = objectiveFeatureClass.CreateFeatureBuffer()
featureCursor = objectiveFeatureClass.Insert(true)

foreach (chaîne geoReferencedModel dans les fichiers)
<
// lecture des valeurs de latitude, de longueur et d'autres valeurs à partir de fichiers avec son propre SketchUpReader (pour *.skp) et ZipForge, XDocument (pour *.kmz)
//ne pas utiliser d'ArcObjects
IPoint placement = geoReferencedModel.get_Placement()
placement.SpatialReference = geoSR
(IZAware)geometry.ZAware = vrai
placement.Project(DatasetSpatialReference)

// obtenir la valeur Z de IFunctionalSurface (raster de relief)
//juste pour tester
placement.Z = 0

si (!placement.Z.Equals(double.NaN))
<
IGeometry multiPatch=null
//importe la géométrie du fichier
multiPatch = geoReferencedModel.get_MultiPatch(placement, DatasetSpatialReference)
if (multiPatch != null)
<
featureBuffer.Shape = multiPatch
featureCursor.InsertFeature(featureBuffer)

/* a essayé de vider le curseur et de créer de nouvelles instances de curseur et de tampon
featureCursor.Flush()
featureBuffer = objectiveFeatureClass.CreateFeatureBuffer()
featureCursor = objectiveFeatureClass.Insert(true)
*/

/* a essayé d'utiliser le curseur sans mise en mémoire tampon ici et dans la déclaration
featureCursor.Flush()
featureBuffer = objectiveFeatureClass.CreateFeatureBuffer()
featureCursor = objectiveFeatureClass.Insert(false)
*/

/* j'ai essayé une telle variante sans aucun featurebuffer ni featurecursor
IFeature newFeature = objectiveFeatureClass.CreateFeature()
newFeature.Shape = multipatch
((IFeatureClassWrite)objectiveFeatureClass).WriteFeature(newFeature)
*/

//ici je calcule une empreinte de multipatch et la stocke dans une autre featureclass


Sources ponctuelles et non ponctuelles de pollution

Aux fins de la réglementation, l'Environmental Protection Agency des États-Unis identifie deux grandes catégories de pollution : la pollution ponctuelle et la pollution diffuse.

Biologie, Écologie, Conservation, Sciences de la Terre, Océanographie

Pollution des rivières

L'eau remplie de déchets est déversée dans une rivière, la polluant pour les personnes et les animaux qui l'utilisent comme source pour manger et boire.

Photographie de Kaentian Street

Celui-ci répertorie les logos des programmes ou partenaires de NG Education qui ont fourni ou contribué au contenu de cette page. Alimenté par

Presque tout ce que les humains font, de la culture d'aliments à la fabrication de produits en passant par la production d'électricité, a le potentiel de libérer de la pollution dans l'environnement. Les organismes de réglementation chargés de protéger l'environnement identifient deux grandes catégories de pollution : la pollution ponctuelle et la pollution diffuse.

La pollution ponctuelle est facile à identifier. Comme son nom l'indique, il vient d'un seul endroit. La pollution diffuse est plus difficile à identifier et à traiter. C'est une pollution qui vient de plusieurs endroits, à la fois.

L'Environmental Protection Agency (EPA) des États-Unis définit la pollution de source ponctuelle comme tout contaminant qui pénètre dans l'environnement à partir d'un endroit facilement identifiable et confiné. Les exemples incluent les cheminées, les tuyaux d'évacuation et les fossés de drainage.

Les usines et les centrales électriques peuvent être une source de pollution ponctuelle, affectant à la fois l'air et l'eau. Les cheminées peuvent cracher du monoxyde de carbone, des métaux lourds, du dioxyde de soufre, du dioxyde d'azote ou des « matières particulaires » (petites particules) dans l'air. Les raffineries de pétrole, les papeteries et les usines automobiles qui utilisent de l'eau dans le cadre de leurs processus de fabrication peuvent rejeter des effluents et des eaux usées contenant des polluants chimiques nocifs et des déchets dans les rivières, les lacs ou l'océan.

Les stations d'épuration municipales sont une autre source courante de pollution ponctuelle. Les effluents d'une station d'épuration peuvent introduire des nutriments et des microbes nocifs dans les cours d'eau. Les nutriments peuvent provoquer une croissance galopante d'algues dans l'eau.

La pollution diffuse est à l'opposé de la pollution ponctuelle, avec des polluants rejetés dans une vaste zone. À titre d'exemple, imaginez une rue de la ville pendant un orage. Lorsque l'eau de pluie coule sur l'asphalte, elle élimine les gouttes d'huile qui s'écoulent des moteurs de voiture, les particules de caoutchouc des pneus, les déjections canines et les déchets.Les eaux de ruissellement se déversent dans un égout pluvial et se retrouvent dans une rivière voisine. Le ruissellement est une cause majeure de pollution diffuse. C'est un gros problème dans les villes à cause de toutes les surfaces dures, y compris les rues et les toits. La quantité de polluants lavés d'un seul pâté de maisons peut être faible, mais lorsque vous additionnez les kilomètres et les kilomètres de trottoir dans une grande ville, vous obtenez un gros problème.

Dans les zones rurales, le ruissellement peut emporter les sédiments des routes dans une zone forestière exploitée. Il peut également transporter l'acide des mines abandonnées et éliminer les pesticides et les engrais des champs agricoles. Toute cette pollution est susceptible de se retrouver dans les ruisseaux, les rivières et les lacs.

Les polluants atmosphériques sont les principaux contributeurs aux pluies acides. Il se forme dans l'atmosphère lorsque le dioxyde de soufre et les oxydes d'azote se combinent avec l'eau. Parce que les pluies acides résultent du mouvement à longue distance de ces polluants à partir de nombreuses usines et centrales électriques, elles sont considérées comme une pollution diffuse.

Aux États-Unis, le Clean Air Act et le Clean Water Act ont permis de limiter la pollution tant ponctuelle que diffuse. Grâce à ces deux initiatives législatives, en vigueur depuis une cinquantaine d'années maintenant, l'air et l'eau américains sont plus propres aujourd'hui qu'ils ne l'étaient pendant la majeure partie du 20 e siècle.

L'eau remplie de déchets est déversée dans une rivière, la polluant pour les personnes et les animaux qui l'utilisent comme source pour manger et boire.


Voir la vidéo: ADDING 2 EXTRA QUARTS TO C8 DCT TRANSMISSION u0026 YOUR RIDES (Octobre 2021).