Repository: Zeroto521/my-data-toolkit

Issue:
ENH: New geoaccessor `DataFrame.h3`
<!--
Thanks for contributing a pull request!

Please follow these standard acronyms to start the commit message:

- ENH: enhancement
- BUG: bug fix
- DOC: documentation
- TYP: type annotations
- TST: addition or modification of tests
- MAINT: maintenance commit (refactoring, typos, etc.)
- BLD: change related to building
- REL: related to releasing
- API: an (incompatible) API change
- DEP: deprecate something, or remove a deprecated object
- DEV: development tool or utility
- REV: revert an earlier commit
- PERF: performance improvement
- BOT: always commit via a bot
- CI: related to CI or CD
- CLN: Code cleanup
-->

- [x] closes #811
- [ ] whatsnew entry



Discussion:
# [Codecov](https://codecov.io/gh/Zeroto521/my-data-toolkit/pull/819?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=40%25) Report
> Merging [#819](https://codecov.io/gh/Zeroto521/my-data-toolkit/pull/819?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=40%25) (038e68b) into [main](https://codecov.io/gh/Zeroto521/my-data-toolkit/commit/05327fa35c4efaed54a6466d102865461b052599?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=40%25) (05327fa) will **increase** coverage by `0.00%`.
> The diff coverage is `100.00%`.

```diff
@@           Coverage Diff           @@
##             main     #819   +/-   ##
=======================================
  Coverage   99.70%   99.71%           
=======================================
  Files         145      147    +2     
  Lines        2005     2069   +64     
  Branches      450      476   +26     
=======================================
+ Hits         1999     2063   +64     
  Misses          1        1           
  Partials        5        5           
```


| [Impacted Files](https://codecov.io/gh/Zeroto521/my-data-toolkit/pull/819?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=40%25) | Coverage Δ | |
|---|---|---|
| [dtoolkit/geoaccessor/dataframe/\_\_init\_\_.py](https://codecov.io/gh/Zeroto521/my-data-toolkit/pull/819/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=40%25#diff-ZHRvb2xraXQvZ2VvYWNjZXNzb3IvZGF0YWZyYW1lL19faW5pdF9fLnB5) | `100.00% <100.00%> (ø)` | |
| [dtoolkit/geoaccessor/dataframe/h3.py](https://codecov.io/gh/Zeroto521/my-data-toolkit/pull/819/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=40%25#diff-ZHRvb2xraXQvZ2VvYWNjZXNzb3IvZGF0YWZyYW1lL2gzLnB5) | `100.00% <100.00%> (ø)` | |
| [dtoolkit/geoaccessor/dataframe/is\_h3.py](https://codecov.io/gh/Zeroto521/my-data-toolkit/pull/819/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=40%25#diff-ZHRvb2xraXQvZ2VvYWNjZXNzb3IvZGF0YWZyYW1lL2lzX2gzLnB5) | `100.00% <100.00%> (ø)` | |
| [dtoolkit/geoaccessor/geoseries/to\_h3.py](https://codecov.io/gh/Zeroto521/my-data-toolkit/pull/819/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=40%25#diff-ZHRvb2xraXQvZ2VvYWNjZXNzb3IvZ2Vvc2VyaWVzL3RvX2gzLnB5) | `100.00% <100.00%> (ø)` | |
| [dtoolkit/geoaccessor/index/h3.py](https://codecov.io/gh/Zeroto521/my-data-toolkit/pull/819/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=40%25#diff-ZHRvb2xraXQvZ2VvYWNjZXNzb3IvaW5kZXgvaDMucHk=) | `100.00% <100.00%> (ø)` | |
| [dtoolkit/geoaccessor/index/is\_h3.py](https://codecov.io/gh/Zeroto521/my-data-toolkit/pull/819/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=40%25#diff-ZHRvb2xraXQvZ2VvYWNjZXNzb3IvaW5kZXgvaXNfaDMucHk=) | `100.00% <100.00%> (ø)` | |
| [dtoolkit/geoaccessor/series/h3.py](https://codecov.io/gh/Zeroto521/my-data-toolkit/pull/819/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=40%25#diff-ZHRvb2xraXQvZ2VvYWNjZXNzb3Ivc2VyaWVzL2gzLnB5) | `100.00% <100.00%> (ø)` | |
| [dtoolkit/geoaccessor/series/is\_h3.py](https://codecov.io/gh/Zeroto521/my-data-toolkit/pull/819/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=40%25#diff-ZHRvb2xraXQvZ2VvYWNjZXNzb3Ivc2VyaWVzL2lzX2gzLnB5) | `100.00% <100.00%> (ø)` | |

:mega: We’re building smart automated test selection to slash your CI/CD build times. [Learn more](https://about.codecov.io/iterative-testing/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=40%25)


Resolving patch:
diff --git a/dtoolkit/geoaccessor/geoseries/to_h3.py b/dtoolkit/geoaccessor/geoseries/to_h3.py
--- a/dtoolkit/geoaccessor/geoseries/to_h3.py
+++ b/dtoolkit/geoaccessor/geoseries/to_h3.py
@@ -47,6 +47,7 @@ def to_h3(
     h3.latlon_to_h3
     h3.polygon_to_cells
     dtoolkit.geoaccessor.series.H3
+    dtoolkit.geoaccessor.dataframe.H3
     dtoolkit.geoaccessor.geoseries.to_h3
     dtoolkit.geoaccessor.geodataframe.to_h3
 
diff --git a/dtoolkit/geoaccessor/index/h3.py b/dtoolkit/geoaccessor/index/h3.py
--- a/dtoolkit/geoaccessor/index/h3.py
+++ b/dtoolkit/geoaccessor/index/h3.py
@@ -568,6 +568,7 @@ def to_points(self) -> gpd.GeoSeries:
         dtoolkit.geoaccessor.index.H3.to_polygons
         dtoolkit.geoaccessor.series.H3.to_points
         dtoolkit.geoaccessor.dataframe.H3.to_polygons
+        dtoolkit.geoaccessor.geoseries.to_h3
 
         Examples
         --------
@@ -602,6 +603,7 @@ def to_polygons(self) -> gpd.GeoSeries:
         dtoolkit.geoaccessor.index.H3.to_points
         dtoolkit.geoaccessor.series.H3.to_polygons
         dtoolkit.geoaccessor.dataframe.H3.to_points
+        dtoolkit.geoaccessor.geoseries.to_h3
 
         Examples
         --------
diff --git a/dtoolkit/geoaccessor/series/h3.py b/dtoolkit/geoaccessor/series/h3.py
--- a/dtoolkit/geoaccessor/series/h3.py
+++ b/dtoolkit/geoaccessor/series/h3.py
@@ -337,6 +337,7 @@ def to_points(self) -> gpd.GeoDataFrame:
         h3.cell_to_latlng
         dtoolkit.geoaccessor.series.H3.to_polygons
         dtoolkit.geoaccessor.dataframe.H3.to_points
+        dtoolkit.geoaccessor.geodataframe.to_h3
 
         Examples
         --------
@@ -391,6 +392,7 @@ def to_polygons(self) -> gpd.GeoDataFrame:
         h3.cell_to_boundary
         dtoolkit.geoaccessor.series.H3.to_points
         dtoolkit.geoaccessor.dataframe.H3.to_polygons
+        dtoolkit.geoaccessor.geodataframe.to_h3
 
         Examples
         --------


Test patch: