ArcGIS Arcade kan worden gebruikt om ArcGIS Knowledge Graphs direct te bevragen vanuit aangepaste pop-ups in webkaarten, kaart-apps, linkdiagrammen binnen veel ArcGIS-toepassingen, zoals ArcGIS Pro, ArcGIS AllSource, ArcGIS Knowledge Studio en binnen kaarten in Map Viewer, Dashboards en Experience Builder. Dit stelt analisten in staat om een geselecteerd object, entiteit of relatie te verrijken met verbonden context uit een enterprise knowledge graph—zonder gebruikers uit hun bestaande kaart- of linkdiagramworkflow te halen.
Dit patroon is nuttig wanneer een feature-laag slechts een deel van het operationele beeld bevat, maar de bredere context zich bevindt in een knowledge graph. Een pop-up kan het geselecteerde object koppelen aan een grafiekentiteit via een unieke ID, de geometrie van het geselecteerde object gebruiken in een ruimtelijke grafiekquery, verbonden entiteiten samenvatten of een URL genereren die de gerelateerde entiteit opent in Knowledge Studio.
In deze context betekent “side-loading context” het ophalen van gerelateerde grafiekinformatie op het moment van klikken en deze weergeven in een pop-up, in plaats van grafiekafgeleide attributen te kopiëren naar de feature-laag.
Er zijn twee veelvoorkomende patronen: ten eerste kunnen pop-ups van feature-lagen een gedeelde ID, attribuut of geometrie gebruiken om gerelateerde entiteiten in een knowledge graph te vinden; ten tweede kunnen pop-ups van knowledge graph-lagen starten vanaf de geselecteerde entiteit of relatie en extra verbonden context uit dezelfde grafiek opvragen.
Wat je zult leren
- Hoe je ArcGIS Arcade gebruikt om ArcGIS Knowledge Graphs te bevragen vanuit aangepaste pop-ups.
- Hoe je pop-ups van feature-lagen koppelt aan grafiekentiteiten met gedeelde ID's, attributen of geometrie.
- Hoe je dezelfde grafiek bevraagt vanuit een knowledge graph-laag of linkdiagram met $graph.
- Hoe je resultaten van grafiekqueries formatteert als pop-uptekst, tabellen, links of samenvattingen.
- Hoe je Knowledge Studio-URL's genereert vanuit Arcade-expressies.
Wanneer je Arcade-grafiekpop-ups gebruikt
Gebruik dit patroon wanneer je kaartlaag het operationele object toont, maar gerelateerde context zich bevindt in een ArcGIS Knowledge Graph. Veelvoorkomende voorbeelden zijn het vinden van leveranciers, activa, faciliteiten, percelen, klanten, documenten of andere verbonden entiteiten gerelateerd aan een geselecteerd object.
- Voer ruimtelijke grafiekqueries uit vanaf een geselecteerde veelhoek, route, faciliteit of incidentgebied.
- Vat upstream- en downstreamrelaties samen
- Vat eigenschappen samen van die gerelateerde upstream- of downstreamentiteiten (som, gemiddelde, enz.)
- Open geselecteerde of gerelateerde entiteiten in ArcGIS Knowledge Studio.
- Stel aanvullende vragen in ArcGIS Knowledge Studio over de geselecteerde of gerelateerde entiteit met behulp van een URL-parameter
- Verrijk bestaande kaarten en apps zonder grafiekafgeleide attributen te dupliceren in feature-lagen.
Vereisten
- ArcGIS Enterprise 11.3 of later voor Arcade knowledge graph-functies in web Map / Link Chart Pop-Ups
- ArcGIS Pro 3.3 of later, ArcGIS AllSource, Map Viewer, ArcGIS Knowledge Studio of een andere ondersteunde kaart- of linkdiagramervaring.
- Toegang tot een ArcGIS Knowledge Graph.
- Een gedeelde identifier, geselecteerde geometrie of knowledge graph-laagentiteit die als query-invoer kan worden gebruikt.
- Geschikte machtigingen om toegang te krijgen tot de feature-laag, knowledge graph en Knowledge Studio-project.
- ArcGIS Enterprise 12.1 om dynamische URL's naar opgeslagen queries, nieuwe linkdiagrammen en andere geavanceerde workflows in Knowledge Studio vanuit pop-ups te ontgrendelen
Standaard workflow
- Identificeer de knowledge graph met KnowledgeGraphByPortalItem() of $graph.
- Leg het geselecteerde object, entiteit, relatie, attribuut of geometrie vast.
- Gebruik querygraph() om verbonden entiteiten, relaties of ruimtelijke overeenkomsten op te halen.
- Formatteer de queryresultaten als leesbare pop-upinhoud.
- Geef een woordenboek terug dat ArcGIS weergeeft in de pop-up.
Volledig voorbeeld: end-to-end Arcade-script
Laten we door een voorbeeld lopen. Stel dat je een feature-laag hebt die een orkaanvoorspellingskegel toont overgelegd op een kaart van belangrijke leveranciersfaciliteiten. Daarnaast onderhoud je meer gedetailleerde informatie over je leveranciers—en hun leveranciers—binnen een aparte knowledge graph in ArcGIS. Nu kan je pop-up bij het klikken op een weersgerelateerd object direct een ruimtelijke query uitvoeren tegen je knowledge graph. Dit stelt je in staat niet alleen al je tier 1-leveranciers binnen het getroffen gebied te identificeren, maar ook hun upstream-leveranciers en eventuele onderdelen die vooraf gepositioneerd (vroeger verzonden) moeten worden ter voorbereiding op de orkaan.
Je kunt ook je aangepaste pop-up configureren om meerdere queries tegelijk uit te voeren. Bijvoorbeeld kan dezelfde pop-up een samenvatting tonen van alle downstream-producten, belangrijke klanten en verwachte omzet die mogelijk binnen 30 dagen worden beïnvloed als de faciliteit van die leverancier wordt verstoord door de orkaan.
Het onderstaande voorbeeld Arcade-script laat zien hoe je dit zou kunnen gebruiken in een Kaart met een onafhankelijke Feature Service daar ter referentie naast een ruimtelijke Knowledge Graph-laag, of de grafiek kan helemaal niet aanwezig zijn in de kaart! De grafiekquery binnen de Arcade-expressie retourneert de Leveranciers die zich bevinden binnen de veelhoek van een geselecteerd weersobject.
Het onderstaande script demonstreert verschillende nuttige patronen:
- Gebruikt de Arcade-geometriefunctie - generalize - om de vorm van de geselecteerde veelhoek te vereenvoudigen voor betere prestaties van de ruimtelijke openCypher-query
- Toont hoe je Knowledge Studio-URL's kunt genereren die het geselecteerde object of overeenkomende 'tweeling'-entiteit openen in een knowledge graph. Je kunt ook URL's genereren om andere gerelateerde entiteiten voor diepere verkenning te onderzoeken.
Voorbeeldcode: end-to-end Arcade-script met grafiekquery naar onafhankelijke knowledge graph-service
//De portal item-ID van de Knowledge Graph-service (pid) en server url portal url (Pas deze aan)
var pid = "d03d80ca35c94cadb963f845acbd0de1"
var portal_url = " https://[YOUR_ORG_PORTAL_URL].com/portal/"
var kg = KnowledgeGraphByPortalItem(Portal(portal_url), pid)
// Om de veelhoek te vereenvoudigen voor betere prestaties gebruiken we de Generalize-functie
var gen = Generalize($feature, 5000, true, 'meters')
var results = querygraph(kg, "MATCH (s:Supplier) WHERE esri.graph.ST_Contains($feature_geom, s.shape) RETURN s.Name, s.globalid", {'feature_geom': gen});
var final_str = "";
var cnt = 0
for (var r in results) {
var name = results[r][0]
var g_id = StandardizeGuid(results[r][1],'digits-hyphen')
var studio_url = '<a href = ' + server_url + '/apps/knowledge-studio/main?id=' + pid + '&selectedContentId=dataExplorer&selectedContentElement=%7B' + g_id + '%7D&selectedContentInstruction=entity>'
final_str = final_str + studio_url + " " + name + "</a><br>"
}
return {
'type' : 'text',
'text' : final_str
}
Hoe Arcade-grafiekpop-ups werken
'De gedetailleerde "hoe-te"'
'Vanaf ArcGIS Enterprise 11.3 en ArcGIS Pro 3.3 kunnen''Arcade-expressies''ArcGIS Knowledge Graphs bevragen vanuit aangepaste pop-ups in kaarten en linkdiagrammen. Deze pop-ups kunnen worden geconfigureerd voor feature-lagen of knowledge graph-lagen in ArcGIS Pro, ArcGIS AllSource, ArcGIS Knowledge Studio, Map Viewer en webkaarttoepassingen.'
'De pop-up gebruikt Arcade-grafiekfuncties om informatie van het geselecteerde object, entiteit of relatie naar een grafiekquery te sturen. De query kan verbonden entiteiten retourneren, relatiegegevens tonen, berekende samenvattingen geven, ruimtelijke overeenkomsten vinden of geformatteerde output tonen die direct in de pop-up verschijnt.'
'Voor''feature-laagpop-ups''wordt het geselecteerde object meestal gekoppeld aan een knowledge graph-entiteit via een gedeelde GUID, asset-ID, faciliteits-ID, perceel-ID of ander uniek attribuut. De pop-up kan ook de geometrie van het geselecteerde object doorgeven aan een ruimtelijke grafiekquery om grafiekentiteiten te vinden die snijden met, binnenvallen of gerelateerd zijn aan dat gebied.'
'Voor''knowledge graph-laagpop-ups''is de geselecteerde entiteit of relatie al het startpunt. Arcade kan die selectie gebruiken om extra grafiekcontext op te vragen, verbonden gegevens samen te vatten of een Knowledge Studio-URL te genereren die de gerelateerde entiteit opent voor diepere verkenning.'
'Arcade-patroon voor het bevragen van ArcGIS Knowledge Graphs vanuit pop-ups'
'De meeste op Arcade gebaseerde Knowledge Graph-pop-ups volgen hetzelfde basispatroon: identificeer de grafiek, definieer het geselecteerde object of entiteit als invoer, voer een grafiekquery uit, formatteer de resultaten en geef een dictionary terug die klaar is voor pop-ups. Laten we elke stap doorlopen.'
'Stap 1 — Identificeer de kennisgrafiek om te bevragen'
'In Arcade betekent “verbinden” met een knowledge graph dat je de grafiek identificeert die je wilt bevragen. Gebruik''KnowledgeGraphByPortalItem()''om naar een grafiek via portal-item te verwijzen. Als de pop-up is gebouwd op een Knowledge Graph-laag en dezelfde grafiek bevraagt kun je deze stap overslaan en direct''$graph''in de query gebruiken.'
- 'Als de grafiek is opgeslagen in een andere ArcGIS Enterprise-portal kunnen gebruikers worden gevraagd zich aan te melden bij die portal wanneer de kaart of linkdiagram wordt geopend.'
- 'Zorg ervoor dat het gegevensmodel van de grafiek—entiteitstypen, relatie-types en eigenschappen—overeenkomt met de identificatoren, attributen of geometrie die door de pop-upexpressie worden gebruikt.'
'Voorbeeldcode: verwijs naar de knowledge graph'
'// Optie A: vraag doelgrafiek op via portal-item'
'var portalUrl = "https://[YOUR_ORG_PORTAL_URL]/portal";'
'var graphItemId = "[KNOWLEDGE_GRAPH_ITEM_ID]";'
'var kg = KnowledgeGraphByPortalItem(Portal(portalUrl), graphItemId);'
'// Optie B: vraag dezelfde grafiek op als laagselectie'
'var kg = $graph;'
'Stap 2 — Identificeer het object, entiteit of geometrie dat je wilt bevragen'
'Bepaal vervolgens wat de pop-up zal doorgeven aan de grafiekquery: een feature-attribuut, de geometrie van het geselecteerde object of de geselecteerde kennisgrafiektentiteit of relatie.'
'Voor feature-laagpop-ups betekent dit meestal:'
- 'Kies een gedeelde identifier zoals GUID, asset-ID, faciliteits-ID, perceel-ID of ander uniek attribuut.'
- 'Gebruik die waarde om overeenkomstige entiteit of verbonden context in de knowledge graph te vinden.'
'Querypatronen' | 'Beschrijving' | 'Voorbeeldgebruikgevallen' |
|---|
'Match via unieke ID' | Match a selected feature to a graph entity using a shared ID such as a GUID, asset ID, facility ID, or parcel ID. | · Fetch connected entities and properties · Aggregate statistics about groups of connected entities · Aggregate statistics about properties of those connected entities · Find employees matching open roles, proximity, and skill criteria. |
Match by Intersecting Shape | Gebruik de geometrie van het geselecteerde object als invoer voor een ruimtelijke grafiekquery die entiteiten retourneert die snijden, binnenin liggen of gerelateerd zijn aan die vorm. | · Vind downstream leveranciers van leveranciers binnen een geselecteerde veelhoek. · Agregeer statistieken van eigenschappen op verbonden entiteiten of relaties |
Voorbeeldcode: vang de geselecteerde invoer op
// Attribuut-gebaseerde invoer van een geselecteerd object
var selectedId = $feature.[SHARED_ID_FIELD];
var params = { id: selectedId };
// Grafieklaag-invoer van een geselecteerde entiteit
var selectedGuid = $feature.globalid;
Voor pop-ups van de grafieklaag is de geselecteerde entiteit al het startpunt, dus kan de expressie doorgaans direct de GUID van die entiteit gebruiken.
Grafiekqueries kunnen ook de geometrie van het geselecteerde object gebruiken om resultaten ruimtelijk te filteren, zoals in het hierboven beschreven voorbeeld van de toeleveringsketen.
// Geometrie-gebaseerde invoer van een geselecteerd object
var selectedGeom = Generalize($feature, 5000, true, 'meters');
var spatialParams = { feature_geom: selectedGeom };
querygraph (kg, "MATCH (s:Supplier) WHERE esri.graph.ST_Contains($feature_geom, s.shape) RETURN s.Name, s.globalid", {'feature_geom': $feature}
Deze stap verankert de query aan het object, de entiteit, relatie of geometrie die de gebruiker heeft geselecteerd.
Stap 3 — Schrijf de Grafiek Query Logica
Definieer het inzicht dat de pop-up moet teruggeven. Veelvoorkomende querybewerkingen zijn:
- Het ophalen van aangrenzende entiteiten, zoals leveranciers, activa, faciliteiten, personen of documenten.
- Het doorlopen van multi-hop relaties, zoals upstream leveranciers of downstream klanten.
- Filteren op status, tijdsperiode, categorie, relatie type of ruimtelijke relevantie.
- Samenvattingen berekenen zoals aantallen, totalen, ranglijsten, risicoscores of categorielijsten.
- Meerdere grafiekqueries combineren in één pop-up antwoord.
Het doel is om verbonden grafiekgegevens om te zetten in een beknopt antwoord dat de gebruiker in één oogopslag kan begrijpen.
Voorbeeldcode: voer relatie- en ruimtelijke grafiekqueries uit
var results = querygraph(
kg,
"MATCH (start:EntityType {globalid: $id})-[:RELATIONSHIP_TYPE]->(related:EntityType) RETURN related.Name, related.globalid LIMIT 10",
{ id: selectedGuid }
);
var spatialResults = querygraph(
kg,
"MATCH (e:EntityType) WHERE esri.graph.ST_Contains($feature_geom, e.shape) RETURN e.Name, e.globalid",
{ feature_geom: selectedGeom }
);
Stap 4 — Formatteer de Resultaten voor de Pop‑up
Nadat de query resultaten teruggeeft, formatteer ze voor de pop-up. De meeste expressies:
- Bouwen een woordenboek met benoemde secties of geformatteerde output.
- Formatteer resultaten als tekst, lijsten, kleine tabellen of links.
- Geef één gestructureerd object terug dat de ArcGIS pop-up engine kan weergeven.
Hier worden ruwe grafiekresultaten leesbare context voor het geselecteerde kaartobject, entiteit of link-diagram element.
Voorbeeldcode: formatteer grafiekresultaten voor weergave
var finalText = "";
for (var r in results) {
var name = results[r][0];
var guid = results[r][1];
finalText += "<b>" + name + "</b><br>";
}
if (IsEmpty(finalText)) {
finalText = "Geen gerelateerde grafiekresultaten gevonden.";
}
Stap 5 — Geef het Definitieve Woordenboek Terug
Geef tenslotte het woordenboek terug. ArcGIS leest het geretourneerde object en rendert de geformatteerde tekst, secties, tabellen, links of besturingselementen in de pop-up.
Voorbeeldcode: geef de pop-up inhoud terug
return {
type: 'text',
text: finalText
};
Formatteer ArcGIS Knowledge Graph Query Resultaten in Pop-ups
Arcade-expressies kunnen grafiekqueryresultaten op verschillende pop-up-vriendelijke manieren formatteren. Veelvoorkomende patronen zijn:
- Genereer secties met uitklapbare lijsten of tabellen van resulterende gerelateerde entiteiten die overeenkomen met je patroon
- Genereer tabellen van resulterende entiteiten en statistieken gemaakt met behulp van de query
- Genereer dynamische links naar entiteiten (vanaf 11.4) of opgeslagen queries (vanaf 12.0) in de Knowledge Studio webapp met behulp van 'URL Parameters'.
'Zie voorbeeld: ' 'Arcade_Graph_Pop-ups.mp4'
'Volledig Voorbeeld: End-to-end Arcade Script'
'In het eenvoudige voorbeeld (herhaald van hierboven) retourneert de grafiekquery binnen de Arcade-expressie de Leveranciers die zich bevinden binnen het veelhoekgebied van een geselecteerd weerobject. Het script gebruikt ook de Arcade geometriefunctie - ' 'generalize' ' - om de vorm van het geselecteerde veelhoekgebied te vereenvoudigen om de prestaties van de ruimtelijke openCypher-query te verbeteren.'
'//Het portal item ID van de Knowledge Graph service (pid) en server url portal url (Pas deze aan)'
'var pid = "d03d80ca35c94cadb963f845acbd0de1"'
'var portal_url = " https://[YOUR_ORG_PORTAL_URL].com/portal/"'
'var kg = KnowledgeGraphByPortalItem(Portal(portal_url), pid)'
' '
'// Om het veelhoekgebied te vereenvoudigen voor betere prestaties gebruiken we de Generalize functie'
'var gen = Generalize($feature, 5000, true, 'meters')'
' '
'var results = querygraph(kg, "MATCH (s:Supplier) WHERE esri.graph.ST_Contains($feature_geom, s.shape) RETURN s.Name, s.globalid", {'feature_geom': gen});'
' '
'var final_str = "";'
'var cnt = 0'
' '
'for (var r in results) {'
' var name = results[r][0]'
' var g_id = StandardizeGuid(results[r][1],'digits-hyphen')'
' var studio_url = '<a href = ' + server_url + '/apps/knowledge-studio/main?id=' + pid + '&selectedContentId=dataExplorer&selectedContentElement=%7B' + g_id + '%7D&selectedContentInstruction=entity>';'
' final_str = final_str + studio_url + " " + name + "</a><br>";'
' }'
'return {'
' type : 'text', '
'text : final_str'
' }'
'Dit is een voorbeeld van een query die je zou kunnen gebruiken in een ' 'Kaart' ' met een onafhankelijke ' 'Feature Service ' 'daar ter referentie naast een ruimtelijke Knowledge Graph-laag, of de grafiek kan helemaal niet aanwezig zijn in de kaart!'
'Ik ben van plan deze blog te volgen met enkele aanvullende volledige voorbeeldqueries, samen met AI-prompts om je te helpen LLM's te benutten om je eigen Arcade + Graph queries te bouwen. Je kunt ook dieper gaan door de ' 'Arcade Knowledge Graph functie documentatie' .