在xarray中使用形状文件、地形图和多边形的工具
xshape的Python项目详细描述
x形状
在xarray中使用形状文件、地形图和多边形的工具
- 自由软件:麻省理工学院许可证
- 文档:https://xshape.readthedocs.io。
功能
- 读取shapefile并获取字段记录的xarray数据数组
- 在网格数据上绘制形状文件边界
- 将由shapefile记录索引的xarray dataarray数据绘制为choropleth
使用量
获取shapefile中字段的记录
In[1]:importxshapeIn[2]:fields,polygons=xshape.parse_shapefile(...:'tests/data/shapefiles/CA_counties/CA_counties',...:encoding='latin1')In[3]:fieldsOut[3]:<xarray.Dataset>Dimensions:(shape:58)Coordinates:*shape(shape)int640123456789101112131415161718...Datavariables:STATEFP(shape)<U22'06''06''06''06''06''06''06''06''06''06'...COUNTYFP(shape)<U22'107''009''047''079''097''041''023''051'...COUNTYNS(shape)<U22'00277318''01675885''00277288''00277304'...GEOID(shape)<U22'06107''06009''06047''06079''06097''06041'...NAME(shape)<U22'Tulare''Calaveras''Merced''San Luis Obispo'...NAMELSAD(shape)<U22'Tulare County''Calaveras County'...LSAD(shape)<U22'06''06''06''06''06''06''06''06''06''06'...CLASSFP(shape)<U22'H1''H1''H1''H1''H1''H1''H1''H1''H1''H1'...MTFCC(shape)<U22'G4020''G4020''G4020''G4020''G4020''G4020'...CSAFP(shape)<U22'''''''''488''488''''''''''488''472'...CBSAFP(shape)<U22'47300''''32900''42020''42220''41860'...METDIVFP(shape)<U22'''''''''''41884''''''''''36084'''''...FUNCSTAT(shape)<U22'A''A''A''A''A''A''A''A''A''A''A''A'...ALAND(shape)<U22'12494707314''2641820029''5011554680'...AWATER(shape)<U22'37391604''43810423''112760479''820974619'...INTPTLAT(shape)<U22'+36.2288317''+38.1846184''+37.1948063'...INTPTLON(shape)<U22'-118.7810618''-120.5593996''-120.7228019'...
在网格数据上绘制形状边界
In[4]:importxarrayasxr,numpyasnp,xshape# generate sample dataIn[5]:da=xr.DataArray(...:np.cos((...:np.arange(41*45).reshape((41,45))*np.arange(41*45).reshape((45,41)...:).T)/4e5),...:dims=('lat','lon'),...:coords={...:'lon':np.linspace(-125,-114,45),...:'lat':np.linspace(32,42,41)})...:In[6]:da.xshape.overlay(...:'tests/data/shapefiles/CA_counties/CA_counties',...:encoding='latin1',...:cmap='YlGnBu');...:
在choropleth中绘制区域数据
使用xarray扩展,我们可以直接绘制DataArray数据:
In[7]:importxshape,xarrayasxr,pandasaspdIn[8]:df=pd.read_csv('tests/data/datasets/co-est2016.csv',encoding='latin1')...:ca=df[(df['STATE']==6)&(df['COUNTY']>0)].copy()...:ca['fips']=df['STATE']*1000+df['COUNTY']...:da=ca.set_index(['fips'])['POPESTIMATE2016'].to_xarray()...:da.coords['GEOID']=('fips',),list(map('{:05}'.format,da.fips.values))...:da=da.swap_dims({'fips':'GEOID'})In[9]:da.xshape.plot(...:'tests/data/shapefiles/CA_counties/CA_counties',...:encoding='latin1',...:cmap='YlGnBu');...:
我们还可以将字段中的信息与数据数组中包含的数据结合起来:
In[10]:land_area=(....:fields....:.set_coords('GEOID')....:.swap_dims({'shape':'GEOID'})....:.ALAND.astype(float))In[11]:np.log(da/land_area).xshape.plot(....:'tests/data/shapefiles/CA_counties/CA_counties',....:encoding='latin1',....:cmap='YlGnBu');....:
待办事项
- 使用shapefile重塑网格/像素数据的形状
历史记录
0.1.0(2018-01-13)
- pypi上的第一个版本。