<\/HEAD>
Agentury po celém světě zveřejňují svá data na webu pomocí velkého množství technologií, a i když existují standardy, které je zpřístupňují v rámci ArcGIS, nic nefunguje v ArcGIS tak dobře jako naše vlastní služby. Někdy prostě dává smysl pravidelně synchronizovat data ze svého systému záznamů do ArcGIS Online nebo Portal. Tento blog je o tom, jak to dělat efektivně.<\/P>
<\/P>
Abyste zjistili, zda byste měli číst dál, stáhněte si přílohu blogu NZ_Street_Address.lyrx<\/STRONG> a přidejte ji do nové mapy v Pro, poté pomocí panelu Locate a ArcGIS World Geocoding Service přibližte na Wellington, NZL (nebo vaši oblíbenou jinou lokalitu na Novém Zélandu). Přibližte se na měřítko 1:5000 nebo větší, posuňte se kolem, zapněte třídy popisků Standard Number, Suffix Number a Range Number a prohlédněte si čísla domů u adresních bodů. Identifikujte prvky. Vyberte prvky. Přistupujete k vrstvě prvků ve standardním úložišti dat funkcí ArcGIS Online. Zde jsou odkazy na položku<\/A> a službu<\/A>. Pokud máte rozumné internetové připojení, budete mít dobrý zážitek z prozkoumávání mapy. Vrstva, na kterou se díváte, má přes 2 miliony prvků. Data si můžete stáhnout. Můžete je použít v geoprocessingu. Data jsou aktualizována týdně a proces synchronizace průměrně tisíců aktualizací každý týden trvá méně než 2 minuty. Tento přístup nevyžaduje žádné kódování. Pokud chcete toto dělat pro data dostupná vám, pokračujte ve čtení (kliknutím na obrázky je zvětšíte).<\/P><\/P>
<\/P>
<\/P>
Nejprve, jaké zdroje dat jsou kandidáty pro tuto metodu? Cokoli přístupné rozšíření ArcGIS Data Interoperability<\/STRONG>, což jsou
všechny tyto formáty a zdroje dat<\/A> v mnoha úložištích. Můj konkrétní příklad používá data dostupná přes službu WFS<\/STRONG>, ale to není kritické pro diskusi, přístup je obecný.<\/P><\/P>Pojďme se podívat trochu hlouběji. Pro bližší pohled na vrstvu s ArcGIS Online jako vaším aktivním portálem přidejte data ze všech portálů s vyhledávacími tagy 'LDS' a 'ETL'.<\/P><\/P>
<\/P><\/P>Uvidíte stejné bodové prvky (s výchozí symbolikou), ale také ve vaší tabulce obsahu je samostatná tabulka 'Timestamps' s jedním řádkem:<\/P><\/P><\/P>
<\/P><\/P>Hodnota v UpdatedUTC se při každé synchronizaci obnovuje, takže se bude lišit od grafiky, ale je klíčem k synchronizaci. Nachází se uvnitř služby prvků jako vrstva. UTC čas synchronizace je posledním krokem procesu, který také zapisuje aktualizace prvků.<\/P><\/P>Tak jaké jsou všechny<\EM> <\STRONG>kroky? K jejich sledování budete potřebovat nainstalované a povolené rozšíření ArcGIS Pro 2.3+ s Data Interoperability<\STRONG>, a stáhnout toolbox a zdrojové soubory ETL nástrojů .fmw v blogovém downloadu Synchronize.zip. Přidejte toolbox do svého projektu, uvidíte v něm tyto ETL nástroje:<\P><\P><\P style="text-align: center;">
<\p>
Klikněte pravým tlačítkem na každý ETL nástroj a opravte cestu ke zdrojovému .fmw souboru.<\p><\p style="text-align: left;"><\p style="text-align: left;">Můj cílový dataset je dostupný jako hromadný download, který jsem vzal jako file geodatabase. Zkopíroval jsem třídu prvků adresních bodů do své projektové domácí geodatabáze. Každopádně dostaňte svá cílová data do své projektové domácí geodatabáze, případně pomocí ETL procesů.<\p style="text-align: left;"><\p style="text-align: left;">Dále jsem vytvořil tabulku Timestamp pomocí MakeTimestampTable<\STRONG>, která vypadá takto:<\p>Poznámka níže - není dobrý nápad používat název tabulky 'Timestamps', ale zatím to necháme být<\p>
Opravte cestu k cílové file geodatabase tak, aby byla stejná jako u vašich zajímavých prvků. Pokud spustíte MakeTimestampTable v režimu úprav, můžete si vybrat vlastní počáteční hodnotu časového razítka pomocí užitečného výběru data. Použil jsem UTC čas, ale nemusel jsem ho mít přesný. Pokud ano a žijete v Greenwich UK, podívejte se na hodinky a ignorujte aktuální letní časovou úpravu, jinak použijte trochu Pythonu po vytvoření tabulky s libovolnou hodnotou:<\p style="text-align: left;"><\p>

<\p>Pak vypočítejte UpdatedUTC tak, aby bylo rovno DownloadedUTC a budete to mít:<\p><\p>

<\p>
Právě při psaní tohoto blogu zjistíte, že je opravdu špatný nápad používat název tabulky 'Timestamps', protože je příliš blízko rezervovanému slovu v mnoha databázových technologiích včetně file geodatabáze. Ale protože to zde neovlivňuje můj cíl, nechám to tak. Pokud však půjdete do produkce, použijte jiný název!<\p style="text-align: left;"><\p style="text-align: left;">Nyní spusťte feature service. Přidejte svá cílová data a tabulku timestamp do mapy a poté vyberte oba objekty v obsahu tabulky:<\p style="text-align: left;"><\p>

