Metadata-Version: 2.1
Name: geoprepare
Version: 0.4.9
Summary: A Python package to prepare (download, extract, process input data) for GEOCIF and related models
Home-page: https://github.com/ritviksahajpal/geoprepare
Author: Ritvik Sahajpal
Author-email: ritvik@umd.edu
License: MIT license
Keywords: geoprepare
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: access@ file:///home/conda/feedstock_root/build_artifacts/access_1696558639912/work
Requires-Dist: affine@ file:///home/conda/feedstock_root/build_artifacts/affine_1674245120525/work
Requires-Dist: aiobotocore@ file:///home/conda/feedstock_root/build_artifacts/aiobotocore_1701642898829/work
Requires-Dist: aiofiles@ file:///home/conda/feedstock_root/build_artifacts/aiofiles_1664378549280/work
Requires-Dist: aiohttp@ file:///D:/bld/aiohttp_1701099665235/work
Requires-Dist: aioitertools@ file:///home/conda/feedstock_root/build_artifacts/aioitertools_1663521246073/work
Requires-Dist: aiosignal@ file:///home/conda/feedstock_root/build_artifacts/aiosignal_1667935791922/work
Requires-Dist: aiosqlite@ file:///home/conda/feedstock_root/build_artifacts/aiosqlite_1682491975081/work
Requires-Dist: alembic@ file:///home/conda/feedstock_root/build_artifacts/alembic_1703129447237/work
Requires-Dist: amply@ file:///home/conda/feedstock_root/build_artifacts/amply_1687675480808/work
Requires-Dist: anyio@ file:///home/conda/feedstock_root/build_artifacts/anyio_1700835416766/work
Requires-Dist: argon2-cffi@ file:///home/conda/feedstock_root/build_artifacts/argon2-cffi_1692818318753/work
Requires-Dist: argon2-cffi-bindings@ file:///D:/bld/argon2-cffi-bindings_1695386836194/work
Requires-Dist: arrow@ file:///home/conda/feedstock_root/build_artifacts/arrow_1696128962909/work
Requires-Dist: asciitree==0.3.3
Requires-Dist: asttokens@ file:///home/conda/feedstock_root/build_artifacts/asttokens_1698341106958/work
Requires-Dist: attrs@ file:///home/conda/feedstock_root/build_artifacts/attrs_1683424013410/work
Requires-Dist: Babel@ file:///home/conda/feedstock_root/build_artifacts/babel_1702422572539/work
Requires-Dist: beautifulsoup4@ file:///home/conda/feedstock_root/build_artifacts/beautifulsoup4_1680888073205/work
Requires-Dist: biotrade==0.3.9
Requires-Dist: bleach@ file:///home/conda/feedstock_root/build_artifacts/bleach_1696630167146/work
Requires-Dist: blinker@ file:///home/conda/feedstock_root/build_artifacts/blinker_1698890160476/work
Requires-Dist: bokeh@ file:///home/conda/feedstock_root/build_artifacts/bokeh_1701473835852/work
Requires-Dist: boltons@ file:///home/conda/feedstock_root/build_artifacts/boltons_1677499911949/work
Requires-Dist: Boruta==0.3
Requires-Dist: boto3@ file:///home/conda/feedstock_root/build_artifacts/boto3_1700215672985/work
Requires-Dist: botocore@ file:///home/conda/feedstock_root/build_artifacts/botocore_1701094668533/work
Requires-Dist: Bottleneck@ file:///D:/bld/bottleneck_1696018091386/work
Requires-Dist: bounded-pool-executor@ file:///home/conda/feedstock_root/build_artifacts/bounded-pool-executor_1635175150479/work
Requires-Dist: bqplot@ file:///home/conda/feedstock_root/build_artifacts/bqplot_1699264281570/work
Requires-Dist: branca@ file:///home/conda/feedstock_root/build_artifacts/branca_1699295994965/work
Requires-Dist: bravado@ file:///home/conda/feedstock_root/build_artifacts/bravado_1614723672758/work
Requires-Dist: bravado-core@ file:///home/conda/feedstock_root/build_artifacts/bravado-core_1662640043835/work
Requires-Dist: Brotli@ file:///D:/bld/brotli-split_1695989908365/work
Requires-Dist: cached-property@ file:///home/conda/feedstock_root/build_artifacts/cached_property_1615209429212/work
Requires-Dist: cachetools@ file:///home/conda/feedstock_root/build_artifacts/cachetools_1698197297464/work
Requires-Dist: Cartopy@ file:///D:/bld/cartopy_1698172838544/work
Requires-Dist: catboost@ https://pypi.org/packages/cp311/c/catboost/catboost-1.2.2-cp311-cp311-win_amd64.whl#sha256=0b8b5cdc2f1e1452018867a55902dc440d8a67a0869d5258f59b290d917cd73a
Requires-Dist: cdsapi==0.6.1
Requires-Dist: certifi@ file:///home/conda/feedstock_root/build_artifacts/certifi_1700303426725/work/certifi
Requires-Dist: cf-xarray@ file:///home/conda/feedstock_root/build_artifacts/cf_xarray_1698962733183/work
Requires-Dist: cffi@ file:///D:/bld/cffi_1696001770413/work
Requires-Dist: cftime@ file:///D:/bld/cftime_1698610080469/work
Requires-Dist: chardet@ file:///D:/bld/chardet_1695468731333/work
Requires-Dist: charset-normalizer@ file:///home/conda/feedstock_root/build_artifacts/charset-normalizer_1698833585322/work
Requires-Dist: click@ file:///D:/bld/click_1692312014553/work
Requires-Dist: click-plugins==1.1.1
Requires-Dist: cligj@ file:///home/conda/feedstock_root/build_artifacts/cligj_1633637764473/work
Requires-Dist: cloudpickle@ file:///home/conda/feedstock_root/build_artifacts/cloudpickle_1697464713350/work
Requires-Dist: cmarkgfm@ file:///D:/bld/cmarkgfm_1695670070285/work
Requires-Dist: colorama@ file:///home/conda/feedstock_root/build_artifacts/colorama_1666700638685/work
Requires-Dist: colorcet@ file:///home/conda/feedstock_root/build_artifacts/colorcet_1664843244467/work
Requires-Dist: colorlog==6.8.0
Requires-Dist: colour@ file:///home/conda/feedstock_root/build_artifacts/colour_1700634653969/work
Requires-Dist: comm@ file:///home/conda/feedstock_root/build_artifacts/comm_1691044910542/work
Requires-Dist: comtradeapicall==1.0.20
Requires-Dist: configobj@ file:///home/conda/feedstock_root/build_artifacts/configobj_1674244895923/work
Requires-Dist: contourpy@ file:///D:/bld/contourpy_1699041552441/work
Requires-Dist: crepes@ file:///home/conda/feedstock_root/build_artifacts/crepes_1692604857173/work
Requires-Dist: cryptography@ file:///D:/bld/cryptography-split_1701563398088/work
Requires-Dist: cubist==0.1.1
Requires-Dist: cycler@ file:///home/conda/feedstock_root/build_artifacts/cycler_1696677705766/work
Requires-Dist: cytoolz@ file:///D:/bld/cytoolz_1695545272480/work
Requires-Dist: dask@ file:///home/conda/feedstock_root/build_artifacts/dask-core_1701473682386/work
Requires-Dist: datashader@ file:///home/conda/feedstock_root/build_artifacts/datashader_1698408369230/work
Requires-Dist: dateparser@ file:///home/conda/feedstock_root/build_artifacts/dateparser_1700222000722/work
Requires-Dist: debugpy@ file:///D:/bld/debugpy_1695534451132/work
Requires-Dist: decorator@ file:///home/conda/feedstock_root/build_artifacts/decorator_1641555617451/work
Requires-Dist: defusedxml@ file:///home/conda/feedstock_root/build_artifacts/defusedxml_1615232257335/work
Requires-Dist: deprecation@ file:///home/conda/feedstock_root/build_artifacts/deprecation_1589881437857/work
Requires-Dist: descartes==1.1.0
Requires-Dist: distributed@ file:///home/conda/feedstock_root/build_artifacts/distributed_1701476493791/work
Requires-Dist: docutils@ file:///D:/bld/docutils_1701882761515/work
Requires-Dist: earthaccess@ file:///home/conda/feedstock_root/build_artifacts/earthaccess_1701916546472/work
Requires-Dist: earthengine-api@ file:///home/conda/feedstock_root/build_artifacts/earthengine-api_1701989298978/work
Requires-Dist: ee-extra@ file:///home/conda/feedstock_root/build_artifacts/ee_extra_1674469223555/work
Requires-Dist: eerepr@ file:///home/conda/feedstock_root/build_artifacts/eerepr_1669883637068/work
Requires-Dist: entrypoints@ file:///home/conda/feedstock_root/build_artifacts/entrypoints_1643888246732/work
Requires-Dist: esda@ file:///home/conda/feedstock_root/build_artifacts/esda_1698184031293/work
Requires-Dist: et-xmlfile@ file:///home/conda/feedstock_root/build_artifacts/et_xmlfile_1674664118162/work
Requires-Dist: exceptiongroup@ file:///home/conda/feedstock_root/build_artifacts/exceptiongroup_1700579780973/work
Requires-Dist: executing@ file:///home/conda/feedstock_root/build_artifacts/executing_1698579936712/work
Requires-Dist: faodata==1.1
Requires-Dist: fasteners@ file:///home/conda/feedstock_root/build_artifacts/fasteners_1643971550063/work
Requires-Dist: fastjsonschema@ file:///home/conda/feedstock_root/build_artifacts/python-fastjsonschema_1700055509243/work/dist
Requires-Dist: ffmpeg-python==0.2.0
Requires-Dist: filelock@ file:///home/conda/feedstock_root/build_artifacts/filelock_1698714947081/work
Requires-Dist: fiona==1.9.5
Requires-Dist: folium@ file:///home/conda/feedstock_root/build_artifacts/folium_1701689892753/work
Requires-Dist: fonttools@ file:///D:/bld/fonttools_1701530771157/work
Requires-Dist: fqdn@ file:///home/conda/feedstock_root/build_artifacts/fqdn_1638810296540/work/dist
Requires-Dist: frozenlist@ file:///D:/bld/frozenlist_1695377784467/work
Requires-Dist: fsspec@ file:///home/conda/feedstock_root/build_artifacts/fsspec_1702335961905/work
Requires-Dist: future@ file:///home/conda/feedstock_root/build_artifacts/future_1673596611778/work
Requires-Dist: GDAL==3.8.1
Requires-Dist: gdown@ file:///home/conda/feedstock_root/build_artifacts/gdown_1679726698720/work
Requires-Dist: gee-zonal==0.1.0
Requires-Dist: geeadd@ file:///home/conda/feedstock_root/build_artifacts/geeadd_1662343341358/work
Requires-Dist: geedim@ file:///home/conda/feedstock_root/build_artifacts/geedim_1686430566511/work
Requires-Dist: geemap@ file:///home/conda/feedstock_root/build_artifacts/geemap_1701056268788/work
Requires-Dist: geocif==0.0.1
Requires-Dist: geocoder==1.38.1
Requires-Dist: geographiclib@ file:///home/conda/feedstock_root/build_artifacts/geographiclib_1624386157733/work
Requires-Dist: geojson@ file:///home/conda/feedstock_root/build_artifacts/geojson_1699269511365/work
Requires-Dist: geopandas@ file:///home/conda/feedstock_root/build_artifacts/geopandas_1699712060886/work
Requires-Dist: geoprepare@ file:///D:/Users/ritvik/projects/geoprepare
Requires-Dist: geopy@ file:///home/conda/feedstock_root/build_artifacts/geopy_1700784427509/work
Requires-Dist: geoviews@ file:///home/conda/feedstock_root/build_artifacts/geoviews-core_1698915229361/work
Requires-Dist: giddy@ file:///home/conda/feedstock_root/build_artifacts/giddy_1696344753517/work
Requires-Dist: gitdb@ file:///home/conda/feedstock_root/build_artifacts/gitdb_1697791558612/work
Requires-Dist: GitPython@ file:///home/conda/feedstock_root/build_artifacts/gitpython_1697650329377/work
Requires-Dist: google-api-core@ file:///home/conda/feedstock_root/build_artifacts/google-api-core-split_1702000562495/work
Requires-Dist: google-api-python-client@ file:///home/conda/feedstock_root/build_artifacts/google-api-python-client_1702435726629/work
Requires-Dist: google-auth@ file:///home/conda/feedstock_root/build_artifacts/google-auth_1702091584611/work
Requires-Dist: google-auth-httplib2@ file:///home/conda/feedstock_root/build_artifacts/google-auth-httplib2_1702435542843/work
Requires-Dist: google-cloud-core@ file:///home/conda/feedstock_root/build_artifacts/google-cloud-core_1702002980770/work
Requires-Dist: google-cloud-storage@ file:///home/conda/feedstock_root/build_artifacts/google-cloud-storage_1702437105048/work
Requires-Dist: google-crc32c@ file:///D:/bld/google-crc32c_1695545413787/work
Requires-Dist: google-resumable-media@ file:///home/conda/feedstock_root/build_artifacts/google-resumable-media_1702437055406/work
Requires-Dist: googleapis-common-protos@ file:///home/conda/feedstock_root/build_artifacts/googleapis-common-protos-feedstock_1702001866871/work
Requires-Dist: graphviz@ file:///home/conda/feedstock_root/build_artifacts/python-graphviz_1658658635601/work
Requires-Dist: greenlet@ file:///D:/bld/greenlet_1703201769830/work
Requires-Dist: grpcio@ file:///D:/bld/grpc-split_1700258165617/work
Requires-Dist: h5netcdf@ file:///home/conda/feedstock_root/build_artifacts/h5netcdf_1699412745362/work
Requires-Dist: h5py@ file:///D:/bld/h5py_1702472547754/work
Requires-Dist: holoviews@ file:///home/conda/feedstock_root/build_artifacts/holoviews_1699478109506/work
Requires-Dist: httplib2@ file:///home/conda/feedstock_root/build_artifacts/httplib2_1679483503307/work
Requires-Dist: hvplot@ file:///home/conda/feedstock_root/build_artifacts/hvplot_1697480800293/work
Requires-Dist: icclim@ file:///home/conda/feedstock_root/build_artifacts/icclim_1684217678320/work
Requires-Dist: idna@ file:///home/conda/feedstock_root/build_artifacts/idna_1701026962277/work
Requires-Dist: imagecodecs-lite@ file:///D:/bld/imagecodecs-lite_1695649335859/work
Requires-Dist: imageio@ file:///C:/b/abs_3eijmwdodc/croot/imageio_1695996500830/work
Requires-Dist: importlib-metadata@ file:///home/conda/feedstock_root/build_artifacts/importlib-metadata_1701632192416/work
Requires-Dist: importlib-resources@ file:///home/conda/feedstock_root/build_artifacts/importlib_resources_1699364556997/work
Requires-Dist: inequality@ file:///home/conda/feedstock_root/build_artifacts/inequality_1698541584495/work
Requires-Dist: ipyevents@ file:///home/conda/feedstock_root/build_artifacts/ipyevents_1692625602943/work
Requires-Dist: ipyfilechooser@ file:///home/conda/feedstock_root/build_artifacts/ipyfilechooser_1631745918830/work
Requires-Dist: ipykernel@ file:///D:/bld/ipykernel_1698244157926/work
Requires-Dist: ipyleaflet@ file:///home/conda/feedstock_root/build_artifacts/ipyleaflet_1701089207275/work
Requires-Dist: ipython@ file:///D:/bld/ipython_1701831845989/work
Requires-Dist: ipython-genutils==0.2.0
Requires-Dist: ipytree@ file:///home/conda/feedstock_root/build_artifacts/ipytree_1661272736017/work
Requires-Dist: ipywidgets@ file:///home/conda/feedstock_root/build_artifacts/ipywidgets_1694607144474/work
Requires-Dist: isoduration@ file:///home/conda/feedstock_root/build_artifacts/isoduration_1638811571363/work/dist
Requires-Dist: jaraco.classes@ file:///home/conda/feedstock_root/build_artifacts/jaraco.classes_1689112411129/work
Requires-Dist: jedi@ file:///home/conda/feedstock_root/build_artifacts/jedi_1696326070614/work
Requires-Dist: Jinja2@ file:///home/conda/feedstock_root/build_artifacts/jinja2_1654302431367/work
Requires-Dist: jmespath@ file:///home/conda/feedstock_root/build_artifacts/jmespath_1655568249366/work
Requires-Dist: joblib@ file:///home/conda/feedstock_root/build_artifacts/joblib_1691577114857/work
Requires-Dist: json5@ file:///home/conda/feedstock_root/build_artifacts/json5_1688248289187/work
Requires-Dist: jsonpickle@ file:///home/conda/feedstock_root/build_artifacts/jsonpickle_1697667537447/work
Requires-Dist: jsonpointer@ file:///D:/bld/jsonpointer_1695397361610/work
Requires-Dist: jsonref@ file:///home/conda/feedstock_root/build_artifacts/jsonref_1699510629306/work
Requires-Dist: jsonschema@ file:///home/conda/feedstock_root/build_artifacts/jsonschema-meta_1700159890288/work
Requires-Dist: jsonschema-specifications@ file:///home/conda/feedstock_root/build_artifacts/jsonschema-specifications_1701365715051/work
Requires-Dist: jupyter-events@ file:///home/conda/feedstock_root/build_artifacts/jupyter_events_1699285872613/work
Requires-Dist: jupyter-ydoc@ file:///home/conda/feedstock_root/build_artifacts/jupyter_ydoc_1685535850115/work/dist
Requires-Dist: jupyter_client@ file:///home/conda/feedstock_root/build_artifacts/jupyter_client_1673615989977/work
Requires-Dist: jupyter_core@ file:///D:/bld/jupyter_core_1698673822668/work
Requires-Dist: jupyter_server@ file:///home/conda/feedstock_root/build_artifacts/jupyter_server_1701910789300/work
Requires-Dist: jupyter_server_fileid@ file:///home/conda/feedstock_root/build_artifacts/jupyter_server_fileid_1681071667289/work
Requires-Dist: jupyter_server_terminals@ file:///home/conda/feedstock_root/build_artifacts/jupyter_server_terminals_1702308739765/work
Requires-Dist: jupyter_server_ydoc@ file:///home/conda/feedstock_root/build_artifacts/jupyter_server_ydoc_1678043727957/work
Requires-Dist: jupyterlab@ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_1695732182725/work
Requires-Dist: jupyterlab-widgets@ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_widgets_1694598704522/work
Requires-Dist: jupyterlab_pygments@ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_pygments_1700744013163/work
Requires-Dist: jupyterlab_server@ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_server-split_1700310846957/work
Requires-Dist: keyring@ file:///D:/bld/keyring_1699923938198/work
Requires-Dist: kiwisolver@ file:///D:/bld/kiwisolver_1695380078296/work
Requires-Dist: lazy_loader@ file:///C:/b/abs_3bn4_r4g42/croot/lazy_loader_1695850158046/work
Requires-Dist: libpysal@ file:///home/conda/feedstock_root/build_artifacts/libpysal_1699257956374/work
Requires-Dist: lightgbm@ file:///D:/bld/lightgbm_1706274355466/work
Requires-Dist: linkify-it-py@ file:///home/conda/feedstock_root/build_artifacts/linkify-it-py_1651923627081/work
Requires-Dist: littleutils==0.2.2
Requires-Dist: llvmlite==0.41.1
Requires-Dist: lmoments3@ file:///home/conda/feedstock_root/build_artifacts/lmoments3_1688749822664/work
Requires-Dist: locket@ file:///home/conda/feedstock_root/build_artifacts/locket_1650660393415/work
Requires-Dist: logzero@ file:///D:/bld/logzero_1695637404014/work
Requires-Dist: lz4@ file:///D:/bld/lz4_1695448798709/work
Requires-Dist: Mako@ file:///home/conda/feedstock_root/build_artifacts/mako_1699482234420/work
Requires-Dist: mapclassify@ file:///home/conda/feedstock_root/build_artifacts/mapclassify_1696563523338/work
Requires-Dist: Markdown@ file:///home/conda/feedstock_root/build_artifacts/markdown_1698797478597/work
Requires-Dist: markdown-it-py@ file:///home/conda/feedstock_root/build_artifacts/markdown-it-py_1686175045316/work
Requires-Dist: MarkupSafe@ file:///D:/bld/markupsafe_1695367436673/work
Requires-Dist: matplotlib@ file:///D:/bld/matplotlib-suite_1700509543300/work
Requires-Dist: matplotlib-inline@ file:///home/conda/feedstock_root/build_artifacts/matplotlib-inline_1660814786464/work
Requires-Dist: matplotlib-scalebar==0.8.1
Requires-Dist: mdit-py-plugins@ file:///home/conda/feedstock_root/build_artifacts/mdit-py-plugins_1686175351422/work
Requires-Dist: mdurl@ file:///home/conda/feedstock_root/build_artifacts/mdurl_1639515908913/work
Requires-Dist: merf==1.0
Requires-Dist: mgwr@ file:///home/conda/feedstock_root/build_artifacts/mgwr_1701195003622/work
Requires-Dist: mistune@ file:///home/conda/feedstock_root/build_artifacts/mistune_1698947099619/work
Requires-Dist: momepy@ file:///home/conda/feedstock_root/build_artifacts/momepy_1700689714956/work
Requires-Dist: monotonic==1.5
Requires-Dist: more-itertools@ file:///home/conda/feedstock_root/build_artifacts/more-itertools_1691086935839/work
Requires-Dist: mpmath@ file:///home/conda/feedstock_root/build_artifacts/mpmath_1678228039184/work
Requires-Dist: msgpack@ file:///D:/bld/msgpack-python_1700926661619/work
Requires-Dist: multidict@ file:///D:/bld/multidict_1696716197787/work
Requires-Dist: multimethod@ file:///home/conda/feedstock_root/build_artifacts/multimethod_1677278728711/work
Requires-Dist: multipledispatch==0.6.0
Requires-Dist: munkres==1.1.4
Requires-Dist: mypy-extensions@ file:///home/conda/feedstock_root/build_artifacts/mypy_extensions_1675543315189/work
Requires-Dist: nbclassic@ file:///home/conda/feedstock_root/build_artifacts/nbclassic_1683202081046/work
Requires-Dist: nbclient@ file:///home/conda/feedstock_root/build_artifacts/nbclient_1684790896106/work
Requires-Dist: nbconvert@ file:///home/conda/feedstock_root/build_artifacts/nbconvert-meta_1701709198055/work
Requires-Dist: nbformat@ file:///home/conda/feedstock_root/build_artifacts/nbformat_1690814868471/work
Requires-Dist: neptune-client@ file:///home/conda/feedstock_root/build_artifacts/neptune-client_1701695481741/work
Requires-Dist: nest-asyncio@ file:///home/conda/feedstock_root/build_artifacts/nest-asyncio_1697083700168/work
Requires-Dist: netCDF4@ file:///D:/bld/netcdf4_1698267745962/work
Requires-Dist: networkx@ file:///home/conda/feedstock_root/build_artifacts/networkx_1698504735452/work
Requires-Dist: nh3@ file:///D:/bld/nh3_1701974554949/work/dist/nh3-0.2.15-cp37-abi3-win_amd64.whl#sha256=d0c2a1976a224c7d952b824d16b637f79518084f45c1ed3f7086ce76d8706c07
Requires-Dist: notebook@ file:///home/conda/feedstock_root/build_artifacts/notebook_1695225629675/work
Requires-Dist: notebook_shim@ file:///home/conda/feedstock_root/build_artifacts/notebook-shim_1682360583588/work
Requires-Dist: numba@ file:///D:/bld/numba_1699456869246/work
Requires-Dist: numcodecs@ file:///D:/bld/numcodecs_1697592174268/work
Requires-Dist: numpy@ file:///D:/bld/numpy_1700874658525/work/dist/numpy-1.26.2-cp311-cp311-win_amd64.whl#sha256=5f8ba4f2cf8cb0f5604311af9375095b4550d592a32b5c9e32a7dd31391c6b85
Requires-Dist: oauthlib@ file:///home/conda/feedstock_root/build_artifacts/oauthlib_1666056362788/work
Requires-Dist: openpyxl@ file:///D:/bld/openpyxl_1695464814305/work
Requires-Dist: optuna@ file:///home/conda/feedstock_root/build_artifacts/optuna_1702283828007/work
Requires-Dist: outdated@ file:///home/conda/feedstock_root/build_artifacts/outdated_1667391529811/work
Requires-Dist: overrides@ file:///home/conda/feedstock_root/build_artifacts/overrides_1691338815398/work
Requires-Dist: packaging@ file:///home/conda/feedstock_root/build_artifacts/packaging_1696202382185/work
Requires-Dist: palettable@ file:///home/conda/feedstock_root/build_artifacts/palettable_1682018334297/work
Requires-Dist: pandas@ file:///D:/bld/pandas_1702057234875/work
Requires-Dist: pandas-flavor@ file:///home/conda/feedstock_root/build_artifacts/pandas-flavor_1699047263912/work
Requires-Dist: pandocfilters@ file:///home/conda/feedstock_root/build_artifacts/pandocfilters_1631603243851/work
Requires-Dist: panel@ file:///home/conda/feedstock_root/build_artifacts/panel_1703251361442/work
Requires-Dist: pangres==4.2.1
Requires-Dist: param@ file:///home/conda/feedstock_root/build_artifacts/param_1699478026279/work
Requires-Dist: parso@ file:///home/conda/feedstock_root/build_artifacts/parso_1638334955874/work
Requires-Dist: partd@ file:///home/conda/feedstock_root/build_artifacts/partd_1695667515973/work
Requires-Dist: patsy@ file:///home/conda/feedstock_root/build_artifacts/patsy_1701443970942/work
Requires-Dist: pickleshare@ file:///home/conda/feedstock_root/build_artifacts/pickleshare_1602536217715/work
Requires-Dist: Pillow@ file:///D:/bld/pillow_1697423754480/work
Requires-Dist: pingouin@ file:///home/conda/feedstock_root/build_artifacts/pingouin_1705312403463/work
Requires-Dist: Pint@ file:///home/conda/feedstock_root/build_artifacts/pint_1702076892493/work
Requires-Dist: pkginfo@ file:///home/conda/feedstock_root/build_artifacts/pkginfo_1673281726124/work
Requires-Dist: pkgutil_resolve_name@ file:///home/conda/feedstock_root/build_artifacts/pkgutil-resolve-name_1694617248815/work
Requires-Dist: platformdirs@ file:///home/conda/feedstock_root/build_artifacts/platformdirs_1701708255999/work
Requires-Dist: plotly@ file:///home/conda/feedstock_root/build_artifacts/plotly_1698272730927/work
Requires-Dist: pointpats@ file:///home/conda/feedstock_root/build_artifacts/pointpats_1696344594965/work
Requires-Dist: pqdm@ file:///home/conda/feedstock_root/build_artifacts/pqdm_1686398029783/work
Requires-Dist: progressbar2==4.3.2
Requires-Dist: prometheus-client@ file:///home/conda/feedstock_root/build_artifacts/prometheus_client_1700579315247/work
Requires-Dist: prompt-toolkit@ file:///home/conda/feedstock_root/build_artifacts/prompt-toolkit_1702399386289/work
Requires-Dist: protobuf==4.24.4
Requires-Dist: psutil@ file:///D:/bld/psutil_1695367331398/work
Requires-Dist: psycopg2-binary==2.9.9
Requires-Dist: PuLP@ file:///D:/bld/pulp_1695847609286/work
Requires-Dist: pure-eval@ file:///home/conda/feedstock_root/build_artifacts/pure_eval_1642875951954/work
Requires-Dist: py@ file:///home/conda/feedstock_root/build_artifacts/py_1636301881863/work
Requires-Dist: pyarrow==14.0.1
Requires-Dist: pyarrow-hotfix@ file:///home/conda/feedstock_root/build_artifacts/pyarrow-hotfix_1700596371886/work
Requires-Dist: pyasn1@ file:///home/conda/feedstock_root/build_artifacts/pyasn1_1701287008248/work
Requires-Dist: pyasn1-modules@ file:///home/conda/feedstock_root/build_artifacts/pyasn1-modules_1695107857548/work
Requires-Dist: pycparser@ file:///home/conda/feedstock_root/build_artifacts/pycparser_1636257122734/work
Requires-Dist: PyCRS==1.0.2
Requires-Dist: pyct@ file:///home/conda/feedstock_root/build_artifacts/pyct_1701103738301/work
Requires-Dist: pygam==0.9.0
Requires-Dist: Pygments@ file:///home/conda/feedstock_root/build_artifacts/pygments_1700607939962/work
Requires-Dist: PyJWT@ file:///home/conda/feedstock_root/build_artifacts/pyjwt_1689721553971/work
Requires-Dist: pykdtree@ file:///D:/bld/pykdtree_1701348679084/work
Requires-Dist: pymannkendall@ file:///home/conda/feedstock_root/build_artifacts/pymannkendall_1687849090492/work
Requires-Dist: pyModis==2.3.0
Requires-Dist: pyogrio@ file:///D:/bld/pyogrio_1700083299630/work
Requires-Dist: pyOpenSSL@ file:///home/conda/feedstock_root/build_artifacts/pyopenssl_1698795453264/work
Requires-Dist: pyparsing@ file:///home/conda/feedstock_root/build_artifacts/pyparsing_1690737849915/work
Requires-Dist: pyperclip@ file:///home/conda/feedstock_root/build_artifacts/pyperclip_1622337600177/work
Requires-Dist: pyproj@ file:///D:/bld/pyproj_1702028199817/work
Requires-Dist: pyresample@ file:///D:/bld/pyresample_1698175245669/work
Requires-Dist: pysal@ file:///home/conda/feedstock_root/build_artifacts/pysal_1696462670274/work
Requires-Dist: pyshp@ file:///home/conda/feedstock_root/build_artifacts/pyshp_1659002966020/work
Requires-Dist: PySocks@ file:///D:/bld/pysocks_1661604991356/work
Requires-Dist: python-box@ file:///D:/bld/python-box_1696190300452/work
Requires-Dist: python-cmr@ file:///home/conda/feedstock_root/build_artifacts/python-cmr_1690419499592/work
Requires-Dist: python-dateutil@ file:///home/conda/feedstock_root/build_artifacts/python-dateutil_1626286286081/work
Requires-Dist: python-json-logger@ file:///home/conda/feedstock_root/build_artifacts/python-json-logger_1677079630776/work
Requires-Dist: python-utils==3.8.1
Requires-Dist: pytz@ file:///home/conda/feedstock_root/build_artifacts/pytz_1693930252784/work
Requires-Dist: pyu2f@ file:///home/conda/feedstock_root/build_artifacts/pyu2f_1604248910016/work
Requires-Dist: pyviz-comms@ file:///home/conda/feedstock_root/build_artifacts/pyviz_comms_1686853987942/work
Requires-Dist: PyWavelets@ file:///C:/ci_311/pywavelets_1676504105729/work
Requires-Dist: pywin32==306
Requires-Dist: pywin32-ctypes@ file:///D:/bld/pywin32-ctypes_1695395083243/work
Requires-Dist: pywinpty@ file:///D:/bld/pywinpty_1696655782961/work/target/wheels/pywinpty-2.0.12-cp311-none-win_amd64.whl#sha256=dadef9a7087ccec9106a239ba4865bcfeda340c447e65d3863f3cebc4cc32fdf
Requires-Dist: PyYAML@ file:///D:/bld/pyyaml_1695373635661/work
Requires-Dist: pyzmq@ file:///D:/bld/pyzmq_1666828541352/work
Requires-Dist: quantecon@ file:///home/conda/feedstock_root/build_artifacts/quantecon_1655746571862/work
Requires-Dist: rasterio==1.3.9
Requires-Dist: rasterstats@ file:///home/conda/feedstock_root/build_artifacts/rasterstats_1685447679213/work
Requires-Dist: ratelim==0.1.6
Requires-Dist: readme-renderer@ file:///home/conda/feedstock_root/build_artifacts/readme_renderer_1694242704995/work
Requires-Dist: rechunker@ file:///home/conda/feedstock_root/build_artifacts/rechunker_1700150863264/work
Requires-Dist: referencing@ file:///home/conda/feedstock_root/build_artifacts/referencing_1701974441252/work
Requires-Dist: regex@ file:///D:/bld/regex_1696364344502/work
Requires-Dist: reportlab==4.0.9
Requires-Dist: requests@ file:///home/conda/feedstock_root/build_artifacts/requests_1684774241324/work
Requires-Dist: requests-oauthlib@ file:///home/conda/feedstock_root/build_artifacts/requests-oauthlib_1643557462909/work
Requires-Dist: requests-toolbelt@ file:///home/conda/feedstock_root/build_artifacts/requests-toolbelt_1682953341151/work
Requires-Dist: retry==0.9.2
Requires-Dist: retrying==1.3.4
Requires-Dist: rfc3339-validator@ file:///home/conda/feedstock_root/build_artifacts/rfc3339-validator_1638811747357/work
Requires-Dist: rfc3986@ file:///home/conda/feedstock_root/build_artifacts/rfc3986_1641825045899/work
Requires-Dist: rfc3986-validator@ file:///home/conda/feedstock_root/build_artifacts/rfc3986-validator_1598024191506/work
Requires-Dist: rfc3987==1.3.8
Requires-Dist: rich@ file:///home/conda/feedstock_root/build_artifacts/rich-split_1700160075651/work/dist
Requires-Dist: rioxarray@ file:///home/conda/feedstock_root/build_artifacts/rioxarray_1692046920781/work
Requires-Dist: rpds-py@ file:///D:/bld/rpds-py_1701308197850/work
Requires-Dist: rsa@ file:///home/conda/feedstock_root/build_artifacts/rsa_1658328885051/work
Requires-Dist: Rtree@ file:///D:/bld/rtree_1697503371529/work
Requires-Dist: ruamel.yaml@ file:///D:/bld/ruamel.yaml_1699007482545/work
Requires-Dist: ruamel.yaml.clib@ file:///D:/bld/ruamel.yaml.clib_1695997029546/work
Requires-Dist: ruff==0.1.8
Requires-Dist: s3fs@ file:///home/conda/feedstock_root/build_artifacts/s3fs_1702342483100/work
Requires-Dist: s3transfer@ file:///home/conda/feedstock_root/build_artifacts/s3transfer_1701077526275/work
Requires-Dist: sankee@ file:///home/conda/feedstock_root/build_artifacts/sankee_1687968516448/work
Requires-Dist: SciencePlots==2.1.1
Requires-Dist: scikit-image@ file:///C:/b/abs_2075zg1pia/croot/scikit-image_1682528361447/work
Requires-Dist: scikit-learn@ file:///D:/bld/scikit-learn_1701932163400/work
Requires-Dist: SciPy@ file:///C:/bld/scipy-split_1700812665193/work/dist/scipy-1.11.4-cp311-cp311-win_amd64.whl#sha256=b18e31dd2ff70d2f501b27027cbf6e39b2254a8b64f7571f44cc634fddea2a43
Requires-Dist: scooby@ file:///home/conda/feedstock_root/build_artifacts/scooby_1697858861125/work
Requires-Dist: seaborn@ file:///home/conda/feedstock_root/build_artifacts/seaborn-split_1696262444380/work
Requires-Dist: segregation@ file:///home/conda/feedstock_root/build_artifacts/segregation_1696427305843/work
Requires-Dist: Send2Trash@ file:///D:/bld/send2trash_1682601429724/work
Requires-Dist: shap==0.44.1
Requires-Dist: shapely@ file:///D:/bld/shapely_1700762982303/work
Requires-Dist: simplejson@ file:///D:/bld/simplejson_1696595807059/work
Requires-Dist: six@ file:///home/conda/feedstock_root/build_artifacts/six_1620240208055/work
Requires-Dist: skrebate@ file:///home/conda/feedstock_root/build_artifacts/skrebate_1613441125930/work
Requires-Dist: slicer==0.0.7
Requires-Dist: smmap@ file:///home/conda/feedstock_root/build_artifacts/smmap_1634310307496/work
Requires-Dist: sniffio@ file:///home/conda/feedstock_root/build_artifacts/sniffio_1662051266223/work
Requires-Dist: snuggs==1.4.7
Requires-Dist: sortedcontainers@ file:///home/conda/feedstock_root/build_artifacts/sortedcontainers_1621217038088/work
Requires-Dist: soupsieve@ file:///home/conda/feedstock_root/build_artifacts/soupsieve_1693929250441/work
Requires-Dist: spaghetti@ file:///home/conda/feedstock_root/build_artifacts/spaghetti_1696295637619/work
Requires-Dist: spglm@ file:///home/conda/feedstock_root/build_artifacts/spglm_1698251856735/work
Requires-Dist: spint@ file:///home/conda/feedstock_root/build_artifacts/spint_1696602360359/work
Requires-Dist: splot@ file:///home/conda/feedstock_root/build_artifacts/splot_1649898658322/work
Requires-Dist: spopt@ file:///home/conda/feedstock_root/build_artifacts/spopt_1702254568408/work
Requires-Dist: spreg@ file:///home/conda/feedstock_root/build_artifacts/spreg_1699334132577/work
Requires-Dist: spvcm@ file:///home/conda/feedstock_root/build_artifacts/spvcm_1696623913651/work
Requires-Dist: SQLAlchemy==2.0.25
Requires-Dist: SQLAlchemy-Utils==0.41.1
Requires-Dist: stack-data@ file:///home/conda/feedstock_root/build_artifacts/stack_data_1669632077133/work
Requires-Dist: statsmodels@ file:///D:/bld/statsmodels_1702316430303/work
Requires-Dist: stumpy@ file:///home/conda/feedstock_root/build_artifacts/stumpy_1692618442330/work
Requires-Dist: swagger-spec-validator@ file:///home/conda/feedstock_root/build_artifacts/swagger-spec-validator_1667582568661/work
Requires-Dist: sympy@ file:///home/conda/feedstock_root/build_artifacts/sympy_1684180539862/work
Requires-Dist: tabulate@ file:///home/conda/feedstock_root/build_artifacts/tabulate_1665138452165/work
Requires-Dist: tblib@ file:///home/conda/feedstock_root/build_artifacts/tblib_1702066284995/work
Requires-Dist: tenacity@ file:///home/conda/feedstock_root/build_artifacts/tenacity_1692026804430/work
Requires-Dist: terminado@ file:///D:/bld/terminado_1699810237897/work
Requires-Dist: threadpoolctl@ file:///home/conda/feedstock_root/build_artifacts/threadpoolctl_1689261241048/work
Requires-Dist: tifffile@ file:///home/conda/feedstock_root/build_artifacts/tifffile_1591280222285/work
Requires-Dist: tinycss2@ file:///home/conda/feedstock_root/build_artifacts/tinycss2_1666100256010/work
Requires-Dist: tinydb@ file:///home/conda/feedstock_root/build_artifacts/tinydb_1686607385119/work
Requires-Dist: tinynetrc@ file:///home/conda/feedstock_root/build_artifacts/tinynetrc_1651262908904/work
Requires-Dist: tobler@ file:///home/conda/feedstock_root/build_artifacts/tobler_1696384105449/work
Requires-Dist: toml@ file:///home/conda/feedstock_root/build_artifacts/toml_1604308577558/work
Requires-Dist: tomli@ file:///home/conda/feedstock_root/build_artifacts/tomli_1644342247877/work
Requires-Dist: toolz@ file:///home/conda/feedstock_root/build_artifacts/toolz_1657485559105/work
Requires-Dist: tornado@ file:///D:/bld/tornado_1695373601455/work
Requires-Dist: tqdm@ file:///home/conda/feedstock_root/build_artifacts/tqdm_1691671248568/work
Requires-Dist: traitlets@ file:///home/conda/feedstock_root/build_artifacts/traitlets_1701095650114/work
Requires-Dist: traittypes@ file:///home/conda/feedstock_root/build_artifacts/traittypes_1600843364635/work
Requires-Dist: tsfresh@ file:///home/conda/feedstock_root/build_artifacts/tsfresh_1690701842785/work
Requires-Dist: twine@ file:///home/conda/feedstock_root/build_artifacts/twine_1669898575620/work
Requires-Dist: types-python-dateutil@ file:///home/conda/feedstock_root/build_artifacts/types-python-dateutil_1689882883784/work
Requires-Dist: typing-utils@ file:///home/conda/feedstock_root/build_artifacts/typing_utils_1622899189314/work
Requires-Dist: typing_extensions@ file:///home/conda/feedstock_root/build_artifacts/typing_extensions_1702176139754/work
Requires-Dist: tzdata@ file:///home/conda/feedstock_root/build_artifacts/python-tzdata_1680081134351/work
Requires-Dist: tzlocal@ file:///D:/bld/tzlocal_1698013086500/work
Requires-Dist: uc-micro-py@ file:///home/conda/feedstock_root/build_artifacts/uc-micro-py_1608058642472/work
Requires-Dist: uri-template@ file:///home/conda/feedstock_root/build_artifacts/uri-template_1688655812972/work/dist
Requires-Dist: uritemplate@ file:///home/conda/feedstock_root/build_artifacts/uritemplate_1634152692041/work
Requires-Dist: urllib3@ file:///home/conda/feedstock_root/build_artifacts/urllib3_1697813446430/work
Requires-Dist: wcwidth@ file:///home/conda/feedstock_root/build_artifacts/wcwidth_1700607916581/work
Requires-Dist: webcolors@ file:///home/conda/feedstock_root/build_artifacts/webcolors_1679900785843/work
Requires-Dist: webencodings@ file:///home/conda/feedstock_root/build_artifacts/webencodings_1694681268211/work
Requires-Dist: websocket-client@ file:///home/conda/feedstock_root/build_artifacts/websocket-client_1701630677416/work
Requires-Dist: wget==3.2
Requires-Dist: whitebox@ file:///home/conda/feedstock_root/build_artifacts/whitebox_1680142331393/work
Requires-Dist: whiteboxgui@ file:///home/conda/feedstock_root/build_artifacts/whiteboxgui_1680061160584/work
Requires-Dist: widgetsnbextension@ file:///home/conda/feedstock_root/build_artifacts/widgetsnbextension_1694598693908/work
Requires-Dist: win-inet-pton@ file:///D:/bld/win_inet_pton_1667051142467/work
Requires-Dist: wrapt@ file:///D:/bld/wrapt_1699533016391/work
Requires-Dist: xarray@ file:///home/conda/feedstock_root/build_artifacts/xarray_1702072927808/work
Requires-Dist: xclim@ file:///D:/bld/xclim_1687882616320/work
Requires-Dist: xgboost@ file:///D:/bld/xgboost-split_1705650998634/work/python-package
Requires-Dist: xyzservices@ file:///home/conda/feedstock_root/build_artifacts/xyzservices_1698325309404/work
Requires-Dist: y-py@ file:///D:/bld/y-py_1677231304455/work
Requires-Dist: yarl@ file:///D:/bld/yarl_1701168660239/work
Requires-Dist: ypy-websocket@ file:///home/conda/feedstock_root/build_artifacts/ypy-websocket_1670333059911/work
Requires-Dist: zarr@ file:///home/conda/feedstock_root/build_artifacts/zarr_1692615632620/work
Requires-Dist: zict@ file:///home/conda/feedstock_root/build_artifacts/zict_1681770155528/work
Requires-Dist: zipp@ file:///home/conda/feedstock_root/build_artifacts/zipp_1695255097490/work

