Suite

Comment connecter SQL SSMS à la géodatabase fichier ArcGIS


J'ai trouvé cet article de référence expliquant comment interroger une géodatabase fichier à l'aide de SQL.

http://resources.arcgis.com/en/help/main/10.2/index.html#/Using_SQL_for_reporting_and_analysis_on_file_geodatabases/018s0000000t000000/

Mon problème est qu'il ne fournit aucun détail sur comment à pour connecter SSMS (ou un autre outil de requête) au fichier. Un chauffeur est-il nécessaire ? Serveur lié ?

Normalement, toutes les questions sur ce résultat me sont adressées à ArcSDE. Mais son article suggère le fichier Geodatabases pouvez être interrogé par SQL.


Comme Vince l'a mentionné, vous ne pouvez pas accéder à la géodatabase fichier Esri à partir de SSMS ou de tout autre client SQL. La géodatabase fichier est stockée de manière propriétaire et il n'y a pas d'interface SQL pour y accéder.

La page d'aide que vous avez trouvée fait référence aux méthodes auxquelles vous pouvez accéder par programme avec ArcObjects. Vous ne pouvez pas fournir ce type de requête dans la fenêtre Sélectionner par attributs ou dans la boîte de dialogue Définition de requête dans ArcMap. Certains types d'opérateurs SQL peuvent être exécutés avec arcpy.da.SearchCursor dans le paramètre sql_clause (pour le filtrage et l'agrégation des données) lors de l'accès aux géodatabases fichier.

Si vous souhaitez accéder à votre géodatabase fichier avec une interface SQL limitée, vous devez soit utiliser ArcObjects, soit utiliser l'API File Geodatabase. Voici un exemple sur Comment exécuter une requête SQL sur une géodatabase fichier à l'aide de l'API File GDB pour .NET.


Les dossiers contiennent un certain nombre d'éléments SIG, par exemple, des cartes (.mxd), des fichiers de couche (.lyr), des boîtes à outils (.tbx), des géodatabases fichier et personnelles (.gdb et .mdb) et un certain nombre de fichiers ensembles de données. La première tâche pour travailler avec des dossiers et leur contenu consiste à établir une connexion de dossier dans ArcCatalog . Voici les étapes :

  1. Accédez à Connexions aux dossiers dans l'arborescence du catalogue.
  2. Cliquez avec le bouton droit sur l'élément Connexions aux dossiers et cliquez sur Se connecter au dossier .
  3. Saisissez le chemin ou accédez au dossier de l'espace de travail souhaité, puis cliquez sur OK .

Alternativement, les connexions de dossier peuvent être établies en cliquant sur le bouton Se connecter au dossier dans la barre d'outils Standard.


Plusieurs géodatabases de modèle de base de données unique

Si vous souhaitez créer plusieurs géodatabases dans la même instance SQL Server lors de l'utilisation du modèle de base de données spatiale unique, vous créez plusieurs bases de données SQL Server, créez une géodatabase dans chacune, autorisez chaque géodatabase et créez des services ArcSDE distincts pour chacune ( si vous utilisez les services ArcSDE pour vous connecter aux géodatabases).

Le graphique suivant illustre qu'il existe deux bases de données distinctes, Database1 et Database2, sur une instance SQL Server et que chaque base de données contient une géodatabase complète.

Les bases de données peuvent avoir n'importe quel nom unique qui suit les règles SQL Server pour les identificateurs, ne commence pas par un nombre et n'est pas sde.

Vous pouvez utiliser l'assistant de post-installation d'ArcSDE pour SQL Server pour créer des bases de données et des géodatabases supplémentaires. Exécutez toutes les étapes de l'assistant de post-installation, en vous assurant de fournir un nom de base de données unique, un nom de service ArcSDE et un numéro de service ArcSDE. Étant donné que les utilisateurs sont créés au niveau de l'instance puis ajoutés à la base de données dans SQL Server, veillez à utiliser le même mot de passe pour l'administrateur ArcSDE lorsque vous y êtes invité.

Si les clients n'utilisent que des connexions directes à chaque géodatabase distincte, vous n'avez pas besoin de créer un service ArcSDE et pouvez ignorer la dernière étape de l'assistant de post-installation. Cependant, si les clients se connectent à l'aide d'un service ArcSDE, vous devez créer un service supplémentaire pour chaque géodatabase supplémentaire. Comme mentionné, cela peut être fait via l'assistant de post-installation, assurez-vous simplement de spécifier un nom de service différent, un numéro de port et le nom de base de données correct dans la boîte de dialogue d'informations sur le service ArcSDE.

Sachez que si vous prévoyez d'utiliser des paramètres différents dans les fichiers dbtune.sde, giomgr.defs ou dbinit.sde, ces modifications doivent être apportées avant l'exécution de l'assistant de post-installation.

    Pour spécifier des informations de stockage de géodatabase différentes pour la deuxième géodatabase, faites des copies de vos fichiers giomgr.defs et dbtune.sde, en leur donnant des noms différents. Par exemple, vous pouvez les nommer giomgr2.defs et dbtune2.sde. Modifiez le contenu de ces nouveaux fichiers. Lorsque vous exécutez l'assistant de post-installation, vous spécifiez ces fichiers personnalisés.

Les connexions client peuvent être établies à une géodatabase à la fois. Lorsque vous êtes connecté à une seule géodatabase de base de données spatiale sur une instance SQL Server, vous ne pouvez pas interroger les informations d'une autre géodatabase sur l'instance SQL Server via cette même connexion.

Par exemple, dans ArcCatalog, vous pouvez créer une connexion de base de données spatiale à Database1. Lorsque vous ajoutez des données à ArcMap via cette connexion, vous ne pouvez pas afficher les données dans Database2. Pour accéder aux données dans Database2, vous devez configurer une deuxième connexion à la base de données spatiale dans ArcCatalog, en spécifiant cette fois Database2 dans le champ Database et le numéro de port de Database2 dans le champ Service.

Pour plus d'informations sur la configuration des connexions aux bases de données spatiales dans ArcCatalog, consultez Création de connexions aux bases de données spatiales dans la section "Gestion des données avec ArcCatalog" de l'aide. Pour la syntaxe de connexion, voir Syntaxe de connexion ArcSDE.


Leçon 2. Installer le conteneur MS SQL Server

Dans cette section, nous allons installer Microsoft SQL Server Container. Pour ce faire, ouvrez le Docker CLI. Vous pouvez cliquer sur l'icône Docker CLI de Kitematic (en bas à gauche).

Extrayez l'image du docker SQL Server.

Dans la fenêtre PowerShell (Docker CLI), collez la commande suivante pour télécharger ou extraire l'image SQL Server de Docker Hub

La taille du fichier est d'environ 1,5 Go. Assurez-vous donc d'avoir une bonne connexion Internet.

Déployons maintenant un nouveau conteneur SQL Server

N'oubliez pas de changer <Votre fort!Mot de passe> avec votre propre mot de passe. Assurez-vous que le mot de passe répond à l'exigence comme indiqué ici. Vous pouvez également modifier le port par défaut. Par exemple vers le numéro de port 14330.

Vérifiez maintenant le conteneur Docker avec la commande

Terminé. À ce stade, nous avons un conteneur SQL Server fonctionnel. Nous sommes prêts à nous connecter au serveur et à créer une nouvelle base de données.


J'ai rencontré quelque chose d'intéressant qui pourrait valoir la peine d'être partagé avec le groupe. L'un des développeurs de l'équipe a rencontré un problème où il ne pouvait pas extraire la latitude/longueur de la base de données car les champs de forme sont stockés en tant que géométrie (pas en géographie) et nous n'avons pas stocké la latitude/longueur dans les tables. Pour ceux qui ne le savaient pas, vous pouvez insérer une requête SQL pour générer X,Y pour vous à partir des champs de forme présents dans nos bases de données. La syntaxe sera un peu différente en fonction de la version de la base de données (pas de la version SDE). Pour MS SQL sortant d'une colonne de géométrie, vous utiliseriez quelque chose comme l'exemple 1.

Alors, comment extraire ces informations pour qu'une application puisse les utiliser/référencer ? Voici ce que j'ai imaginé pour lui.

Pour ceux qui utilisent ArcGIS Pro et/ou ArcGIS Online, une capacité de plus en plus utile serait d'utiliser le langage de script Arcade. Dans ce cas, construisez une fonction. Comme preuve de concept, je l'ai bouclé dans une URL pouvant être facilement analysée via Google Maps. Ils peuvent modifier l'URL pour qu'elle corresponde à un collecteur, à une enquête 123 ou à une autre application à volonté. Voir les exemples 2A et 2B (étiquetés à nouveau accidentellement 2A pour garder tout le monde sur leurs gardes).

Avec ArcGIS, vous pouvez créer des couches de requête, mais lors de la publication via ArcGIS Server, ce que faisait ce développeur, le serveur subit une baisse de performances chaque fois qu'il extrait l'une de ces couches de requête. Bien sûr, c'est plus pénible, mais votre administrateur de base de données peut créer et ajuster des vues tout aussi rapidement et il met le fardeau du rendu sur le serveur de base de données qui a généralement de la capacité à revendre. Cela dit, vous pouvez ajouter des colonnes dans les requêtes et même faire des calculs en cours de route. Voir l'exemple 3. Gardez à l'esprit que la syntaxe de l'exemple 3 est pour MS SQL. Comme la plupart d'entre vous utilisent Oracle, cela peut être légèrement différent pour certains opérateurs comme PI, bien que ce soit un mauvais exemple car PI est appelé de la même manière dans Oracle. La morale de l'histoire est de vérifier que tous les opérateurs (fonctions) sont corrects.

déclarer @shift numérique
déclarer @x numérique
déclarer @y numérique

définir @shift = 2.0 * PI() * 6378137.0 / 2.0

SELECT structure.OBJECTID
,structure.FACILITYID
,structure.DSTYPE AS [Type]
,structure.shape.STY comme Y_Coord
,structure.shape.STX comme X_Coord
, (
180.0 / PI() * (2.0 * Atan( Exp( (((sélectionnez structure2.shape.STY FROM WebGIS.UTIL.swDrainageStructure comme structure2 où structure2.objectid = structure.OBJECTID) / @shift) * 180.0) * PI() / 180.0)) - PI() / 2.0)
) comme [Latitude]
,((sélectionnez structure1.shape.STX FROM WebGIS.UTIL.swDrainageStructure comme structure1 où structure1.OBJECTID = structure.objectid) / @shift) * 180.0 comme [Longitude]
DE WebGIS.UTIL.swDrainageStructure en tant que structure


Connexion à partir d'ArcGIS for Desktop

Les connexions aux géodatabases d'entreprise sont établies via le nœud Connexions aux bases de données dans l'arborescence du Catalogue. Voir Connexions aux bases de données dans ArcGIS for Desktop pour plus d'informations sur l'établissement d'une connexion d'ArcGIS for Desktop à une géodatabase d'entreprise.

Les messages d'erreur liés aux connexions à la géodatabase d'entreprise à partir d'ArcGIS for Desktop sont écrits dans un fichier journal (sdedc_<dbms type>.log) dans le répertoire %TEMP% de la machine sur laquelle ArcGIS for Desktop est installé.


Pour importer des entités à partir d'ArcGIS

Le fournisseur ArcGIS utilise l'API ESRI ArcObjects 10. Il n'est pas disponible pour Infrastructure Map Server.

Pour importer des entités depuis ArcGIS

  1. Dans le Gestionnaire d'affichage , cliquez sur Données > Se connecter aux données .
  2. Dans la fenêtre Connexion aux données, sélectionnez Ajouter une connexion ArcGIS dans la liste Connexions aux données par fournisseur.
  3. Sous Nom de la connexion , saisissez un nom pour cette connexion.
  4. Si vous vous connectez à une géodatabase centralisée, procédez comme suit :
    • Cliquez sur l'onglet ArcSDE Entreprise.
    • Sous Nom du serveur , Nom de l'instance et Magasin de données , entrez les informations de votre base de données.
    • Entrez votre nom de connexion et votre mot de passe.
    • Cliquez sur Connexion.
    • En option, sélectionnez une version de la base de données.

Pour sélectionner dans une liste de bases de données, cliquez sur la flèche vers le bas. AutoCAD Map 3D se connecte au serveur et à l'instance spécifiés et répertorie les versions disponibles.

Si cette source d'objets ne contient qu'une seule classe d'objets, cette classe d'objets est sélectionnée automatiquement. S'il contient plusieurs classes d'entités, vous pouvez effectuer l'une des opérations suivantes :

  • Cliquez avec le bouton droit sur l'entrée du schéma et sélectionnez Tout sélectionner ou Tout sélectionner .
  • Développez l'entrée de schéma et sélectionnez les classes d'entités à ajouter.

Si une classe d'entités contient plusieurs types de géométrie et que vous sélectionnez la classe d'entités elle-même, toutes les géométries sont ajoutées. Pour ajouter un sous-ensemble de géométries, maintenez votre curseur sur le nom de la classe d'entités pour voir le bouton Afficher la géométrie. Cliquez sur Afficher la géométrie pour voir chaque géométrie comme un choix distinct. Sélectionnez ceux que vous voulez. Chaque géométrie sélectionnée est ajoutée à la carte en tant que couche distincte du gestionnaire d'affichage.

Si vous récupérez une couche d'ArcSDE et que le système de coordonnées n'est pas reconnu, le chargement de la couche peut échouer. Pour charger la couche, attribuez un système de coordonnées.

Pour importer un sous-ensemble de données, cliquez sur la flèche vers le bas et sélectionnez Ajouter à la carte avec la requête.


Méthode IMapServer3.QueryFeatureData2

Renvoie un jeu d'enregistrements d'entités qui répondent aux critères de sélection du filtre de requête pour la couche spécifiée.

La disponibilité des produits

La description

Noter: cela a été remplacé par QueryData.

Remarques

QueryFeatureData2 renvoie les enregistrements d'entités cartographiques qui correspondent aux paramètres d'un filtre de requête donné. QueryFeatureData2 renvoie un Résultat de la requête. Un format QueryResult peut être KML ou un Jeu d'enregistrements. Le Format du QueryResult est spécifié dans QueryResultOptions. QueryResultOptions peut également être utilisé pour spécifier un GéoTransformation s'il en faut un.

QueryFeatureData2 requiert un certain nombre de paramètres d'entrée. Il s'agit notamment : d'un Nom, Description de la couche et un Filtre de requête. Le QueryFilter peut être une requête d'attribut (expression SQL), une requête spatiale, une combinaison des deux ou nul. ILayerDescription2 possède ID source propriété qui peut être utilisée pour interroger un résultat GP.

Filtre de requête

QueryFilter offre la possibilité d'interroger en fonction d'un filtre d'attributs (expression SQL) un filtre spatial, ou une combinaison des deux. Les filtres d'attributs acceptent toute instruction SQL valide non spécifique aux données SIG. Par exemple, CNTRY_CODE = BD ou POPULATION = 12345. La syntaxe d'interrogation des champs de date dépend des données sous-jacentes. Si vous travaillez avec des données Shapefile ou File GeoDatabase, la syntaxe est <FieldName> = date YYYY-MM-DD pour la géodatabase personnelle basée sur l'accès, la syntaxe est #YYYY-MM-DD#. Pour la base de données SDE, consultez l'aide des bases de données spécifiques.

Il peut être réglé sur nul ou alors Rien pour récupérer toutes les données (ce qui est également limité par Nombre d'enregistrements max.)

Si la géométrie n'est pas souhaitée dans le RecordSet de sortie, IQuerFiltres Sous-Champs doit être défini sans le champ Forme. Lorsque SubFields est vide ou inclut Shape, IRecordSet inclura les champs "shape_length" et "shape_area". Si la référence spatiale souhaitée de la géométrie de sortie est différente de celle d'origine, OutputSpatialReference Devrait être utilisé. Sinon, la géométrie est renvoyée dans le même système de référence spatiale que le DefaultMapDescription par défaut. Lorsque SubFields n'est pas défini ou = *, il renvoie tous les champs visibles. Les noms de champs ou alias de champs invisibles ou non valides ne doivent pas être inclus dans la chaîne SubFields ou cela renverra une erreur. Veuillez noter que le champ ObjectID est toujours renvoyé, qu'il se trouve ou non dans les sous-champs. Seule l'attente est lorsque DISTINCT est utilisé.

Forme de recherche

La géométrie définie dans ISpatialFilter doit répondre aux critères suivants :

  • Il doit avoir le système de référence spatiale défini. Dans les cas où il n'est pas défini, le système de coordonnées est supposé être dans le système de coordonnées DataFrames
  • Il doit s'agir de l'une des géométries de haut niveau, c'est-à-dire Point, Multipoint, Polyligne, Polygone ou Multipatch. Géométrie de bas niveau, par ex. BezierCurve, CircularCurve doivent être enveloppés dans une géométrie de haut niveau
  • Il doit être topologiquement correct. Pour plus d'informations, consultez l'aide sur Ipolygone et IOpologicalOperator::Simplifier .

DéfinitionExpressions

UNE DéfinitionExpression peut être défini sur une couche afin de limiter les entités de couche disponibles pour l'affichage ou la requête. Cette expression peut également être définie dans le document ArcMap source en tant que requête de définition. Toute DefinitionExpression définie dans LayerDescription remplacera toute requête de définition définie dans la carte source. MapServer QueryFeatureData2 honore DefinitionExpression.

Regardons quelques exemples. Vous avez une couche dans votre carte qui représente les régions de vente. La couche comprend les champs REGIONS, SALES et MANAGER.

Exemple #1 : Dans la carte source, la couche a une requête de définition, "REGION = 'North'". Aucune DefinitionExpression n'est spécifiée dans LayerDescription. Votre clause où QueryFilter est "MANAGER = 'Bob'". Le résultat sera toutes les caractéristiques de la région de vente qui relèvent de la région Nord et sont gérées par Bob.

Exemple #2 : Dans la carte source, la couche a une requête de définition, "REGION = 'North'". Vous appliquez une DefinitionExpression dans LayerDescription en tant que "SALES > 1000". Votre clause où QueryFilter est "MANAGER = 'Bob'". Le résultat sera toutes les caractéristiques de la région de vente avec des ventes supérieures à 1 000 et gérées par Bob. QueryFeatureData2 honore le DefinitionExpression défini dans LayerDescription. L'expression DefinitionExpression remplace la requête de définition définie dans la carte source. Si vous souhaitez inclure la requête de définition d'origine de la couche, "REGION = 'North'" dans votre requête finale, vous devez l'inclure dans votre QueryFilter, ""MANAGER = 'Bob' AND "REGION = 'North'".

Exemple n°3 : Dans la carte source, la couche n'a pas de requête de définition. Vous appliquez une DefinitionExpression dans LayerDescription en tant que "SALES > 1000". Votre clause où QueryFilter est "MANAGER = 'Bob'". Le résultat sera toutes les caractéristiques de la région de vente avec des ventes supérieures à 1 000 et gérées par Bob. QueryFeatureData2 honore le DefinitionExpression défini dans LayerDescription.

Le résultat peut être renvoyé dans deux formats : KML et RecordSet.

KML
Lorsque KML est la sortie souhaitée, il est renvoyé en tant qu'URL (lorsque QueryResultFormat est esriQueryResultKMLAsURL) ou en tant qu'objet MIME (lorsque QueryResultFormat est esriQueryResultKMLAsMime). Le fichier ou Mime est renvoyé au format KMZ compressé.

La définition de LayerResultOptions n'a aucun effet sur la sortie KML.

Jeu d'enregistrements
Lorsque esriQueryResultRecordSetAsObject est sélectionné comme QueryResultFormat, la fonction renvoie Jeu d'enregistrements en tant qu'Objet. Utilisation IQueryResult::Object propriété pour y accéder. L'objet renvoyé doit être QI pour IRecordSet.

QueryFeatureData2 respecte la visibilité des champs définie dans le document ArcMap source. Les alias de champ, définis dans la carte source, sont honorés uniquement lorsque la connexion à un serveur ArcGIS est établie à l'aide de l'API client ArcGIS Server (bibliothèque GISClient) ou à l'aide de SOAP/WSDL, mais ne sont pas honorés pour la connexion DCOM. Cependant, le RecordSet ne NE PAS respectez tout formatage de champ défini dans la carte source.

Par défaut, la géométrie est renvoyée dans la même référence spatiale que le DefaultMapDescription. La référence spatiale des résultats de QueryFeatureData2 peut être définie sur quelque chose de différent de la DefaultMapDescription en utilisant OutputSpatialReference. OutputSpatialReference est une propriété de IQueryFiltre. Pour les utilisateurs SOAP/WSDL, les deux OutputSpatialReference & Nom du champ de référence spatiale les propriétés sont obligatoires et doivent être définies.

Dans certains cas, le résultat peut nécessiter une GéoTransformation . Par exemple, un service cartographique donné peut utiliser un système de référence spatiale basé sur GCS_WGS_1984. Un client souhaite afficher les résultats de QueryFeatureData2 basés sur ce service de carte dans une autre référence spatiale, GCS_European_1950. Les résultats utiliseront la référence spatiale de la DefaultMapDescription, GCS_WGS_1984, et afficheront ces résultats de manière incorrecte dans GCS_European_1950. Les fonctionnalités peuvent ne pas "s'aligner" correctement. Afin d'afficher correctement ces résultats, un GéoTransformation est nécessaire. L'application de la GeoTransformation correcte garantit l'exactitude spatiale du résultat.

Un autre cas où une GeoTransformation peut devoir être spécifiée dans QueryResultsOption est si la couche interrogée est projetée à la volée dans le service de carte. C'est-à-dire que le système de coordonnées de la source de la couche est différent du système de coordonnées DefaultMapDescription, et aucune transformation appropriée n'a été définie dans la carte avant la diffusion. Dans ce cas, vous pouvez accéder au système de coordonnées d'une source de couche en obtenant d'abord le MapLayerInfo, puis obtenez Des champs à partir de MapLayerInfo, obtenez la forme Domaine de Fields, obtenez GeometryDef de Field, et enfin, obtenez la SpatialReference de GeometryDef.

Une GéoTransformation n'est pas nécessaire si les systèmes de coordonnées projetés partagent le même système de coordonnées géographiques sous-jacent. Pour de meilleurs résultats, il est optimal que les données (couches au sein du service de carte), le service de carte et la sortie MapServer utilisent le même système de coordonnées.

Dans certains cas, pour des raisons de performances, vous souhaiterez peut-être limiter ou ajuster la géométrie renvoyée dans le résultat du jeu d'enregistrements. Utilisation ILayerResultOptions pour gérer cela. Si Inclure la géométrie est défini sur False, la géométrie n'est pas incluse dans le jeu d'enregistrements. Cela devrait augmenter les performances dans les cas où la géométrie de l'entité est grande. Vous pouvez également choisir de densifier ou de généraliser la géométrie renvoyée en utilisant GeometryResultOptions. La densification est utilisée pour mieux prendre en charge les clients qui ne prennent pas en charge les Arcs (par exemple, Bézier, Circular, etc.). La généralisation réduit la quantité de géographie envoyée sur le réseau et devrait conduire à de meilleures performances.

Visibilité des champs et alias de champs

QueryFeatureData2 respecte la visibilité des champs définie dans le document ArcMap source. Les alias de champ, définis dans la carte source, sont honorés uniquement lorsque la connexion à un serveur ArcGIS est établie à l'aide de l'API client ArcGIS Server (bibliothèque GISClient) ou à l'aide de SOAP/WSDL, mais ne sont pas honorés pour la connexion DCOM. Cependant, le RecordSet ne NE PAS respecter tout formatage de champ défini dans la carte source.

Divers

Afin de contrôler la quantité d'informations que MapServer doit traiter pour une requête, un nombre maximum d'enregistrements peut être défini. Cette valeur est contenue dans le Nombre d'enregistrements max. propriété sur IMapsServerInit2. La valeur par défaut de cette propriété est 500. Si 600 entités correspondent à une requête donnée, seuls les 500 premiers résultats seront renvoyés. Vous ne pourrez pas accéder aux 100 enregistrements restants. Pour pouvoir accéder à ces enregistrements, le MaxRecordCount devrait être augmenté à 600. MaxRecordCount peut également être modifié en modifiant la balise XML MaxRecordCount dans le fichier de configuration de MapServer.

Il existe deux différences essentielles entre Trouver et QueryFeatureData2. La première est que Find peut fonctionner sur plusieurs couches tandis que les méthodes de requête fonctionnent avec une seule couche. La seconde est que Find ne fonctionne qu'avec une chaîne de recherche. Les méthodes de requête utilisent un queryFilter comme paramètre. Cela permet à la requête d'être basée soit sur un filtre d'attribut (expression SQL) soit sur un filtre spatial.

Priorité. Dans le cas où IQueryFilter::SubField et ILayerResultOption::IncludeGeometry sont définis, SubField a la priorité sur IncludeGeometry. Par exemple, lorsque SubField = Shape, FName, LName, Address et IncludeGeometry = False, le jeu d'enregistrements de sortie contiendra la géométrie telle qu'elle est contenue dans le champ Shape.


Établir des connexions à la base de données dans la version entreprise d'ArcGIS Insights - Partie 1

Lorsque vous essayez d'établir des connexions à la base de données dans ArcGIS Insights dans ArcGIS Enterprise, vous pouvez souvent rencontrer des erreurs telles que &ldquoHôte non valide&rdquo, &ldquoData connection issue&rdquo ou &ldquoQuelque chose s'est mal passé&rdquo. Il n'est pas toujours facile de déterminer exactement ce qui s'est mal passé. D'après mon expérience, il y a de meilleures chances d'établir une connexion à la base de données réussie si l'on suit attentivement les cinq étapes de ce guide.

Parmi les trois versions d'ArcGIS Insights (c'est-à-dire Insights dans ArcGIS Online, Insights dans ArcGIS Enterprise et Insights Desktop), la création de connexions de base de données est disponible dans Insights in ArcGIS Enterprise et Insights Desktop. La version de bureau prête à l'emploi comprend les pilotes JDBC nécessaires pour se connecter aux bases de données prises en charge et ne nécessite aucune configuration supplémentaire.

D'un autre côté, la configuration d'Insights dans ArcGIS Enterprise pour se connecter à vos bases de données nécessite un certain travail et vous pouvez souvent rencontrer des erreurs telles que &ldquoHôte invalide&rdquo, "Problème de connexion de données" ou &ldquoQuelque chose s'est mal passé&rdquo. Il n'est pas toujours facile de déterminer exactement ce qui s'est mal passé. D'après mon expérience, il y a de meilleures chances d'établir une connexion à la base de données réussie si l'on suit attentivement les étapes ci-dessous :

  1. Vérifier que toutes les exigences sont remplies
  2. Enregistrer le type de magasin de données relationnelles avec ArcGIS Enterprise
  3. Confirmez que le serveur de base de données autorise les connexions depuis le serveur d'hébergement
  4. Préparer l'utilisateur de la base de données utilisé dans la connexion
  5. Remplissez correctement les paramètres lors de la création de la connexion à la base de données

Ce guide utilisera principalement SQL Server comme exemple pour discuter de chacune des étapes et, espérons-le, fournira quelques conseils et astuces de dépannage en cours de route. Compte tenu de sa longueur, il se divise en deux parties : la partie 1 couvre les deux premières étapes et la partie 2 le reste des étapes.

Avant de commencer, je suppose que vous avez configuré votre déploiement de base ArcGIS Enterprise, installé les composants portail et serveur d'Insights, préparé un utilisateur nommé ArcGIS Enterprise qui peut lancer Insights et lorsque vous cliquez sur Connexions, vous pouvez accéder à la page Web ci-dessous. (Si vous n'êtes pas encore ici, reportez-vous au Déploiement de base requis d'ArcGIS Enterprise et Paramètres de configuration du portail requis sections de cette documentation pour préparer votre environnement.)

Prêt à établir une nouvelle connexion

Étape 1 : Vérifiez que toutes les exigences sont remplies

Vérifiez la compatibilité avec ArcGIS Enterprise, les navigateurs pris en charge et d'autres exigences système

Une telle vérification n'est pas spécifique à l'établissement de connexions à la base de données dans Insights, elle est néanmoins cruciale. Lorsque vous travaillez avec une configuration non prise en charge/non certifiée, vous pouvez rencontrer des problèmes inattendus au cours de n'importe quelle tâche. Il n'est pas rare qu'après un dépannage approfondi, quelqu'un vérifie enfin les versions et se rende compte que & ldquooh, Insights 3.3 n'est pas compatible avec ArcGIS Enterprise 10.7.x et les versions ultérieures & rdquo.

Assurez-vous de consulter les documentations suivantes au moins une fois :

Sachez également, comme dans la documentation, que si le serveur d'hébergement est configuré avec un ArcGIS Web Adaptor dont l'accès administratif est désactivé, vous devez configurer un certificat signé par une autorité de certification avec ArcGIS Server pour prendre en charge la création de connexions à la base de données.

Vérifiez si votre base de données de ciblage est prise en charge

Insights vous permet de vous connecter aux versions de bases de données Oracle, Microsoft SQL Server, PostgreSQL et SAP HANA prises en charge.

Actuellement, Insights ne prend pas en charge les données versionnées, et seules les tables utilisateur de géodatabase NON créées sous le schéma utilisateur SDE peuvent être affichées et accessibles à partir d'Insights.

Pour obtenir une liste complète des types de bases de données pris en charge et de leurs versions respectives, consultez la documentation Bases de données prises en charge. C'est également une bonne idée de vérifier si vos types de données de ciblage sont pris en charge et si le type de données (par exemple ST_GEOMETRY dans Oracle) nécessite une configuration supplémentaire.

Une fois que vous avez confirmé que toutes les exigences du système et de la base de données sont remplies, nous pouvons passer à l'étape suivante.


Établir des connexions à la base de données dans la version entreprise d'ArcGIS Insights - Partie 2

Lorsque vous essayez d'établir des connexions à la base de données dans ArcGIS Insights dans ArcGIS Enterprise, vous pouvez souvent rencontrer des erreurs telles que &ldquoHôte non valide&rdquo, &ldquoData connection issue&rdquo ou &ldquoQuelque chose s'est mal passé&rdquo. Il n'est pas toujours facile de déterminer exactement ce qui s'est mal passé. D'après mon expérience, il y a de meilleures chances de réussir une connexion à la base de données si l'on suit attentivement les cinq étapes de ce guide.

Dans la partie 1 de ce guide, nous avons abordé les cinq étapes nécessaires à la réussite d'une connexion à la base de données dans la version d'ArcGIS Insights Enterprise et avons couvert les deux premières étapes en détail.

  1. Vérifier que toutes les exigences sont remplies
  2. Enregistrer le type de magasin de données relationnelles avec ArcGIS Enterprise
  3. Confirmez que le serveur de base de données autorise les connexions depuis le serveur d'hébergement
  4. Préparer l'utilisateur de la base de données utilisé dans la connexion
  5. Remplissez correctement les paramètres lors de la création de la connexion à la base de données

Passons maintenant aux trois étapes restantes.

Étape 3 : Confirmez que le serveur de base de données autorise les connexions depuis le serveur d'hébergement

Dans cette étape, j'utiliserai SQL Server comme exemple pour expliquer comment vérifier si votre serveur de base de données autorise les connexions à partir d'Insights in ArcGIS Enterprise. Les mêmes principes peuvent être appliqués à d'autres bases de données relationnelles.

Tout d'abord pour clarifier, Insights in ArcGIS Enterprise se connecte à une base de données via le serveur d'hébergement du portail, c'est pourquoi nous téléchargeons les fichiers client de la base de données (c'est-à-dire les pilotes JDBC) sur ArcGIS Server. Par conséquent, lorsque nous vérifions si un serveur de base de données autorise les connexions depuis Insights, nous vérifions réellement si le serveur de base de données autorise les connexions depuis le serveur d'hébergement.