<\p style="text-align: left;">Potom klikněte pravým tlačítkem a vyberte Share as Web Layer<\STRONG>:<\p style="text-align: left;"><\p style="text-align: left;">
</ p >< p >< IMG __jive_id = "441362 " class = "image-11 j-img-centered jive-image " src = "https:\/ \/us.v-cdn.net \/6038851 \/uploads \/legacyfs \/online \/441362_pastedImage_2.png " style = "display : block ; margin-left : auto ; margin-right : auto ; " \/ > < / p > < p > < / p > < p > Nakonfigurujte službu tak, aby byla vrstvou prvků ve složce podle vašeho výběru a nechte ji načíst.< \ p > < p > < / p > < p > V rámci < STRONG > Synchronize.tbx < \ STRONG > je ETL nástroj < STRONG > LoadData < \ STRONG > , který také vytváří feature service pokud chcete jít touto cestou.< \ p > < p > < / p > < p >< IMG __jive_id = "441363 " class = "image-12 jive-image " src = "https:\/ \/us.v-cdn.net \/6038851 \/uploads \/legacyfs \/online \/441363_pastedImage_1.png " \ / >< / p > < p > < / p > < p > Nyní k synchronizačním věcem v ETL nástroji < STRONG > Synchronize < \ STRONG > :< \ p > < p > < / p > < p >< IMG __jive_id = "441364 " class = "image-13 jive-image " src = "https:\/ \/us.v-cdn.net \/6038851 \/uploads \/legacyfs \/online \/441364_pastedImage_2.png " \ / >< / p > < p > < / p > < p > Návrh vaší verze bude záviset na vašich cílových datech, ale obecně:< \ p > < p > < / p > < UL >< LI > Aktuální UTC čas na začátku zpracování je zachycený< \ LI >< LI > Vrstva timestamps (tabulka) je načtena z Esri webové vrstvy< \ LI >< LI > Vaše cílová data jsou načtena ze svého systému záznamů< \ LI >< LI > Vkládání (Inserts), aktualizace (Updates) a mazání (Deletes) jsou odvozeny mezi zdrojem cíle a Esri webovou vrstvou< \ LI >< LI > Vkládání (Inserts), aktualizace (Updates) a mazání (Deletes) jsou ověřeny porovnáním unikátního identifikátoru s Esri vrstvou< \ LI >< LI > Mazání (Deletes) jsou potvrzena< \ LI >< LI > Aktualizace (Updates) jsou zapsány< \ LI >< LI > Vkládání (Inserts) jsou zapsány< \ LI >< LI > Vrstva timestamps (tabulka) je aktualizována UTC časem zachyceným při začátku zpracování< \ LI >< / UL >< P >< / P >< P > Pro moje cílová data poskytovatel správy nabízí API changeset, které mi umožnilo sestavit časy od/do do volání WFS, což dalo přesné sady vložení (insert), aktualizace (update) a mazání (delete). Pokud vaše data mají časová razítka pro vytvoření (created), úpravy (edited) a ukončení platnosti (retired), můžete to udělat sami. Pokud nemáte žádné vodítko, můžete změnové sady odvodit načtením všech dat z obou zdrojů a provedením hrubé detekce změn pomocí transformátoru UpdateDetector<\STRONG>, i když to samozřejmě může trvat nějaký čas.< \ P >< P >< / P >< P > V ETL nástroji Synchronize jsou některé méně zřejmé funkce. Pořadí zápisu prvků určuje pořadí zapisovače v Navigátoru shora dolů. Zápis aktualizace timestampu je proto nucen být poslední, takže pokud něco selže, nebude falešně aktualizováno. Zapisovače funkcí ArcGIS Online a Portal v režimu Delete a Update vyžadují hodnotu ObjectID v Esri službě, která má být odeslána s prvkem, takže hodnoty jsou zachyceny během přenosu pomocí FeatureReader a spojeny na jedinečný identifikátor vrstvy. Podobně stream Inserts hledá existující jedinečné identifikátory před zápisem, pouze prvky známé jako neexistující<\/EM> projdou.<\/P><\/P>V úvodním odstavci jsem uvedl, že přístup nepoužívá žádné kódování. Existuje matematická funkce<\/EM> (floor) použitá k výpočtu čísla dávky v modulo 20 blocích pro získání cílových ObjectID služby. To je tak blízko psaní kódu, jak je potřeba, i když můžete použít Python, pokud chcete.<\/P><\/P>Ačkoli zmiňuji kódování, v produkčním prostředí byste chtěli spustit synchronizaci jako naplánovanou úlohu. Ta začíná jako Python skript. Zde uvádím jednoduchý příklad, který předpokládá, že věci jako ETL webové připojení jsou dostupné vlastníkovi procesu, což se snadno provede sdílením souboru připojení ve známém adresáři. <\/P><\/P>
<\/P><\/P>Další přístup, o kterém budu psát samostatně na blogu, je volání FME engine spustitelného souboru přímo v naplánované úloze.<\/P><\/P>Prozkoumejte nástroje ETL, které jsou dodávány, a posílejte otázky do tohoto fóra.<\/P><\/P>Doufám, že vám to dodá důvěru k vytváření vlastních synchronizací. Užijte si to!<\/P><\/BODY><\/HTML>