Import tabulkových dat do geodatabáze pomocí knihoven pandas, numpy a arcpy

27. 3. 2020
  • Desktopový GIS
  • Serverový GIS
  • ArcGIS 10.5
  • ArcGIS 10.6
  • ArcGIS 10.7
  • ArcGIS 10.8
  • ArcGIS Pro 2.1
  • ArcGIS Pro 2.2
  • ArcGIS Pro 2.3
  • ArcGIS Pro 2.4
  • ArcGIS Pro 2.5

Pomocí funkce arcpy.da.NumPyArrayToTable lze do tabulky v geodatabázi snadno importovat data z python objektu numpy array. Do tohoto objektu, určeného pro práci s multidimenzionálními daty v pythonu, lze importovat mnoho tabulkových datových formátů, například z objektu data frame knihovny pandas. Knihovna pandas umožňuje, vedle mnoha funkcí pro zpracování tabulkových dat, také import celé řady tabulkových formátů, a díky tomu pak není problém pomocí tří řádků pythonu (řešících jednotlivé převody v řetězci  původní data – pandas data frame – numpy array – tabulka v geodatabázi) naimportovat rozličná data.

Vezměme si například CSV data na nějaké webové stránce.

import pandas as pd

import numpy as np

import arcpy

pandas_df = pd.read_csv("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv", index_col=None, header=0)

numpy_array=np.rec.fromrecords(pandas_df.values, names = (pandas_df.columns.values).tolist())

arcpy.da.NumPyArrayToTable(numpy_array,"Default.gdb/covid_confirmed_timeseries_columns")

 

K tomuto importu není problém přidat i řádek převádějící X/Y tabulková data do třídy prvků.

arcpy.XYTableToPoint_management('covid_confirmed_timeseries_columns',"Default.gdb/covid_confirmed_XY_FC", 'Long', 'Lat')


Výhodou tohoto postupu je nejen rychlejší import „bez klikání“ a automatizace načítání většího počtu tabulek, ale také mohou být zapojeny nástroje, které knihovny numpy a pandas pro práci s tabulkovými daty obsahují. Dají se tak například velmi efektivně provádět filtrace, slicing multidimenzionálních dat, agregace, spojování tabulek, překlápění řádků a sloupců nebo třeba tzv. melting.

V našem příkladu by se například přidáním jednoho řádku pomocí funkce pandas.melt tabulka snadno upravila z časových řad, kde jeden řádek odpovídá jedné lokalitě (a data za jednotlivé dny se nacházejí v mnoha sloupcích), do formy denních reportů, kde každá lokalita a každý den tvoří jeden řádek s jednou hodnotou.

Autor: Martin Král