Skip to content
/ Sfc4q Public

Space-filling curve valid to index hierarchical grid of aperture-4 quadrilateral cells

Notifications You must be signed in to change notification settings

ppKrauss/Sfc4q

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DOI

        (click here to online demonstration for Desktop Firefox or Chrome)

Sfc4q classes

Space-filling curves (SFCs) can be used to index discrete grids, including the Geospatial ones. Each cell in the grid is associated with an index, which can be produced by an SFC. In this project, we are particularly interested in hierarchical grids with a recurring ​partition of quadrilateral cells in 4 regions​:

Therefore, we are interested in any SFC that is valid for indexing hierarchical grid of refinement-ratio-4 quadrilateral cells, abbreviated SFC-4q, or Sfc4q as adopted in the project's name and classes names.

In this project we are also interested in geocodes obtained by labeling the SFC indexes, expressing it in human-readable hierarchical codes. The hierarchy of the code is illustrated above as the commom prefix (e.g. 2 in 20 and 23) that emerges in with the base4 representation.

Framework organization

The framework can be used as simple standard interface for a set of SFC algorithms, like Hilbert, Morton or other.

The algorithms themselves are "concrete classes". But the standardization of basic methods, such as endode() and decode(), is not the issue, there are a lot of generic and reusable methods, so the best way is to extend a generic class with these reusable methods, and implement the concrete algorithm as specialization. This project is a set of abstract and concrete classes.

Other important issue for SFC-4q is the generalization for "half levels" described in this PDF article. It is also independent of the concrete algorithms. The illustration bellou is hou these classes uas implemented:

  • GSfc4q: the "Generalized Sfc4q" class.

  • GSfc4qLbl: a generaliation of GSfc4q, to translate key, bkey and cell identifiers (cell IDs) into human-readable labels (lbl). To preserve hierarchy, this translation uses the concept of Natural Codes, implemented in Javascript by the class SizedBigInt.

  • GSfc4qLbl_Hilbert: the "concrete class" that implements the Hilbert curve.

  • GSfc4qLbl_Morton:the "concrete class" that implements the Morton curve (also Z-order curve).

  • SizedBigInt: it is a complementar tool for use BigInt (mainly 64 bits unsigned integers) as hierarchical indexes and obtain its string representations, and an implementation of the Natural Codes.

See classes documentation.

The grid and D3 peparation classes

LICENSE

Content, data and algorithms: CC0 1.0, Public Domain Dedication.

License: CC0