Skip to main content

STARE pandas extensions

Project description

STAREPandas

STAREpandas adds SpatioTemporal Adaptive Resolution Encoding (STARE) support to pandas DataFrames.

Example 1

Introduction

STAREPandas is the STARE pendant to GeoPandas. It makes working with geospatial data in python easier. It provides file and database I/O functionality and allows to easily perform STARE based spatial operations that would otherwise require a (STARE-extended) spatial database or a geographic information system.

In STAREDataFrames, geometries are represented as sets of STARE triangles or ”trixels”; analogously to GeoPandas geodataframes which represent geometries as WKT. In STARE dataframes, points are represented as STARE trixels at the HTM tree’s leaf level. Polygons are represented as sets of STARE trixels that cover the polygon.

STAREPandas also extends the geopandas file I/O functionality to load some (raster) formats of remote sensing granules and tiles (MOD09, MOD09GA, VNP03) through pyhdf and netcdf4.

Installation

pyhdf

STAREPandas depends on pyhdf to read hdf4-eos granules, requiring libhdf4-dev, to build.

Tested on python 3.7.6

On Ubuntu 20.04:

apt install libhdf4-dev 

On Centos7:

yum install hdf-devel.x86_64

Alternatively, pyhdf can also be found on conda

conda install -c conda-forge pyhdf

pystare

STAREPandas is built on top of pystare.

pip3 install pystare

STAREPandas

It is recommendable to install pip packages in a Virtual Environment

mkvirtualevironment starepandas

Make sure pip is up-to-date.

Then install STAREPandas from github.

pip3 install starepandas

Note

Some of the examples require Rtree-linux to be installed to run geopandas spatial joins. As of 2020-08-20, I could not make this work on Centos7 with rtree>0.9 (9.4) as it requires GLIBCXX_3.4.21. I therefor downgrade rtree to rtree-0.8.3 on Centos7

pip3 install "rtree>=0.8,<0.9

This is likely related to rtree issue 120

Tests

cd starepandas/
pytests

Documentation

starepandas uses sphinx

The dependencies are in docs/source/requirements.txt

pip3 install -r docs/source/requirements.txt

Build the docs with e.g.

cd docs/
make html 

Features and usage

The examples/ folder contains notebooks that highlight the usage.

STAREPandas helps integrating STARE in the geospatial data workflow. Building on top of fiona and geopandas, STAREPandas allows to read almost any vector-based spatial data format and convert lat/lon and well-known-text (WKT) representation to STARE indices and covers.

path = geopandas.datasets.get_path('naturalearth_lowres')
world = geopandas.read_file(path)
africa = world[world.continent == 'Africa']
stare = starepandas.sids_from_gdf(africa, resolution=7, force_ccw=True)
africa = starepandas.STAREDataFrame(africa, stare=stare)

STAREPandas extends the geopandas rich plotting abilities and provides a simple method to generate visualizations of trixels:

trixels = africa.make_trixels()
africa.set_trixels(trixels, inplace=True)
africa.plot(ax=ax, trixels=True, boundary=True, column='name', linewidth=0.2)

Example 1

STAREPandas extends the file I/O capability with the ability to read common remote-sensing granule data from HDF and netCDF files. STARE indices for the granules can either be generated on demand or read from a companion / sidedcar file.

path= 'data/MYD05_L2.A2020060.1635.061.2020061153519.hdf'
modis = starepandas.read_mod09(path, add_stare=True, adapt_resolution=True)

Example 2

STAREPandas allows to carry out STARE-based spatial relation tests and spatial joins.

cities = ['Buenos Aires', 'Brasilia', 'Santiago',
          'Bogota', 'Caracas', 'Sao Paulo', 'Bridgetown']
latitudes = [-34.58, -15.78, -33.45, 4.60, 10.48, -23.55, 13.1]
longitudes = [-58.66, -47.91, -70.66, -74.08, -66.86, -46.63, -59.62]
data = {'City': cities,
        'Latitude': latitudes, 'Longitude': longitudes}
cities = starepandas.STAREDataFrame(data)
stare = starepandas.sids_from_xy(cities.Longitude, cities.Latitude, resolution=27)
cities.set_sids(stare, inplace=True)

countries = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
countries = countries.sort_values(by='name')
samerica = countries[countries.continent == 'South America']
stare = starepandas.sids_from_gdf(samerica, resolution=10, force_ccw=True)
samerica = starepandas.STAREDataFrame(samerica, stare=stare)

starepandas.stare_join(samerica, cities, how='left').head()

Example 3

STAREPandas further allows for STARE-bases intersections:

fname = 'zip://data/amapoly_ivb.zip'
amazon = geopandas.read_file(fname)  # Nice flex
amazon = amazon.to_crs('EPSG:4326')

stare = starepandas.sids_from_gdf(amazon, resolution=10, force_ccw=True)
amazon = starepandas.STAREDataFrame(amazon, stare=stare)

stare_amazon = samerica.stare_intersection(amazon.make_sids.iloc[0])

Example 3

Acknowledgments

2018-2021 STARE development supported by NASA/ACCESS-17 grant 80NSSC18M0118.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

starepandas-0.5.5.tar.gz (53.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

starepandas-0.5.5-py3-none-any.whl (44.1 kB view details)

Uploaded Python 3

File details

Details for the file starepandas-0.5.5.tar.gz.

File metadata

  • Download URL: starepandas-0.5.5.tar.gz
  • Upload date:
  • Size: 53.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for starepandas-0.5.5.tar.gz
Algorithm Hash digest
SHA256 6b1477b750995bed093cec75871172a8a5310aa29a410255a8871430c1f76e2f
MD5 39dcc0a4446708867be33f7daac6d6ef
BLAKE2b-256 e67228d5173012b571b648a4ce8ed8f1df8387993a5e6e64feede465130289ec

See more details on using hashes here.

File details

Details for the file starepandas-0.5.5-py3-none-any.whl.

File metadata

  • Download URL: starepandas-0.5.5-py3-none-any.whl
  • Upload date:
  • Size: 44.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for starepandas-0.5.5-py3-none-any.whl
Algorithm Hash digest
SHA256 0f1faa9c9c2cb84b4a453fb94aeba9ee05aa5ae58a991810cd3bc3c733bf1368
MD5 d09cf71c8fbb5e046a04eca04c1d48ec
BLAKE2b-256 6d2ca62fafe6a71a0c726558964939e811ecea8647ab4712af3dadefd80b101a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page