Dans \/blogs\/tilting\/2014\/07\/25\/semantic-overloading<\/A>, j'aborde l'une des principales motivations pour écrire le blog Tilting at Globes<\/A> :<\/P>Je crois que la sémantique est importante dans tous les aspects de la vie. Que ce soit en droit, en médecine, en science, en affaires, en technologie de l'information ou dans tout autre domaine ; avoir un langage commun ne sert pas à grand-chose s'il n'y a pas une compréhension commune des mots qui composent ce langage. Comme les langues évoluent, maintenir une compréhension commune des mots au fil du temps est un défi constant.<\/P><\/BLOCKQUOTE><\/P>Idéalement, une compréhension commune signifierait qu'un mot ou un terme a une seule signification, et que cette signification unique est connue et comprise par tous ceux qui utilisent le mot ou le terme. Malheureusement, la réalité n'est pas toujours idéale, et parfois le contexte du mot ou du terme joue un rôle important dans sa signification. Par exemple, la façon dont le terme "large-scale" est appliqué aux cartes peut sembler contre-intuitive par rapport à la façon dont il est appliqué aux actions, événements et objets typiques. Lorsqu'on comprend que l'échelle de la carte s'applique à la représentation des données sur la carte, c'est-à-dire le rapport entre la distance sur la carte et la distance sur le terrain, cela aide à expliquer pourquoi les cartes "large-scale" couvrent de petites zones géographiques au lieu de grandes zones géographiques. Bien sûr, une carte large-scale pourrait couvrir une grande zone géographique si elle était imprimée sur un support énorme, mais je suppose des tailles d'impression typiques.<\/EM><\/P><\/P>Passant des cartes aux géométries, je mentionne un cas d'opérateurs spatiaux dans \/blogs\/tilting\/2015\/05\/14\/whats-within-when-esri-clementini<\/A> . Dans cet article de blog, je souligne comment la réponse à la question de savoir si une géométrie est "within" une autre géométrie peut dépendre de la personne à qui vous demandez, ou plus précisément, de la définition de "within" utilisée pour répondre à la question. Souvent, les qualificatifs sont soit incomplets soit totalement omis dans les réponses, et nous finissons par nous appuyer sur le contexte pour combler les lacunes.<\/P><\/P>En plus de la façon dont les géométries se rapportent les unes aux autres, il existe même différents contextes pour comprendre la structure des géométries ou des types de géométrie. Le modèle d'objet Geometry actuel d'Esri ArcGIS Geometry Object Model<\/A> existe depuis la sortie d'ArcMap 8.0. Bien que le modèle ait évolué quelque peu au fil du temps, il n'est pas significativement différent de celui publié en 1999. Je ne connais pas clairement l'historique du type de stockage Esri ST_Geometry storage type<\/A>, mais je sais qu'il existe depuis au moins l'époque d'ArcGIS 9.x. Même en opérant dans un contexte des types de géométrie Esri, omettre les qualificatifs peut parfois conduire à une ambiguïté. On peut soutenir que l'API REST d'Esri représente un troisième modèle de géométrie Esri, mais ajouter ce modèle dans cet article ne change pas les observations et conclusions.<\/EM><\/P><\/P>Au lieu de plonger dans des diagrammes du modèle objet et dans la documentation de référence, regardons un exemple montrant comment les types ArcGIS et ST_Geometry diffèrent en termes de structure. Ci-dessous se trouve une image ainsi que le code pour créer quatre géométries dans une base de données SQLite utilisant le type ST_Geometry d'Esri. Chaque géométrie est attribuée avec son type ST_Geometry et son type ArcGIS.<\/P><\/P><\/P><\/P><SPAN class="keyword token">import<\/SPAN> arcpy <SPAN class="keyword token">import<\/SPAN> os <SPAN class="keyword token">import<\/SPAN> sqlite3 <SPAN class="keyword token">from<\/SPAN> itertools <SPAN class="keyword token">import<\/SPAN> chain <SPAN class="comment token"># Définir des exemples de géométrie<\/SPAN> PCSCode <SPAN class="operator token">=<\/> <SPAN class="number token">3857<\/></SPAN> geoms <SPAN class="operator token">=<\/> [ (<SPAN class="string token">"poly"<\/><SPAN class="punctuation token">,<\/> <SPAN class="string token">"polygon"<\/><SPAN class="punctuation token">,<\/> <SPAN class="string token">"POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"<\/><SPAN class="punctuation token">)<\/><SPAN class="punctuation token">,<\/> (<SPAN class="string token">"multipoly"<\/><SPAN class="punctuation token">,<\/> <SPAN class="string token">"multipolygon"<\/><SPAN class="punctuation token">,<\/> (<SPAN class="string token">"MULTIPOLYGON(((15 0, 25 0, 25 10, 15 10, 15 0)),"<\/> (<SPAN class="string token">"((18 13, 18 18, 24 18, 24 13, 18 13)))"<\/><SPAN class="punctuation token">)<\/><SPAN class="punctuation token">)<\/><SPAN class="punctuation token">,<\/> (<SPAN class="string token">"line"<\/><SPAN class="punctuation token">,<\/> <SPAN class="string token">"linestring"<\/><SPAN class="punctuation token">,<\/> <SPAN class="string token">"LINESTRING(3 13, 3 18)"<\/><SPAN class="punctuation token">)<\/><SPAN class="punctuation token">,<\/> (<SPAN class="string token">"multiline"<\/><SPAN class="punctuation token">,<\/> <SPAN class="string token">"multilinestring"<\/><SPAN class="punctuation token">,<\/> <SPAN class="string token">"MULTILINESTRING((6 13, 9 13),(9 14, 9 17))"<\/><SPAN class="punctuation token">)<\/> ]<\/> <SPAN class="comment token"># Définir les paramètres d'initialisation de la base SQLite<\/></SPAN> sqlitedb <SPAN class="operator token">=<\/> r<SPAN class="string token">"D:\tmp\test.sqlite"<\/> <SPAN class="comment token"># chemin vers la base SQLite<\/></Span> st_geometry_dll <span class=operator_token>=</span> r<spanclass=string_token>"DatabaseSupport extbackslash SQLite extbackslash Windows32 extbackslash stgeometry_sqlite.dll"</span> st_geometry_dll <spanclass=operator_token>=</span> os.path.join(arcpy.GetInstallInfo()[<spanclass=string_token>InstallDir</span>], st_geometry_dll) sql_stmts <spanclass=operator_token>=</span> [[ SELECT load_extension('%s','SDE_SQL_funcs_init');' % st_geometry_dll ],[ ("CREATE TABLE %s " (id integer primary key autoincrement not null," stgeom_type text,arcgis_type text);" % table) for table,geom_type,WKT in geoms ],[ ("SELECT AddGeometryColumn " (null,'%s','geom',3857,'%s',2,'null');" % (table,3857,geom_type) for table,geom_type,WKT in geoms ] <SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">"INSÉRER DANS %s "<\/SPAN> <SPAN class="string token">"(geom) VALEURS (st_geometry('%s', %s));"<\/SPAN> <SPAN class="operator token">%<\/SPAN> <SPAN class="punctuation token">(<\/SPAN>table<SPAN class="punctuation token">, <\/SPAN>WKT<SPAN class="punctuation token">, <\/SPAN>PCSCode<SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">)<\/SPAN> <SPAN class="keyword token">pour<\/SPAN> table<SPAN class="punctuation token">, <\/SPAN>geom_type<SPAN class="punctuation token">, <\/SPAN>WKT <SPAN class="keyword token">dans<\/SPAN> geoms <SPAN class="punctuation token">]<\/SPAN><SPAN class="punctuation token">, <\/SPAN><SPAN class="punctuation token">[<\/SPAN> <SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">"MISE À JOUR %s "<\/SPAN> <SPAN class="string token">"DÉFINIR stgeom_type = st_geometrytype(geom);"<\/SPAN> <SPAN class="operator token">%<\/SPAN> table<SPAN class="punctuation token">)<\/SPAN> <SPAN class="keyword token">pour<\/SPAN> table<SPAN class="punctuation token">, <\/span>geom_type<Span class="punctuation token">, <\/span>WKT <Span class="keyword token">dans<\/span> geoms <Span class="punctuation token">]<\/span> <span class="punctuation token">]<\/span> <span class="comment token"># Créer la base de données SQLite et configurer les tables<\/span> arcpy<span class="punctuation token">.<\/span>CreateSQLiteDatabase_management<span class="punctuation token">(<\/span>sqlitedb<span class="punctuation token">, <\/span><span class="string token">"ST_GEOMETRY"<\/span><span class="punctuation token">)<\/span> conn <span class="operator token">=<\/span> sqlite3<span class="punctuation token">.<\/span>Connection<span class="punctuation token">(<\/span>sqlitedb<span class="punctuation token">)<\/span> conn<span class="punctuation token">.<\/span>enable_load_extension<span class="punctuation token">(<\/span><span class="token boolean">True<\/span><span class="punctuation token">)<\/span> cur <span class="operator token">=<\/span> conn<span class="punctuation token">.<\/span>cursor<span class="punctuation token">(<\/span><span class="punctuation token">)<\/span> <span class="keyword token">pour<\/span> sql <span class="keyword token">dans<\/span> chain<span class="punctuation token">(<\/span><span class="operator token">*<\/span>sql_stmts<span class="punctuation token">)<\/span><span class="punctuation token">:<\/span> cur<span class="punctuation token">.<\/span>execute<span class="punctuation token">(<\/span>sql<span class="punctuation token">)<\/span> conn<span class="punctuation token">.<\/span>commit<span class="punctuation token">(<\/span><span class="punctuation token">)<\/span> <span class="keyword token">del<\/span> cur<span class="punctuation token">, <\/span>conn <span class="comment token"># Remplir le type de géométrie ArcGIS<\/span> <span class="keyword token">pour<\/span> table<span class="punctuation token">, <\/span>geom_type<span class="punctuation token">, <\/span>WKT <span class="keyword token">dans<\/span> geoms<span class="punctuation token">:<\/span> <Span class=\"keyword\" >avec</Span> arcpy<span class=\"punctuation\" >.<\/<Span >da</Span ><Span >.<\/<Span >UpdateCursor</Span ><Span >(<\/<Span > os<span class=\"punctuation\" >.<\/<Span >path</Span ><Span >.<\/<Span >join</Span ><Span >(<\/<Span >sqlitedb</Span ><Span >, </Span >table</Span ><Span >)<\/<Span >, </Span > <Span >[</Span ><Span >\"shape@\"</Span ><Span >, </Span ><Span >\"arcgis_type\"</Span ><Span >]</Span > ) <Span >as</Span > cur: pour shape, _ dans cur: & nbsp ; & nbsp ; cur.updateRow([shape, shape.type]) <span style='display:none'>del cur< </ span ><p></p><p>Quelques observations : </p><ul><li>ArcGIS a un seul type de géométrie <code style='font-family: courier new,courier,monospace;'>polyline, ST_Geometry a les types ST_LINESTRING et ST_MULTILINESTRING.ArcGIS a un seul type de géométrie polygon, ST_Geometry a les types ST_POLYGON et ST_MULTIPOLYGON.Tandis qu'ArcGIS a les types point et multipoint, il n'y a pas de préfixe multi- lorsqu'on travaille avec les types polyline et polygon.
Je crois que la sémantique est importante dans tous les aspects de la vie. Que ce soit en droit, en médecine, en science, en affaires, en technologie de l'information ou dans tout autre domaine ; avoir un langage commun ne sert pas à grand-chose s'il n'y a pas une compréhension commune des mots qui composent ce langage. Comme les langues évoluent, maintenir une compréhension commune des mots au fil du temps est un défi constant.<\/P><\/BLOCKQUOTE><\/P>Idéalement, une compréhension commune signifierait qu'un mot ou un terme a une seule signification, et que cette signification unique est connue et comprise par tous ceux qui utilisent le mot ou le terme. Malheureusement, la réalité n'est pas toujours idéale, et parfois le contexte du mot ou du terme joue un rôle important dans sa signification. Par exemple, la façon dont le terme "large-scale" est appliqué aux cartes peut sembler contre-intuitive par rapport à la façon dont il est appliqué aux actions, événements et objets typiques. Lorsqu'on comprend que l'échelle de la carte s'applique à la représentation des données sur la carte, c'est-à-dire le rapport entre la distance sur la carte et la distance sur le terrain, cela aide à expliquer pourquoi les cartes "large-scale" couvrent de petites zones géographiques au lieu de grandes zones géographiques. Bien sûr, une carte large-scale pourrait couvrir une grande zone géographique si elle était imprimée sur un support énorme, mais je suppose des tailles d'impression typiques.<\/EM><\/P><\/P>Passant des cartes aux géométries, je mentionne un cas d'opérateurs spatiaux dans
Je crois que la sémantique est importante dans tous les aspects de la vie. Que ce soit en droit, en médecine, en science, en affaires, en technologie de l'information ou dans tout autre domaine ; avoir un langage commun ne sert pas à grand-chose s'il n'y a pas une compréhension commune des mots qui composent ce langage. Comme les langues évoluent, maintenir une compréhension commune des mots au fil du temps est un défi constant.<\/P><\/BLOCKQUOTE>
<\/P>
Idéalement, une compréhension commune signifierait qu'un mot ou un terme a une seule signification, et que cette signification unique est connue et comprise par tous ceux qui utilisent le mot ou le terme. Malheureusement, la réalité n'est pas toujours idéale, et parfois le contexte du mot ou du terme joue un rôle important dans sa signification. Par exemple, la façon dont le terme "large-scale" est appliqué aux cartes peut sembler contre-intuitive par rapport à la façon dont il est appliqué aux actions, événements et objets typiques. Lorsqu'on comprend que l'échelle de la carte s'applique à la représentation des données sur la carte, c'est-à-dire le rapport entre la distance sur la carte et la distance sur le terrain, cela aide à expliquer pourquoi les cartes "large-scale" couvrent de petites zones géographiques au lieu de grandes zones géographiques. Bien sûr, une carte large-scale pourrait couvrir une grande zone géographique si elle était imprimée sur un support énorme, mais je suppose des tailles d'impression typiques.<\/EM><\/P><\/P>Passant des cartes aux géométries, je mentionne un cas d'opérateurs spatiaux dans
En plus de la façon dont les géométries se rapportent les unes aux autres, il existe même différents contextes pour comprendre la structure des géométries ou des types de géométrie. Le modèle d'objet Geometry actuel d'Esri ArcGIS
<SPAN class="keyword token">import<\/SPAN> arcpy <SPAN class="keyword token">import<\/SPAN> os <SPAN class="keyword token">import<\/SPAN> sqlite3 <SPAN class="keyword token">from<\/SPAN> itertools <SPAN class="keyword token">import<\/SPAN> chain <SPAN class="comment token"># Définir des exemples de géométrie<\/SPAN> PCSCode <SPAN class="operator token">=<\/> <SPAN class="number token">3857<\/></SPAN> geoms <SPAN class="operator token">=<\/> [ (<SPAN class="string token">"poly"<\/><SPAN class="punctuation token">,<\/> <SPAN class="string token">"polygon"<\/><SPAN class="punctuation token">,<\/> <SPAN class="string token">"POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"<\/><SPAN class="punctuation token">)<\/><SPAN class="punctuation token">,<\/> (<SPAN class="string token">"multipoly"<\/><SPAN class="punctuation token">,<\/> <SPAN class="string token">"multipolygon"<\/><SPAN class="punctuation token">,<\/> (<SPAN class="string token">"MULTIPOLYGON(((15 0, 25 0, 25 10, 15 10, 15 0)),"<\/> (<SPAN class="string token">"((18 13, 18 18, 24 18, 24 13, 18 13)))"<\/><SPAN class="punctuation token">)<\/><SPAN class="punctuation token">)<\/><SPAN class="punctuation token">,<\/> (<SPAN class="string token">"line"<\/><SPAN class="punctuation token">,<\/> <SPAN class="string token">"linestring"<\/><SPAN class="punctuation token">,<\/> <SPAN class="string token">"LINESTRING(3 13, 3 18)"<\/><SPAN class="punctuation token">)<\/><SPAN class="punctuation token">,<\/> (<SPAN class="string token">"multiline"<\/><SPAN class="punctuation token">,<\/> <SPAN class="string token">"multilinestring"<\/><SPAN class="punctuation token">,<\/> <SPAN class="string token">"MULTILINESTRING((6 13, 9 13),(9 14, 9 17))"<\/><SPAN class="punctuation token">)<\/> ]<\/> <SPAN class="comment token"># Définir les paramètres d'initialisation de la base SQLite<\/></SPAN> sqlitedb <SPAN class="operator token">=<\/> r<SPAN class="string token">"D:\tmp\test.sqlite"<\/> <SPAN class="comment token"># chemin vers la base SQLite<\/></Span> st_geometry_dll <span class=operator_token>=</span> r<spanclass=string_token>"DatabaseSupport extbackslash SQLite extbackslash Windows32 extbackslash stgeometry_sqlite.dll"</span> st_geometry_dll <spanclass=operator_token>=</span> os.path.join(arcpy.GetInstallInfo()[<spanclass=string_token>InstallDir</span>], st_geometry_dll) sql_stmts <spanclass=operator_token>=</span> [[ SELECT load_extension('%s','SDE_SQL_funcs_init');' % st_geometry_dll ],[ ("CREATE TABLE %s " (id integer primary key autoincrement not null," stgeom_type text,arcgis_type text);" % table) for table,geom_type,WKT in geoms ],[ ("SELECT AddGeometryColumn " (null,'%s','geom',3857,'%s',2,'null');" % (table,3857,geom_type) for table,geom_type,WKT in geoms ] <SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">"INSÉRER DANS %s "<\/SPAN> <SPAN class="string token">"(geom) VALEURS (st_geometry('%s', %s));"<\/SPAN> <SPAN class="operator token">%<\/SPAN> <SPAN class="punctuation token">(<\/SPAN>table<SPAN class="punctuation token">, <\/SPAN>WKT<SPAN class="punctuation token">, <\/SPAN>PCSCode<SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">)<\/SPAN> <SPAN class="keyword token">pour<\/SPAN> table<SPAN class="punctuation token">, <\/SPAN>geom_type<SPAN class="punctuation token">, <\/SPAN>WKT <SPAN class="keyword token">dans<\/SPAN> geoms <SPAN class="punctuation token">]<\/SPAN><SPAN class="punctuation token">, <\/SPAN><SPAN class="punctuation token">[<\/SPAN> <SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">"MISE À JOUR %s "<\/SPAN> <SPAN class="string token">"DÉFINIR stgeom_type = st_geometrytype(geom);"<\/SPAN> <SPAN class="operator token">%<\/SPAN> table<SPAN class="punctuation token">)<\/SPAN> <SPAN class="keyword token">pour<\/SPAN> table<SPAN class="punctuation token">, <\/span>geom_type<Span class="punctuation token">, <\/span>WKT <Span class="keyword token">dans<\/span> geoms <Span class="punctuation token">]<\/span> <span class="punctuation token">]<\/span> <span class="comment token"># Créer la base de données SQLite et configurer les tables<\/span> arcpy<span class="punctuation token">.<\/span>CreateSQLiteDatabase_management<span class="punctuation token">(<\/span>sqlitedb<span class="punctuation token">, <\/span><span class="string token">"ST_GEOMETRY"<\/span><span class="punctuation token">)<\/span> conn <span class="operator token">=<\/span> sqlite3<span class="punctuation token">.<\/span>Connection<span class="punctuation token">(<\/span>sqlitedb<span class="punctuation token">)<\/span> conn<span class="punctuation token">.<\/span>enable_load_extension<span class="punctuation token">(<\/span><span class="token boolean">True<\/span><span class="punctuation token">)<\/span> cur <span class="operator token">=<\/span> conn<span class="punctuation token">.<\/span>cursor<span class="punctuation token">(<\/span><span class="punctuation token">)<\/span> <span class="keyword token">pour<\/span> sql <span class="keyword token">dans<\/span> chain<span class="punctuation token">(<\/span><span class="operator token">*<\/span>sql_stmts<span class="punctuation token">)<\/span><span class="punctuation token">:<\/span> cur<span class="punctuation token">.<\/span>execute<span class="punctuation token">(<\/span>sql<span class="punctuation token">)<\/span> conn<span class="punctuation token">.<\/span>commit<span class="punctuation token">(<\/span><span class="punctuation token">)<\/span> <span class="keyword token">del<\/span> cur<span class="punctuation token">, <\/span>conn <span class="comment token"># Remplir le type de géométrie ArcGIS<\/span> <span class="keyword token">pour<\/span> table<span class="punctuation token">, <\/span>geom_type<span class="punctuation token">, <\/span>WKT <span class="keyword token">dans<\/span> geoms<span class="punctuation token">:<\/span> <Span class=\"keyword\" >avec</Span> arcpy<span class=\"punctuation\" >.<\/<Span >da</Span ><Span >.<\/<Span >UpdateCursor</Span ><Span >(<\/<Span > os<span class=\"punctuation\" >.<\/<Span >path</Span ><Span >.<\/<Span >join</Span ><Span >(<\/<Span >sqlitedb</Span ><Span >, </Span >table</Span ><Span >)<\/<Span >, </Span > <Span >[</Span ><Span >\"shape@\"</Span ><Span >, </Span ><Span >\"arcgis_type\"</Span ><Span >]</Span > ) <Span >as</Span > cur: pour shape, _ dans cur: & nbsp ; & nbsp ; cur.updateRow([shape, shape.type]) <span style='display:none'>del cur< </ span ><p></p><p>Quelques observations : </p><ul><li>ArcGIS a un seul type de géométrie <code style='font-family: courier new,courier,monospace;'>polyline
ST_LINESTRING
ST_MULTILINESTRING
polygon
ST_POLYGON
ST_MULTIPOLYGON
point
multipoint
polyline
Si les types ST_Geometry semblent familiers à ceux qui travaillent avec des standards ouverts, ce n'est pas une coïncidence. La documentation sur Comment ST_Geometry est-il implémenté ? — Aide | ArcGIS Desktop indique à plusieurs endroits que ST_Geometry « est un type de stockage haute performance qui inclut un accès SQL conforme aux normes ISO et OGC aux données spatiales ». Il existe plusieurs normes ISO et OGC concernant les géométries, et la partie « accès SQL aux données spatiales » de cette déclaration est en fait assez importante comme qualification.
L'adhérence aux normes ISO et OGC est assez large à travers divers modèles ou types de stockage de géométrie, par exemple STGeometry de Microsoft, SDO_GEOM d'Oracle, ST_Geometry de PostGIS/PostgreSQL et d'autres. Le modèle d'objet géométrique OGC/OpenGIS est décrit dans Norme d'implémentation OpenGIS® pour l'information géographique - Accès aux entités simples - Partie 1 : Architecture commune. Au lieu d'intégrer un diagramme hiérarchique des classes de géométrie ou de lister tous les types de géométrie, je partagerai là sont des types LineString et MultiLineString ainsi que des types Polygon et MultiPolygon.<\/P>
Tout cela mène à un point, et oui j'ai un point, que les types polyline et polygon d'ArcGIS sont essentiellement des multi-types, juste avec le préfixe multi- manquant. Pire encore, la plupart de la documentation ArcGIS abstrait encore plus l'utilisateur de la structure du Geometry Object Model d'ArcGIS. Au lieu que les polylignes aient des chemins et que les polygones aient des anneaux, ce qu'ils ont, tout a simplement des "parts." Je traite ce problème des "parts" dans \/blogs\/tilting\/2016\/02\/20\/the-single-multipart-polygons-with-interior-boundaries:<\/P>
Le problème avec les classes Geometry d'ArcPy, du moins une d'entre elles, est qu'Esri a remplacé plusieurs composants géométriques spécifiques par un seul générique, la "part." En abstraisant les géométries et les anneaux avec des parts, non seulement ils se sont écartés des normes et standards géospatiaux, mais ils ont créé le polygon à partie unique multi-partie digne d'un spectacle secondaire.<\/SPAN><\/BLOCKQUOTE><\/P>Qu'il manque des préfixes ou qu'il y ait la part omniprésente, comprendre les nuances de l'implémentation et de la documentation du Geometry Object Model d'ArcGIS peut aider à comprendre comment le logiciel ArcGIS, y compris ArcPy, interagit avec d'autres types de géométrie.<\/SPAN><\/P><\/BODY><\/HTML>
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.