Die Aufgabe besteht darin, diese Daten in einen gehosteten Feature-Service umzuwandeln und die Wartung des Services zu automatisieren.<\/STRONG><\/P>Ein Vorteil eines GIS-Hintergrunds ist wahrscheinlich Ihre Kenntnis von Python, und JSON-Payloads wie oben sehen genau wie Python-Dictionaries und -Listen aus. Sie müssen nur ein paar Tricks lernen, bevor Sie praktisch jede REST API bewältigen können.<\/P>Trick #1: Verwendung von HTTPCaller.<\/STRONG><\/P>
HTTPCaller<\/span><\/span><\/P> <\/P> HTTPCaller<\/A> ermöglicht es Ihnen einfach, ein Formular auszufüllen, um einen Webaufruf zu tätigen und eine Antwort (in diesem Fall JSON) zu erhalten. Zuerst müssen Sie Ihre API-Dokumentation<\/A> lesen und die erforderlichen Parameter sowie alle optionalen bestimmen, die Sie möchten, und ob Sie eine GET<\/STRONG>- oder POST<\/STRONG>-Methode verwenden wollen. GET wird normalerweise für kürzere URLs verwendet, POST unterstützt längere URLs und auch Uploads im Body. Ein weiterer Aspekt ist die Authentifizierung. Viele APIs erfordern einen API-Schlüssel (wie hier zu sehen) oder ein Token. Typischerweise laufen Schlüssel nicht ab und Tokens schon, außerdem erfordern Tokens einen Generierungsschritt (der separat über HTTP oder via OAuth2 in einer Webverbindung<\/A><\/_STRONG> eingerichtet wird). Mein Beispiel benötigt einen Schlüssel. Mein Aufruf fordert ein JSON-Array von 10 Luftqualitätsmessungen an und gibt es in einem Attribut namens _response_body<\/_STRONG> zurück.<\/_P><\/_p>Trick #2: JSON entpacken<\/_strong>
Ich bin dabei, beliebig viele Luftqualitätsmessungen einzulesen, aber zuerst muss ich herausfinden, wie man Daten aus dem JSON extrahiert. Ich habe 10 Luftqualitätsmessungen angefordert, daher wird das zurückgegebene JSON ein Array sein. Jede Messung im Array hat dasselbe Schema wie die Felder meiner Features – das obige JSON ist ein Messungsfeature. Ich muss herausfinden, wie man Feldwerte extrahiert. Der einfachste Weg ist es, das JSON eines Array-Features in eine Datei zu schreiben und die datenbewusste Fähigkeit des JSONExtractor zu verwenden , damit ich Abfragen ohne Programmierung von JSON-Abfragen erstellen kann .
Wenn ich den JSONExtractor vorübergehend so einstelle , dass er aus einer JSON-Datei liest , bekomme ich einen praktischen Auswahlassistenten , um meine JSON-Abfragen zu erstellen .& nbsp ; Dann kann ich den JSONExtractor in ein Produktionstool kopieren , ihn so einstellen , dass er aus dem eingehenden Feature - JSON - Attribut liest , das er extrahiert , und alle verfügbaren Feldwerte anzeigen .& nbsp ; Wie einfach ist das !
Hier ist mein JSONExtractor , während ich aus einer Datei lese und meine Abfragen erstelle :
JSONExtractor
& nbsp ;
Jetzt geht es bergab zum Erstellen und Pflegen meines Feature-Service .
Clarity2GDB.fmw verwendet die oben durchgeführte JSON-Erkundung , um eine Feature-Class in der Home-Geodatabase meines Pro-Projekts zu schreiben – es werden einige Attribute umbenannt , und natürlich erhalten sie beim Schreiben ihre gewünschten Typen .
Clarity2GDB
Dann kann ich nach der Erstellung meines Feature-Service aus der Geodatabase-Feature-Class die Arbeit wiederverwenden , um den Feature-Service mit RefreshClarityService.fmw zu warten , der sich nur im Writer-Schritt unterscheidet . Sie werden feststellen , dass nur geänderte Features in den Zielservice geschrieben werden , der Workspace hat einen Parameter , der das Verlaufsintervall für meine Features festlegt , Features im Service älter als das werden aussortiert.<\/P>
RefreshClarityService<\/span><\/span><\/P> Dieses letzte Tool kann geplant oder auf Abruf ausgeführt werden.<\/P>Das war's! Ich habe die Komplexitäten der Webintegration gemeistert und habe einen Feature Service, den ich zur Unterstützung meiner Karten, Apps und Dashboards verwenden kann.<\/P>
Feature Service<\/span><\/span><\/P>Der Blog-Download enthält die ETL-Tools, die ich verwendet habe, abzüglich eines funktionalen API-Schlüssels. Bitte kontaktieren Sie Clarity, wenn Sie eine Integration testen und implementieren möchten.<\/P> <\/P>