Supposons que je souhaite me connecter à une instance SQL Server appelée dbserver.domain.localSQLEXPRESS, où dbserver.domain.local est le nom de domaine complet du serveur et SQLEXPRESS est le nom de l'instance. Cette instance est configurée avec un port statique 1433.

(Notez qu'avec SQL Server, vous pouvez ne pas avoir d'instance nommée mais utiliser l'instance par défaut, auquel cas, vous ne spécifiez que le nom du serveur pour la connexion. Vérifiez auprès de votre administrateur de base de données si vous n'êtes pas sûr.)

La première question est : &ldquoPuis-je résoudre dbserver.domain.local depuis la machine du serveur d'hébergement ?&rdquo Il existe de nombreuses commandes qui peuvent aider à répondre à cette question, par ex. Ping, Telnet, Nslookup. Vous pouvez rechercher sur Internet pour en savoir plus sur eux si nécessaire.

Si je peux atteindre le serveur de base de données depuis ma machine serveur d'hébergement, je dois ensuite demander : &ldquoPuis-je me connecter à ce serveur de base de données via le port 1433 ?&rdquo J'exécute souvent Port du nom d'hôte Telnet commande pour cette tâche. Si cela échoue, je recevrai un message comme ci-dessous si cela fonctionne, l'invite de commande se transformera temporairement en une fenêtre vide.

