„Budete muset napsat konektor“. Takto lidé dříve říkali, když vznikla potřeba vytvořit integraci mezi ArcGIS a jiným systémem. Dnes se však oblast informačních technologií vyvinula a způsob, jakým aplikace komunikují mezi sebou, se soustředí na několik vzorů, které používá každý (kdo chce zůstat relevantní). ArcGIS Data Interoperability se v této oblasti pohybuje a komunikuje.<\/P>
Jasným vítězem je REST<\/A>, a protože nejsem informatik, nebudu rozebírat, co si můžete přečíst sami, zajímá mě jen to, že prakticky vše na webu může odesílat a přijímat data způsobem, který mohu snadno použít (většinou JSON, s několika výjimkami stále používajícími XML a pár případů natahujících použitelnost s protokolovými buffer payloady, ale budu je sledovat za vás, myslím, že to přejde 😉<\/span>.) s ArcGIS Data Interoperability.<\/P>Musím přidat grafiku dřív, než mě vyhledávače přestanou brát v potaz a nezaindexují mě. Zde je workspace (StubOutAPIJSONReading.fmw<\/STRONG> v příloze ke stažení), který jsem použil k počátečnímu průzkumu API (detaily budou následovat):<\/P>Průzkum API<\/span><\/span><\/P>Moje ukázkové API je publikováno od dobrých lidí z Clarity Movement.<\/A><\/P>Clarity byla založena v roce 2014, aby řešila globální krizi znečištění ovzduší a nyní poskytuje nákladově efektivní, systémově škálovatelné a spolehlivé monitorování kvality ovzduší zákazníkům ve více než 60 zemích po celém světě. Řešení Clarity umožňuje vládám a komunitám sbírat data o kvalitě ovzduší s vyšším rozlišením tím, že doplňuje stávající regulační monitory hustými sítěmi kontinuálně kalibrovaných senzorů kvality ovzduší.<\/P>Líbí se mi koncový bod Measurements<\/A> od Clarity jako dobrý příklad nejběžnějšího vzoru, na který narazíte, totiž zpracování JSON<\/STRONG> dat vrácených z HTTP<\/STRONG> volání. Než začnete panikařit kvůli věcem jako transportní protokoly a parsování JSON, uklidněte se! Data Interoperability to všechno zvládne za vás, což je dobře, protože jinak byste museli číst věci jako toto:<\/P> <\/P> <\/P> <\/P> <\/P>{ "_id": "6137a995cd42fd51fcda7083", "device": "609935dcc9348052e0c5d917", "deviceCode": "AY989QV6", "time": "2021-09-07T17:00:00.000Z", "location": { "coordinates": [ -120.90439519586954, 36.01958888490562 ], "type": "Point" }, "recId": "averaged:AY989QV6:hour:2021-09-07T18:00:00", "characteristics": { "relHumid": { "value": 30.428397178649904, "weight": 4, "raw": 30.428397178649904 }, "temperature": { "value": 30.882064819335939, "weight": 4, "raw": 30.882064819335939 }, "pm2_5ConcNum": { "value": 24.072547912597658, "weight": 4, "raw": 24.072547912597658 }, "pm2_5ConcMass": { "value": 13.646130166709775, "weight": 4, "raw": 21.126213550567628, "calibratedValue": 13.646130166709775, "epaNowCast": 15.097605519225573 }, "pm1ConcNum": { "value": 22.670581817626954, "weight": 4, "raw": 22.670581817626954 }, "pm1ConcMass": { "value": 12.186892986297608, "weight": 4, "raw": 12.186892986297608 }, "pm10ConcNum": { "value": 24.33531427383423, "weight": 4, "raw": 24.33531427383423 }, "pm10ConcMass": { "value": 28.42475652694702, "weight": 4, "raw": 28.42475652694702 }, "no2Conc": { "value": -6.413380280137062, "weight": 4, "raw": -6.413380280137062 }, "pm2_5ConcMass_24HourRollingMean": { "value": 15.003665288163619, "weight": 88, "raw": 27.317325342785229, "calibratedValue": 15.003665288163619 }, "pm2_5ConcNum_24HourRollingMean": { "value": 26.923120065168903, "weight": 88, "raw": 26.923120065168903 }, "pm10ConcMass_24HourRollingMean": { "value": 37.67677915096283, "weight": 88, "raw": 37.67677915096283 }, "pm10ConcNum_24HourRollingMean": { "value": 27.273549459197306, "weight": 88, "raw": 27.273549459197306 } }, "average": "hour"}<\/code><\/pre> <\/P> <\/P> <\/P> <\/P>Úkolem je převést tato data do hostované feature služby a automatizovat údržbu služby.<\/STRONG><\/P>Výhodou znalosti GIS je pravděpodobně znalost Pythonu a JSON payloady jako výše vypadají přesně jako Python slovníky a seznamy. Stačí se naučit pár triků a můžete zvládnout prakticky jakékoli REST API.<\/P>Trik č.1: Použití HTTPCaller.<\/STRONG><\/P>HTTPCaller<\/span><\/span><\/P> <\/P> HTTPCaller<\/A> vám umožní jednoduše vyplnit formulář pro webové volání a přijmout odpověď (v tomto případě JSON). Nejprve musíte přečíst svou dokumentaci API<\/A>, určit požadované parametry i volitelné, které chcete použít, a zda použít metodu GET<\/STRONG> nebo POST<\/STRONG>. GET je obvykle pro kratší URL, POST podporuje delší URL a také nahrávání dat v těle požadavku. Dalším aspektem je autentizace. Mnoho API vyžaduje API klíč (jako zde) nebo token. Obvykle klíče nevyprší platnost, zatímco tokeny ano, navíc tokeny vyžadují krok generování (který může být proveden samostatně přes HTTP nebo přes OAuth2 ve webovém připojení<\/A><\/STRONG>, které nastavíte pro svůj účet). Můj příklad vyžaduje klíč. Mé volání žádá o JSON pole deseti měření kvality ovzduší a vrací ho v atributu pojmenovaném _response_body<\/STRONG>.<\/P>Trik č.2: Rozbalení JSON<\/STRONG><\/P>Mířím k načtení libovolného počtu měření kvality ovzduší, ale nejprve musím zjistit, jak extrahovat data z JSON. Požádal jsem o deset měření kvality ovzduší, takže vrácený JSON bude polem. Každé měření v poli bude mít stejnou strukturu používanou poli mých prvků - výše uvedený JSON je prvek měření. Musím zjistit extrakci hodnot polí. Nejjednodušší způsob je napsat JSON jednoho prvku pole do souboru a použít schopnost JSONExtractor<\/A>, která mi umožní vytvářet dotazy bez psaní kódu JSON dotazů.<\/P>Pokud dočasně nastavím JSONExtractor na čtení ze souboru JSON, dostanu užitečný výběr pro tvorbu mých JSON dotazů. Pak mohu JSONExtractor zkopírovat do produkčního nástroje, nastavit ho na čtení z příchozího atributu JSON prvku a extrahovat i zpřístupnit všechny dostupné hodnoty polí. Jak jednoduché to je!<\/P>Zde je můj JSONExtractor při čtení ze souboru a tvorbě dotazů:<\/P>RefreshClarityService<\/span><\/span><\/P> Tento konečný nástroj lze naplánovat nebo spustit na vyžádání.<\/P>To je vše! Překonal jsem složitosti webové integrace a mám feature service, kterou mohu použít k napájení svých map, aplikací a dashboardů.<\/P>Feature Service<\/span><\/span><\/P>Blogový download obsahuje ETL nástroje, které jsem použil, bez funkčního API klíče, prosím kontaktujte Clarity, pokud chcete testovat a implementovat integraci.<\/P> <\/P>
Clarity byla založena v roce 2014, aby řešila globální krizi znečištění ovzduší a nyní poskytuje nákladově efektivní, systémově škálovatelné a spolehlivé monitorování kvality ovzduší zákazníkům ve více než 60 zemích po celém světě. Řešení Clarity umožňuje vládám a komunitám sbírat data o kvalitě ovzduší s vyšším rozlišením tím, že doplňuje stávající regulační monitory hustými sítěmi kontinuálně kalibrovaných senzorů kvality ovzduší.<\/P>
Líbí se mi koncový bod
{ "_id": "6137a995cd42fd51fcda7083", "device": "609935dcc9348052e0c5d917", "deviceCode": "AY989QV6", "time": "2021-09-07T17:00:00.000Z", "location": { "coordinates": [ -120.90439519586954, 36.01958888490562 ], "type": "Point" }, "recId": "averaged:AY989QV6:hour:2021-09-07T18:00:00", "characteristics": { "relHumid": { "value": 30.428397178649904, "weight": 4, "raw": 30.428397178649904 }, "temperature": { "value": 30.882064819335939, "weight": 4, "raw": 30.882064819335939 }, "pm2_5ConcNum": { "value": 24.072547912597658, "weight": 4, "raw": 24.072547912597658 }, "pm2_5ConcMass": { "value": 13.646130166709775, "weight": 4, "raw": 21.126213550567628, "calibratedValue": 13.646130166709775, "epaNowCast": 15.097605519225573 }, "pm1ConcNum": { "value": 22.670581817626954, "weight": 4, "raw": 22.670581817626954 }, "pm1ConcMass": { "value": 12.186892986297608, "weight": 4, "raw": 12.186892986297608 }, "pm10ConcNum": { "value": 24.33531427383423, "weight": 4, "raw": 24.33531427383423 }, "pm10ConcMass": { "value": 28.42475652694702, "weight": 4, "raw": 28.42475652694702 }, "no2Conc": { "value": -6.413380280137062, "weight": 4, "raw": -6.413380280137062 }, "pm2_5ConcMass_24HourRollingMean": { "value": 15.003665288163619, "weight": 88, "raw": 27.317325342785229, "calibratedValue": 15.003665288163619 }, "pm2_5ConcNum_24HourRollingMean": { "value": 26.923120065168903, "weight": 88, "raw": 26.923120065168903 }, "pm10ConcMass_24HourRollingMean": { "value": 37.67677915096283, "weight": 88, "raw": 37.67677915096283 }, "pm10ConcNum_24HourRollingMean": { "value": 27.273549459197306, "weight": 88, "raw": 27.273549459197306 } }, "average": "hour"}<\/code><\/pre> <\/P> <\/P> <\/P> <\/P>Úkolem je převést tato data do hostované feature služby a automatizovat údržbu služby.<\/STRONG><\/P>Výhodou znalosti GIS je pravděpodobně znalost Pythonu a JSON payloady jako výše vypadají přesně jako Python slovníky a seznamy. Stačí se naučit pár triků a můžete zvládnout prakticky jakékoli REST API.<\/P>Trik č.1: Použití HTTPCaller.<\/STRONG><\/P>HTTPCaller<\/span><\/span><\/P> <\/P>
Pokud dočasně nastavím JSONExtractor na čtení ze souboru JSON, dostanu užitečný výběr pro tvorbu mých JSON dotazů. Pak mohu JSONExtractor zkopírovat do produkčního nástroje, nastavit ho na čtení z příchozího atributu JSON prvku a extrahovat i zpřístupnit všechny dostupné hodnoty polí. Jak jednoduché to je!<\/P>
Zde je můj JSONExtractor při čtení ze souboru a tvorbě dotazů:<\/P>
RefreshClarityService<\/span><\/span><\/P> Tento konečný nástroj lze naplánovat nebo spustit na vyžádání.<\/P>To je vše! Překonal jsem složitosti webové integrace a mám feature service, kterou mohu použít k napájení svých map, aplikací a dashboardů.<\/P>Feature Service<\/span><\/span><\/P>Blogový download obsahuje ETL nástroje, které jsem použil, bez funkčního API klíče, prosím kontaktujte Clarity, pokud chcete testovat a implementovat integraci.<\/P> <\/P>
Přihlášení členové mohou přispívat, sledovat aktualizace a další. Nový zde? Zaregistrujte si bezplatný účet.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.