Dit artikel is een update van een vorige blog van mijn collega @BruceHarold die enige tijd geleden is gepubliceerd. Hoewel de workflow en gegevensbronnen hetzelfde zijn, verwijdert deze oplossing alle eerder toegevoegde code, dankzij de kracht van de Workbench-transformer genaamd HTTPCaller en de ArcGIS REST API.
Met een paar aanpassingen aan de oorspronkelijke oplossing bouwen we een web-naar-web integratieoplossing met ArcGIS Online.
Ik zal ook enkele verbeteringen van Data Interoperability benadrukken sinds deze vorige blog vijf jaar geleden werd geschreven. Bij deze blog hoort een nieuwere versie van het werkende voorbeeld dat je kunt downloaden via de onderstaande link.
Kunt u het verschil zien?
We hebben de bestemming vervangen van file geodatabase naar ArcGIS Online. Met de functie Compare Workspace kun je de visuele veranderingen op het canvas zien om je te helpen een bestaande workspace aan te passen. De Read Only workspace aan de rechterkant is de originele en de nieuwe Editable is de nieuwe workspace. In het Editable Navigator-venster zijn cyaan gekleurde objecten nieuwe objecten, geel zijn gewijzigd.
De magenta gekleurde Observations feature class bestemming in de originele workspace is nu veranderd in een blauw gekleurde AGOL feature layer in de nieuwe.
We hebben twee transformers toegevoegd en alle Python-scripts verwijderd die deel uitmaakten van het oorspronkelijke voorbeeld.
Een FeatureMerger is toegevoegd ter vervanging van de Match table output en dit Match Table feature type is vervangen door de HTTPCaller.
De python-code die de attachments toevoegde, is nu vervangen door een configuratie van de HTTPCaller die het AddAttachment rest endpoint van de ArcGIS Server feature service aanroept.
Compare Workspaces
Begin met een Web Connection
Je hoeft dit maar één keer te doen in je Tools ---> FME Options-menu. Voor referentie over hoe je een webverbinding bouwt, zie dit artikel. Dit artikel laat zien hoe je een webverbinding maakt voor ArcGIS Enterprise, maar de stappen zijn hetzelfde voor ArcGIS Online. Zodra je de webverbinding hebt, duiken we in de details.
Laat de code vallen en leer hoe je HTTPCaller configureert om attachments toe te voegen
Ja, gooi die python-scripts weg. Om het voorbeeld opnieuw te gebruiken met je eigen AGOL-instantie, moet je begrijpen hoe je HTTPCaller configureert door die parameters te wijzigen die gemarkeerd zijn met rode pijlen, hieronder weergegeven.
HTTPCaller configuration for AddAttachment end point De beste plek om te leren hoe je dit configureert is door de AddAttachment API-hulppagina te lezen. Ja, lees de Beschrijving of zoals ze zeggen "lees het kleine lettertje". Wees bewust van limieten, grootte, formaten en andere relevante informatie. Alleen omdat het codevrij is, betekent niet dat het plug-and-play is.
Hier is de request URL: https://<root>/<serviceName>/FeatureServer/<layerId>/<featureId>/addAttachment
Hieronder staat wat geconfigureerd is op de Request URL voor dit gedownloade voorbeeld:
https://services7.arcgis.com/eeZcUziwi5hzGEGs/ArcGIS/rest/services/r2r/FeatureServer/0/@Value(ID)/AddAttachment
De <featureid>-parameter @Value(id) is dynamisch maar de rest is hardcoded. De vraag is, waar haal je de <root>-URL vandaan?
De truc is om naar de AGOL feature item pagina te gaan, klik op de Observations feature layer onder Layers om de Observations feature layer item pagina te openen en scroll omlaag totdat je het URL-gedeelte aan de rechterkant onder Details ziet.
Right pane of the AGOL feature layer itemKlik op de View-knop om het pop-upvenster van het feature service rest endpoint te openen.
Click View to Open the feature Server feature service pop up
Wanneer de ArcGIS REST Services Directory-pagina opent, scroll dan naar boven en klik linksboven op Observations layer met rechts en kies Linkadres kopiëren als je Chrome als browser gebruikt.
Copying the root URL plus token from the feature service page
Dit geeft je de <root> URL plus het token om te vervangen wat geconfigureerd staat in de sample HTTPCaller. Aangezien je een webverbinding gaat maken, verwijder het token in deze gekopieerde URL. Plak deze URL in de Request URL van de transformer.
Om de configuratie van HTTPCaller te voltooien, is er een verborgen parameter in het Multipart Upload-gedeelte van HTTPCaller, hieronder weergegeven. Dit staat niet in het kleine lettertje van de API, maar wordt kort genoemd op de HTTPCaller-hulppagina.
Multipart form required parameter values
In de attachment-rij, waar Upload Type File Upload is, moet je de mime-type van het attachment configureren die zichtbaar wordt wanneer je klikt op het 3-puntjes menu vanuit de Value-cel van die rij. Deze verborgen parameter staat standaard ingesteld op application/octet-stream en als dit niet overeenkomt met het bestand zal AddAttachment mislukken.
Dynamic mime-type attribute
Let op dat ik voor de MIME-Type-parameter een dynamische attribuutwaarde heb geconfigureerd die daadwerkelijk in datastroom wordt aangemaakt. Dit is handig wanneer je meerdere soorten attachments hebt (bijv. pdf, jpg, png en anderen) om te laden. Dus waar wordt dit attribuut aangemaakt? Zoek ernaar in AttributeManager vóór HTTPCaller. Ik gebruikte path_extension, hernoemde dit naar mime-type en gaf er een conditionele waarde aan gebaseerd op extensie.
role="button" title="RenatoSalvaleon3_2-1734664614038.png" alt="Het maken van het mime-type attribuut om specifieke ondersteunde formaten te uploaden" \/>Het maken van het mime-type attribuut om specifieke ondersteunde formaten te uploaden<\/span><\/span><\/P>Zorg ervoor dat je weet welke extensies je uploadt en hun mime-types. Voor een lijst met ondersteunde bestandstypen in AGOL, bekijk deze link<\/A>.<\/P>Moet ik mijn Upgradeable Transformers upgraden?<\/STRONG><\/P>Een andere nieuwe functie die beschikbaar is, is de Upgrade All Transformers functie. De vorige versie van deze functie was om één transformer tegelijk te upgraden. Let op in het Navigator-paneel hieronder dat er 21 transformers zijn die bijgewerkt moeten worden. Met één klik op de knop en het doorlopen van enkele prompts wordt je werkruimte geüpgraded. Je kunt er ook voor kiezen om een back-up van je werkruimte te maken of niet.<\/P>
Upgrade the transformers on your canvass<\/span><\/span><\/P>Om deze nieuwe oplossing succesvol uit te voeren is het niet noodzakelijk om deze transformers te upgraden, maar het is altijd een goede gewoonte om dit te doen. Het laatste voorbeeld hieronder zal al deze transformers upgraden naar de nieuwste en beste versie.<\/P>De werkruimte uitvoeren<\/STRONG><\/P>De oplossing is bewust ontworpen om twee bladwijzers afzonderlijk uit te voeren. Voordat je een bladwijzer uitvoert, zorg ervoor dat je cache inschakelt.<\/P>Bladwijzer Eén maakt de Observations feature service aan en schrijft de features. Je voert een bladwijzer uit door erop te klikken en bovenaan de bladwijzer te zweven totdat kleine pictogrammen verschijnen. Klik op de knop Run Just Contained (afspelen).<\/P>
Bladwijzer Eén - Schrijf Observation features<\/span><\/span><\/P> <\/P>Voordat we Bladwijzer Twee uitvoeren, moeten we teruggaan naar de nieuw aangemaakte feature layer in AGOL en klikken op de Enable Attachment schuifregelaar om deze op True te zetten. Dit moet omdat de Enable attachment parameter van de Observations feature layer op True moet staan voordat we Bladwijzer Twee uitvoeren. Aangezien het gereedschap de feature service aanmaakt in Bladwijzer Eén, wordt Enable attachment standaard op False gezet. <\/P>
Enable attachments<\/span><\/span><\/P> Met attachments ingeschakeld kunnen we Bladwijzer Twee uitvoeren om attachments toe te voegen die gerelateerd zijn aan de Observations feature layer.<\/SPAN><\/P> <\/P>
Bladwijzer Twee - Upload attachments<\/span><\/span><\/P> <\/P>Let op, dat de volgende keer dat je de oplossing uitvoert en de Feature Type Handling<\/STRONG> is ingesteld op Truncate Existing,<\/EM> Enable Attachment nog steeds True zal zijn.<\/P>
Feature Type Handling ingesteld op Truncate Existing voor toekomstige uitvoeringen<\/span><\/span><\/P> <\/P>In de originele oplossing wordt Enable Attachment uitgevoerd met het Python shutdown script. Je kunt deze oplossing aanpassen om Enable Attachment te automatiseren door het toevoegen van het UpdateDefinition rest endpoint, maar ik wil deze oplossing eenvoudig en doelbewust houden. <\/P>Ik laat de verbetering aan jou over. Als planning en een enkele uitvoering in je workflow passen, heb je waarschijnlijk die verbetering nodig. <\/P>Tip: Als je volledige automatisering wilt doen, zal onderstaande afbeelding een nuttige start zijn.<\/P>
Enable Attachment toevoegen aan je oplossing<\/span><\/span>
Visualiseer je werk<\/STRONG>
Mijn favoriete app om de resultaten te bekijken is de Instant App template Attachment Viewer. Alsof het magie is verschijnen al mijn attachments op een interactieve kaart en fotoviewer.
De resultaten van de oplossing getoond met behulp van de Instant App Attachment Viewer template
Eindwoord
Voordat je begint met het doorzoeken van je netwerkshares en harde schijven naar foto's, houd er rekening mee dat attachments opslagkosten hebben in AGOL en ik zou nalatig zijn als ik je niet informeer over deze kosten. Hier is de gids voor
het begrijpen van AGOL credits.
Hoewel er gevestigde patronen zijn voor automatisering en integratie van data met attachments, moet elke oplossing verschillende factoren overwegen. Ik heb enkele van deze factoren gedetailleerd in dit artikel. Voor geodatabases blijft de originele oplossing met het Python Shutdown script nog steeds de beste aanpak. De AGOL-oplossing is eenvoudiger en werkt goed voor het visualiseren van data met attachments. Dus kies je smaak en kies verstandig.
Dat is alles, je kunt beginnen met het doorzoeken van je schijven en het laden van je attachments naar AGOL.