Échec de la connexion au serveur de base de données via le port 1433

Il existe de nombreuses causes qui pourraient échouer au test ci-dessus, qui peuvent être grossièrement classées en configuration du serveur de base de données ou alors Configuration du réseau problèmes.

Les problèmes de configuration réseau peuvent être, pour n'en citer que quelques-uns, l'incapacité de la machine du serveur d'hébergement à résoudre le nom du serveur de base de données (alors que l'adresse IP du serveur peut être résolue), le pare-feu sur le serveur de base de données n'autorisant que le trafic entrant via le port 1433 à partir de certaines adresses IP , anti-virus bloquant le trafic réseau à chaque extrémité, etc. Ces problèmes peuvent être mieux traités par les administrateurs réseau.

Les problèmes de configuration du serveur de base de données, bien qu'ils restent des problèmes de configuration réseau, peuvent incomber aux administrateurs de base de données, car ils sont spécifiques à une instance de base de données installée sur la machine serveur. Par exemple, si mon telnet <nom du serveur> <port> le test de connexion échoue toujours, mais je peux résoudre le nom du serveur de base de données et les pare-feu sont désactivés, je devrai peut-être vérifier dans SQL Server Configuration Manager si le protocole TCP/IP est activé pour mon SQLEXPRESS exemple ou non.

