Tools for working with shapefiles, topographies, and polygons in xarray
Project description
xshape
Tools for working with shapefiles, topographies, and polygons in xarray
Free software: MIT license
Documentation: https://xshape.readthedocs.io.
Features
Read a shapefile and obtain an xarray DataArray of field records
Draw shapefile boundaries on gridded data
Plot xarray DataArray data indexed by shapefile records as a choropleth
Usage
Getting records for fields in a shapefile
In [1]: import xshape
In [2]: fields, polygons = xshape.parse_shapefile(
...: 'tests/data/shapefiles/CA_counties/CA_counties',
...: encoding='latin1')
In [3]: fields
Out[3]:
<xarray.Dataset>
Dimensions: (shape: 58)
Coordinates:
* shape (shape) int64 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...
Data variables:
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' ...
Drawing shape boundaries on gridded data
In [4]: import xarray as xr, numpy as np, xshape
# generate sample data
In [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');
...:
Plotting regional data in a choropleth
Using the xarray extension, we can plot DataArray data directly:
In [7]: import xshape, xarray as xr, pandas as pd
In [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');
...:
We can also combine the information from the fields with the data contained in the DataArray:
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');
....:
TODO
Use shapefiles to reshape gridded/pixel data
History
0.1.0 (2018-01-13)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file xshape-0.1.1.tar.gz
.
File metadata
- Download URL: xshape-0.1.1.tar.gz
- Upload date:
- Size: 3.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7eb34e55fe8aeb31ece1dd6a679b2bdb4ebe1dd0427e3138220373ea5f56c18 |
|
MD5 | 022dfafeb1937c01440a36e1b10cba46 |
|
BLAKE2b-256 | 32bc5508489663182c16ebbc7ddec6f20e478345a67f8e017fd73938058d77ed |
File details
Details for the file xshape-0.1.1-py2.py3-none-any.whl
.
File metadata
- Download URL: xshape-0.1.1-py2.py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0139de2b25e1b74dfab9867776e355b02a24155c511ca53554703b1787192cf2 |
|
MD5 | 917a63a71f038d82ed8aad1183b39f27 |
|
BLAKE2b-256 | 97d800e17177ba152d832c7a043a498bd6e12a1555b7b843271c98d888fd5770 |