Description:
Quadkey is a type of geocoding system. Quadkey has the following advantages and disadvantages over GeoHash.
[Advantages]
- The shape of the cord mesh is correctly square. Geodetic datum is WGS84.
(Geohash: The shape of the cord mesh is rectangular.)
- Easy to adjust accuracy. When it is one level below the code mesh, it is divided into 4.
(Geohash: When it is one level below the code mesh, it is divided into 32.)
- Easy acquisition logic for neighboring code mesh.
- Easy distance calculation of code mesh area.
[Disadvantages]
- Longer code size(In the same accuracy, approximately 2.5 times)
I think "Longer code size" is not a big issue. Therefore, I want MySQL to implement a Spatial function that can handle not only GeoHash but also Quadkey.
Note1:
Tile Coordinates and Quadkeys
https://docs.microsoft.com/en-us/bingmaps/articles/bing-maps-tile-system#tile-coordinates-...
Note2:
This article is written in Japanese, but explains the differences between GeoHash and Quadkey. In addition, this article summarizes the search times for point data that are within a 10km radius regarding following 5 patterns.(This article poted on Jun 2015.)
Spatial radius search with one-dimensional hash code
https://qiita.com/kochizufan/items/2fe5f4c9f74636d22ddb
5 patterns
1. MBWithin() with MyISAM
2. quadkey with MyISAM
3. GeoHash with MyISAM
4. quadkey with InnoDB
5. GeoHash with InnoDB
How to repeat:
N/A
Suggested fix:
Add following Spatial functions.
- ST_Quadkey()
- ST_PointFromQuadkey()
- ST_LatFromQuadkey()
- ST_LongFromQuadkey()