# geoprepare


[![image](https://img.shields.io/pypi/v/geoprepare.svg)](https://pypi.python.org/pypi/geoprepare)


**A Python package to prepare (download, extract, process input data) for GEOCIF and related models**


-   Free software: MIT license
-   Documentation: https://ritviksahajpal.github.io/geoprepare

## Installation
### Using PyPi (default)
```python
pip install --upgrade geoprepare
```
### Using Github repository (for development)
```python
pip install --upgrade --no-deps --force-reinstall git+https://github.com/ritviksahajpal/geoprepare.git
```

### Local installation
Navigate to the directory containing `setup.py` and run the following command:
```python
pip install .
```

## Usage
```python
from geoprepare import geoprepare, geoextract, geomerge

# Provide full path to the configuration files
# Download and preprocess data
geoprepare.run(['PATH_TO_geoprepare.txt'])

# Extract crop masks and EO variables
geoextract.run(['PATH_TO_geoprepare.txt', 'PATH_TO_geoextract.txt'])

# Merge EO files into one, this is needed to create AgMet graphics and to run the crop yield model
geomerge.run(['PATH_TO_geoprepare.txt', 'PATH_TO_geoextract.txt'])

```
Before running the code above, we need to specify the two configuration files. `geoprepare.txt` contains configuration settings for downloading and processing the input data.
`geoextract.txt` contains configuration settings for extracting crop masks and EO variables.

## Configuration files
### geoprepare.txt
`datasets`: Specify which datasets need to be downloaded and processed
`dir_base`: Path where to store the downloaded and processed files
`start_year`, `end_year`: Specify time-period for which data should be downloaded and processed
`logfile`: What directory name to use for the log files
`level`: Which level to use for [logging](https://www.loggly.com/ultimate-guide/python-logging-basics/)
`parallel_process`: Whether to use multiple CPUs
`fraction_cpus`: What fraction of available CPUs to use
```python
[DATASETS]
datasets = ['CPC', 'SOIL-MOISTURE', 'LST', 'CPC', 'AVHRR', 'AGERA5', 'CHIRPS', 'CHIRPS-GEFS']

[PATHS]
dir_base = /home/servir/GEOCIF
dir_input = ${dir_base}/input
dir_log = ${dir_base}/log
dir_interim = ${dir_input}/interim
dir_download = ${dir_input}/download
dir_output = ${dir_base}/output
dir_global_datasets = ${dir_input}/global_datasets
dir_masks = ${dir_global_datasets}/masks
dir_regions = ${dir_global_datasets}/regions
dir_regions_shp = ${dir_regions}/shps
dir_crop_masks = ${dir_input}/crop_masks
dir_models = ${dir_input}/models

[AGERA5]
start_year = 2022

[AVHRR]
data_dir = https://www.ncei.noaa.gov/data/avhrr-land-normalized-difference-vegetation-index/access

[CHIRPS]
fill_value = -2147483648
prelim = /pub/org/chc/products/CHIRPS-2.0/prelim/global_daily/tifs/p05/
final = /pub/org/chc/products/CHIRPS-2.0/global_daily/tifs/p05/
start_year = 2022

[CHIRPS-GEFS]
fill_value = -2147483648
data_dir = /pub/org/chc/products/EWX/data/forecasts/CHIRPS-GEFS_precip_v12/15day/precip_mean/

[CPC]
data_dir = ftp://ftp.cdc.noaa.gov/Datasets

[ESI]
data_dir = https://gis1.servirglobal.net//data//esi//

[FLDAS]

[LST]
num_update_days = 7

[NDVI]
product = MOD09CMG
vi = ndvi
scale_glam = False
scale_mark = True
print_missing = False

[SOIL-MOISTURE]
data_dir = https://gimms.gsfc.nasa.gov/SMOS/SMAP/L03/

[LOGGING]
level = ERROR

[DEFAULT]
logfile = log
parallel_process = False
fraction_cpus = 0.5
start_year = 2022
end_year = 2022
```

### geoextract.txt
`countries`: List of countries to process
`forecast_seasons`: List of seasons to process
`mask`: Name of file to use as a mask for cropland/croptype
`redo`: Redo the processing for all days (`True`) or only days with new data (`False`)
`threshold`: Use a `threshold` value (`True`) or a `percentile` (`False`) on the cropland/croptype mask
`floor`: Value below which to set the mask to 0
`ceil`: Value above which to set the mask to 1
`eo_model`: List of datasets to extract from
```python
[kenya]
category = EWCM
scales = ['admin_1']  ; can be admin_1 (state level) or admin_2 (county level)
growing_seasons = [1]  ; 1 is primary/long season, 2 is secondary/short season
crops = ['mz', 'sr', 'ml', 'rc', 'ww', 'tf']
use_cropland_mask = True

[rwanda]
category = EWCM
scales = ['admin_1']  ; can be admin_1 (state level) or admin_2 (county level)
growing_seasons = [1]  ; 1 is primary/long season, 2 is secondary/short season
crops = ['mz', 'sr', 'ml', 'rc', 'ww', 'tf']
use_cropland_mask = True

[malawi]
category = EWCM
scales = ['admin_1']  ; can be admin_1 (state level) or admin_2 (county level)
growing_seasons = [1]  ; 1 is primary/long season, 2 is secondary/short season
crops = ['mz', 'sr', 'ml', 'rc', 'ww', 'tf']
use_cropland_mask = True

[zambia]
category = EWCM
scales = ['admin_1']  ; can be admin_1 (state level) or admin_2 (county level)
growing_seasons = [1]  ; 1 is primary/long season, 2 is secondary/short season
crops = ['mz', 'sr', 'ml', 'rc', 'ww', 'tf']
use_cropland_mask = True

[united_republic_of_tanzania]
category = EWCM
scales = ['admin_1']  ; can be admin_1 (state level) or admin_2 (county level)
growing_seasons = [1]  ; 1 is primary/long season, 2 is secondary/short season
crops = ['mz', 'sr', 'ml', 'rc', 'ww', 'tf']
use_cropland_mask = True

[ww]
mask = cropland_v9.tif

[mz]
mask = cropland_v9.tif

[sb]
mask = cropland_v9.tif

[rc]
mask = cropland_v9.tif

[tf]
mask = cropland_v9.tif

[sr]
mask = cropland_v9.tif

[ml]
mask = cropland_v9.tif

[EWCM]
calendar_file = EWCM_2021-6-17.xlsx

[AMIS]
calendar_file = AMISCM_2021-6-17.xlsx

[DEFAULT]
redo = False
threshold = True
floor = 20
ceil = 90
scales = ['admin_1']
growing_seasons = [1]
countries = ['kenya']
forecast_seasons = [2022]
mask = cropland_v9.tif
shp_boundary = EWCM_Level_1.shp
statistics_file = statistics.csv
zone_file = countries.csv
calendar_file = crop_calendar.csv
eo_model = ['ndvi', 'cpc_tmax', 'cpc_tmin', 'chirps', 'chirps_gefs', 'esi_4wk', 'soil_moisture_as1', 'soil_moisture_as2']
```

## Accessing EO data using the earthaccess library
```python
import geopandas as gpd
from tqdm import tqdm
from pathlib import Path

from geoprepare.eoaccess import eoaccess

dg = gpd.read_file(PATH_TO_SHAPEFILE, engine="pyogrio")

# Convert to CRS 4326 if not already
if dg.crs != "EPSG:4326":
    dg = dg.to_crs("EPSG:4326")

# Iterate over each row of the shapefile
for index, row in tqdm(dg.iterrows(), desc="Iterating over shapefile", total=len(dg)):
    # Get bbox from geometry of the row
    bbox = row.geometry.bounds

    obj = eoaccess.NASAEarthAccess(
        dataset=["HLSL30", "HLSS30"],
        bbox=bbox,
        temporal=(f"{row['year']}-01-01", f"{row['year']}-12-31"),
        output_dir=".",
    )

    obj.search_data()
    if obj.results:
        obj.download_parallel()

obj = eoaccess.EarthAccessProcessor(
    dataset=["HLSL30", "HLSS30"],
    input_dir=".",
    shapefile=Path(PATH_TO_SHAPEFILE),
)
obj.mosaic()
```

### Upload package to pypi
1. Update requirements.txt
2. Update version="A.B.C" in setup.py
3. Navigate to the directory containing `setup.py` and run the following command:
```python
pip freeze > requirements.txt
python setup.py sdist
twine upload dist/geoprepare-A.B.C.tar.gz
```

## Credits

This package was created with [Cookiecutter](https://github.com/cookiecutter/cookiecutter) and the [giswqs/pypackage](https://github.com/giswqs/pypackage) project template.