Protocoles pour une instance SQL Server

Si vous êtes l'administrateur SIG, vous devrez peut-être vous fier à votre informatique et/ou DBA à cette étape. Avant de les contacter, un test faisable consiste à installer un client de base de données sur la machine du serveur d'hébergement (par exemple ODBC Driver 17 pour SQL Server) avec une application de gestion de base de données (par exemple SQL Server Management Studio) et voir si vous pouvez établir une connexion dans l'application de gestion avec le nom du serveur, le nom de l'instance et les informations d'identification de l'utilisateur de la base de données fournies par votre informatique ou votre DBA. Sinon, vous avez des problèmes de configuration de réseau et/ou de serveur de base de données à résoudre.

Étape 4 : Préparez l'utilisateur de la base de données utilisé dans la connexion

Même si vous pouvez vous connecter à la base de données de ciblage à l'aide d'une application de gestion de base de données à partir du serveur d'hébergement du portail, vous pouvez toujours rencontrer une erreur telle que &ldquoUne erreur s'est produite&rdquo lorsque vous essayez de créer une connexion à la base de données dans Insights.

Un test consiste à demander à votre DBA de créer une connexion à la base de données dans Insights à l'aide de ses informations d'identification de superutilisateur (par exemple, sa) et si cela fonctionne, le problème concerne l'utilisateur de votre base de données.

