06 dggrid
DGGRIDPandas key features¶
You can try out vgridpandas by using the cloud-computing platforms below without having to install anything on your computer:
Full VgridPandas DGGS documentation is available at vgridpandas document.
To work with Vgrid in Python or CLI, use vgrid package. Full Vgrid DGGS documentation is available at vgrid document.
To work with Vgrid DGGS in QGIS, install the Vgrid Plugin.
To visualize DGGS in Maplibre GL JS, try the vgrid-maplibre library.
For an interactive demo, visit the Vgrid Homepage.
Install vgridpandas¶
Uncomment the following line to install vgridpandas.
In [ ]:
Copied!
# %pip install vgridpandas
# %pip install vgridpandas
DGGRID setup¶
In [2]:
Copied!
from dggrid4py import tool, DGGRIDv8
dggrid_exec = tool.get_portable_executable('.')
dggrid_instance = DGGRIDv8(
executable=dggrid_exec,
working_dir='.',
capture_logs=False,
silent=True,
has_gdal=False,
tmp_geo_out_legacy=True,
debug=False,
)
from dggrid4py import tool, DGGRIDv8
dggrid_exec = tool.get_portable_executable('.')
dggrid_instance = DGGRIDv8(
executable=dggrid_exec,
working_dir='.',
capture_logs=False,
silent=True,
has_gdal=False,
tmp_geo_out_legacy=True,
debug=False,
)
Import dggridpandas¶
In [3]:
Copied!
from vgridpandas import dggridpandas
dggs_type = "ISEA3H"
address_type = "SEQNUM"
from vgridpandas import dggridpandas
dggs_type = "ISEA3H"
address_type = "SEQNUM"
Latlon to DGGRID¶
Pandas¶
In [20]:
Copied!
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/opengeoshub/vopendata/main/csv/housing.csv')
resolution = 10
df = df.dggrid.latlon2dggrid(dggrid_instance, dggs_type, resolution, lat_col='lat', lon_col='lon', address_type=address_type)
df
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/opengeoshub/vopendata/main/csv/housing.csv')
resolution = 10
df = df.dggrid.latlon2dggrid(dggrid_instance, dggs_type, resolution, lat_col='lat', lon_col='lon', address_type=address_type)
df
Out[20]:
| lon | lat | housing_median_age | total_rooms | total_bedrooms | population | households | median_income | median_house_value | ocean_proximity | dggrid_isea3h | dggrid_isea3h_res | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | -122.23 | 37.88 | 41 | 880 | 129.0 | 322 | 126 | 8.3252 | 452600 | NEAR BAY | 38240 | 10 |
| 1 | -122.22 | 37.86 | 21 | 7099 | 1106.0 | 2401 | 1138 | 8.3014 | 358500 | NEAR BAY | 38240 | 10 |
| 2 | -122.24 | 37.85 | 52 | 1467 | 190.0 | 496 | 177 | 7.2574 | 352100 | NEAR BAY | 38240 | 10 |
| 3 | -122.25 | 37.85 | 52 | 1274 | 235.0 | 558 | 219 | 5.6431 | 341300 | NEAR BAY | 38240 | 10 |
| 4 | -122.25 | 37.85 | 52 | 1627 | 280.0 | 565 | 259 | 3.8462 | 342200 | NEAR BAY | 38240 | 10 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 20635 | -121.09 | 39.48 | 25 | 1665 | 374.0 | 845 | 330 | 1.5603 | 78100 | INLAND | 37515 | 10 |
| 20636 | -121.21 | 39.49 | 18 | 697 | 150.0 | 356 | 114 | 2.5568 | 77100 | INLAND | 37515 | 10 |
| 20637 | -121.22 | 39.43 | 17 | 2254 | 485.0 | 1007 | 433 | 1.7000 | 92300 | INLAND | 37515 | 10 |
| 20638 | -121.32 | 39.43 | 18 | 1860 | 409.0 | 741 | 349 | 1.8672 | 84700 | INLAND | 37515 | 10 |
| 20639 | -121.24 | 39.37 | 16 | 2785 | 616.0 | 1387 | 530 | 2.3886 | 89400 | INLAND | 37515 | 10 |
20640 rows × 12 columns
GeoPandas¶
In [21]:
Copied!
import geopandas as gpd
df = gpd.read_file('https://raw.githubusercontent.com/opengeoshub/vopendata/main/shape/housing.geojson')
resolution = 10
df = df.dggrid.latlon2dggrid(dggrid_instance, dggs_type, resolution, address_type=address_type)
df
import geopandas as gpd
df = gpd.read_file('https://raw.githubusercontent.com/opengeoshub/vopendata/main/shape/housing.geojson')
resolution = 10
df = df.dggrid.latlon2dggrid(dggrid_instance, dggs_type, resolution, address_type=address_type)
df
Out[21]:
| longitude | latitude | housing_median_age | total_rooms | total_bedrooms | population | households | median_income | median_house_value | ocean_proximity | geometry | dggrid_isea3h | dggrid_isea3h_res | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | -122.23 | 37.88 | 41.0 | 880.0 | 129.0 | 322.0 | 126.0 | 8.3252 | 452600.0 | NEAR BAY | POINT (-122.23 37.88) | 38240 | 10 |
| 1 | -122.22 | 37.86 | 21.0 | 7099.0 | 1106.0 | 2401.0 | 1138.0 | 8.3014 | 358500.0 | NEAR BAY | POINT (-122.22 37.86) | 38240 | 10 |
| 2 | -122.24 | 37.85 | 52.0 | 1467.0 | 190.0 | 496.0 | 177.0 | 7.2574 | 352100.0 | NEAR BAY | POINT (-122.24 37.85) | 38240 | 10 |
| 3 | -122.25 | 37.85 | 52.0 | 1274.0 | 235.0 | 558.0 | 219.0 | 5.6431 | 341300.0 | NEAR BAY | POINT (-122.25 37.85) | 38240 | 10 |
| 4 | -122.25 | 37.85 | 52.0 | 1627.0 | 280.0 | 565.0 | 259.0 | 3.8462 | 342200.0 | NEAR BAY | POINT (-122.25 37.85) | 38240 | 10 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 20635 | -121.09 | 39.48 | 25.0 | 1665.0 | 374.0 | 845.0 | 330.0 | 1.5603 | 78100.0 | INLAND | POINT (-121.09 39.48) | 37515 | 10 |
| 20636 | -121.21 | 39.49 | 18.0 | 697.0 | 150.0 | 356.0 | 114.0 | 2.5568 | 77100.0 | INLAND | POINT (-121.21 39.49) | 37515 | 10 |
| 20637 | -121.22 | 39.43 | 17.0 | 2254.0 | 485.0 | 1007.0 | 433.0 | 1.7000 | 92300.0 | INLAND | POINT (-121.22 39.43) | 37515 | 10 |
| 20638 | -121.32 | 39.43 | 18.0 | 1860.0 | 409.0 | 741.0 | 349.0 | 1.8672 | 84700.0 | INLAND | POINT (-121.32 39.43) | 37515 | 10 |
| 20639 | -121.24 | 39.37 | 16.0 | 2785.0 | 616.0 | 1387.0 | 530.0 | 2.3886 | 89400.0 | INLAND | POINT (-121.24 39.37) | 37515 | 10 |
20640 rows × 13 columns
DGGRID to geo¶
In [ ]:
Copied!
df = df.dggrid.dggrid2geo(dggrid_instance, dggs_type, resolution, dggrid_col=f"dggrid_{dggs_type.lower()}")
df.plot(edgecolor='white')
df = df.dggrid.dggrid2geo(dggrid_instance, dggs_type, resolution, dggrid_col=f"dggrid_{dggs_type.lower()}")
df.plot(edgecolor='white')
Out[ ]:
<Axes: >
DGGRID binning¶
Pandas¶
In [23]:
Copied!
import pandas as pd
resolution = 10
df = pd.read_csv('https://raw.githubusercontent.com/opengeoshub/vopendata/main/csv/housing.csv')
stats = 'max'
numeric_col = 'median_house_value'
df_bin = df.dggrid.dggridbin(dggrid_instance, dggs_type, resolution,
lat_col='lat', lon_col='lon',
stats=stats, numeric_col=numeric_col, address_type=address_type)
df_bin.plot(column=f'{numeric_col}_{stats}', cmap='Spectral_r', legend=True, linewidth=0.2)
import pandas as pd
resolution = 10
df = pd.read_csv('https://raw.githubusercontent.com/opengeoshub/vopendata/main/csv/housing.csv')
stats = 'max'
numeric_col = 'median_house_value'
df_bin = df.dggrid.dggridbin(dggrid_instance, dggs_type, resolution,
lat_col='lat', lon_col='lon',
stats=stats, numeric_col=numeric_col, address_type=address_type)
df_bin.plot(column=f'{numeric_col}_{stats}', cmap='Spectral_r', legend=True, linewidth=0.2)
Out[23]:
<Axes: >
GeoPandas¶
In [6]:
Copied!
import geopandas as gpd
resolution = 10
df = gpd.read_file('https://raw.githubusercontent.com/opengeoshub/vopendata/main/shape/housing.geojson')
stats = 'max'
numeric_col = 'median_house_value'
df_bin = df.dggrid.dggridbin(dggrid_instance, dggs_type, resolution,
stats=stats, numeric_col=numeric_col, address_type=address_type)
df_bin.plot(column=f'{numeric_col}_{stats}', cmap='Spectral_r', legend=True, linewidth=0.2)
import geopandas as gpd
resolution = 10
df = gpd.read_file('https://raw.githubusercontent.com/opengeoshub/vopendata/main/shape/housing.geojson')
stats = 'max'
numeric_col = 'median_house_value'
df_bin = df.dggrid.dggridbin(dggrid_instance, dggs_type, resolution,
stats=stats, numeric_col=numeric_col, address_type=address_type)
df_bin.plot(column=f'{numeric_col}_{stats}', cmap='Spectral_r', legend=True, linewidth=0.2)
Out[6]:
<Axes: >