# How do I interpret the \`isea3hcellcode\` column in the occurrence cube results?

**URL:** <https://discourse.gbif.org/t/how-do-i-interpret-the-isea3hcellcode-column-in-the-occurrence-cube-results/6093>\
**Category:** Miscellaneous\
**Created:** [September 4, 2025, 3:20pm UTC](https://discourse.gbif.org/t/how-do-i-interpret-the-isea3hcellcode-column-in-the-occurrence-cube-results/6093 "2025-09-04T15:20:27Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![coreyfarwell1912350](https://avatars.discourse-cdn.com/v4/letter/c/bc79bd/32.png) [@coreyfarwell1912350](https://discourse.gbif.org/u/coreyfarwell1912350)\
**Post date:** [September 4, 2025, 3:20pm UTC](https://discourse.gbif.org/t/how-do-i-interpret-the-isea3hcellcode-column-in-the-occurrence-cube-results/6093/1 "2025-09-04T15:20:27Z")

</div>

I’m trying to work with the occurrence cube output from GBIF in a Python project. I conceptually understand what an occurrence cube is, and what a hexagonal grid is. But when I try to read the ISEA3H cell code value using Python grid libraries, it doesn’t work because GBIF’s ISEA3H Java library is using a different variation of ISEA3H than the libraries I’m using. See this GitHub issue for more information about that:

> <https://github.com/ecere/dggal/issues/10>
>
> Hi, I'm working with \[occurrence cube data from GBIF\](https://www.gbif.org/occur…rence-cubes), which looks something like this:
> 
> \`\`\`
> kingdom	kingdomkey	phylum	phylumkey	class	classkey	order	orderkey	family	familykey	genus	genuskey	species	specieskey	year	isea3hcellcode	kingdomcount	phylumcount	classcount	ordercount	familycount	genuscount	occurrences	mintemporaluncertainty	mincoordinateuncertaintyinmeters
> Animalia	1	Arthropoda	54	Merostomata	351	Xiphosurida	7946450	Limulidae	9222	Limulus	1010609	Limulus polyphemus	1010610	2018	5639762336074163442	17077	17	2	2	2	2	2	1	22.0
> Animalia	1	Arthropoda	54	Merostomata	351	Xiphosurida	7946450	Limulidae	9222	Limulus	1010609	Limulus polyphemus	1010610	2018	5640568355074231285	17847	88	3	3	3	3	3	1	15.0
> \`\`\`
> 
> Within this TSV, there is a \`isea3hcellcode\` column. If we look at the first row the value of that column is \`5639762336074163442\`. I interpreted this to be the ISEA3H zone ID, but when I try to perform operations on that zone ID with \`dggal\`, I get back empty points (for the centroid) and empty polygon boundaries:
> 
> \`\`\`python
> import dggal
> 
> app = dggal.Application(appGlobals=globals())
> 
> dggal.pydggal\_setup(app)
> 
> dggrs = dggal.ISEA3H()
> 
> centroid = dggrs.getZoneWGS84Centroid(5639762336074163442)
> 
> print((centroid.lon, centroid.lat))
> \`\`\`
> 
> prints
> 
> \`\`\`
> (0.0, 0.0)
> \`\`\`
> 
> Do I need to perform some operation on the \`isea3hcellcode\` value before I can use it with \`dggal\`? Or is GBIF generating an invalid ISEA3H ID? Thanks for your help and for making this library.

So what I’m wondering is, how does GBIF expect users to interpret the ISEA3H column? Are there specific libraries we need to be using, and if so is that documented anywhere?

Alternatively, is there any opportunity to have GBIF’s occurrence cubes offer a simpler to understand grid like h3geo(dot)org?

---

<div class="post-metadata">

**Author:** ![jwaller](https://avatars.discourse-cdn.com/v4/letter/j/c6cbf5/32.png) [@jwaller](https://discourse.gbif.org/u/jwaller)\
**Post date:** [September 5, 2025, 6:48am UTC](https://discourse.gbif.org/t/how-do-i-interpret-the-isea3hcellcode-column-in-the-occurrence-cube-results/6093/2 "2025-09-05T06:48:40Z")

</div>

Hello @coreyfarwell1912350

I have recently generated some shapefiles that address exactly this problem. I only generated up to resolution 9. So let me know if you want higher resolution since it might justify me spending more time on this project.

> **[GitHub - jhnwllr/ISEA3H-shapefiles: Shapefiles useful for creating maps with GBIF SQL...](https://github.com/jhnwllr/ISEA3H-shapefiles)**
>
> Shapefiles useful for creating maps with GBIF SQL downloads

---

<div class="post-metadata">

**Author:** ![coreyfarwell1912350](https://avatars.discourse-cdn.com/v4/letter/c/bc79bd/32.png) [@coreyfarwell1912350](https://discourse.gbif.org/u/coreyfarwell1912350)\
**Post date:** [September 5, 2025, 6:05pm UTC](https://discourse.gbif.org/t/how-do-i-interpret-the-isea3hcellcode-column-in-the-occurrence-cube-results/6093/3 "2025-09-05T18:05:46Z")

</div>

I am working with resolutions beyond 9, so this approach won’t work for me.

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/gbif1/original/1X/d2525d53d815eb0c992cc44730ed8a6a1be1dbb5.png) [@system](https://discourse.gbif.org/u/system)\
**Post date:** [October 6, 2025, 4:06am UTC](https://discourse.gbif.org/t/how-do-i-interpret-the-isea3hcellcode-column-in-the-occurrence-cube-results/6093/4 "2025-10-06T04:06:32Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