Avec SQL Server, notez tout d'abord que l'authentification Windows n'est actuellement pas prise en charge dans Insights selon la documentation Esri. Vous devez utiliser un utilisateur SQL Server au lieu d'un utilisateur de domaine pour les connexions dans Insights.

Si ce n'est pas le problème, il est probable que l'utilisateur de votre connexion ne dispose pas des privilèges appropriés. Il existe deux types d'opérations de données dans ArcGIS Insights :

  • Connectez-vous et parcourez le contenu d'une base de données relationnelle, sans mise en cache des données.
  • Connectez-vous et parcourez le contenu d'une base de données relationnelle, avec la mise en cache des données.

Avec la mise en cache des données, l'utilisateur de connexion a besoin de plus de privilèges, tels que la création de tables dans la base de données. Dans la documentation Privilèges de base de données requis, vous trouverez des codes SQL pour accorder des privilèges aux utilisateurs en lecture-écriture et aux utilisateurs en lecture seule, pour toutes les bases de données relationnelles prises en charge.

Étape 5 : Renseignez correctement les propriétés lors de la création de la connexion à la base de données

Nous sommes maintenant prêts à créer une connexion à la base de données après avoir choisi le type de base de données avec lequel travailler. Voici un formulaire rempli pour se connecter à une base de données SQL Server appelée monsterdb hébergé sur le serveur de base de données dbserver.domain.local exemple SQLEXPRESS.

Connexion à la base de données SQL Server

Pour les connexions à la base de données SQL Server, Nom de l'instance peut ou non s'appliquer selon que vous travaillez avec une instance nommée ou l'instance par défaut. Aussi, Numéro de port peut être vide, en particulier lorsque l'instance utilise des ports dynamiques.

Lorsque le type de base de données change, ce formulaire est mis à jour en conséquence.

Connexions de base de données à Oracle, PostgreSQL et SAP HANA

Les propriétés de connexion obligatoires, signalées par un astérisque, varient d'un type de base de données à l'autre. Les exigences des connexions de base de données dans Insights doivent généralement correspondre à la manière dont vous établissez de telles connexions en dehors d'Insights, par exemple, dans une application de gestion de base de données.

Si vous rencontrez une erreur après avoir cliqué sur l'ajout d'une nouvelle connexion, nous espérons que le message d'erreur vous donnera un indice. Vous pouvez trouver le problème documenté dans Dépanner une connexion à une base de données et/ou enregistré dans le journal DEBUG du serveur d'hébergement.

Journal de débogage d'ArcGIS Server avec ID de demande (à partir de 10.7 et versions ultérieures) généré par Insights

Sometimes, a closer examination of the filled in properties is all you need to resolve a connection issue (e.g. removing the optional port for a SQL Server database connection, using IP address instead of server name, switching uppercase letters to lowercase letters or the other way around) or you may need to revisit the steps mentioned in this guide.

Thank you for reading the Guide. If you&rsquod like to watch a demonstration of the steps, please check out this video as well. Hopefully it&rsquoll be smooth sailing next time when you make database connections in Insights.


Voir la vidéo: Connect to a Geodatabase in ArcMap (Octobre 2021).