GeoSOT球面經緯度剖分網格編碼/解碼算法開源實現


該庫基於.NET Core實現,已開源在GitHub上,地址如下:

dadream/geosot​github.com

實現[GeoSOT][1]球面經緯度剖分Tile的編碼/解碼算法.

功能特性:
1 支持從度分秒經緯度構建剖分塊對象;
2 支持從SOT一維編碼構建剖分塊對象;
3 支持剖分塊特征角點坐標計算;
4 支持剖分塊范圍四至計算;
5 支持剖分塊層、行、列號計算

示例 1: 從DMS經緯度構建Tile對象

var dms = "39° 54' 37.0098\" N, 116° 18' 54.8198\" E";  
var _tile = new Tile(dms, 15);  
Console.WriteLine(_tile.ToString());  
// print G001310322-230230

示例 2: 從編碼構建Tile對象

var 1dCode = "G001110221-021123-021123.02203010012";  
var _tile = new Tile(1dCode);  
Console.WriteLine(_tile.ToString());  
// print "G001110221-021123-021123.02203010012"  

示例 3: 特征角點坐標獲取

var dms = "39° 54' 37.0098\" N, 116° 18' 54.8198\" E";  
var _tile = new Tile(dms, 15);  
Console.WriteLine(_tile.CornerLng);  
Console.WriteLine(_tile.CornerLat);  
// print 116.3 39.9  

示例 4: 范圍四至計算

var dms = "39° 54' 37.0098\" N, 116° 18' 54.8198\" E";  
var _tile = new Tile(dms, 15);  
Console.WriteLine(_tile.GetBbox().ToString());  
// print 116.3 39.9 116.316667 39.916667  

示例 5: 層、行、列號計算

var dms = "39° 54' 37.0098\" N, 116° 18' 54.8198\" E";  
var _tile = new Tile(dms, 15);  
Console.WriteLine(_tile.Level);  
Console.WriteLine(_tile.X);  
Console.WriteLine(_tile.Y);  
// print 15 7442 2550  

[1]: 論文引用:GeoSOT:基於2^n及整型一維數組的全球經緯度剖分網格(Geo-graphical coordinates subdividing grid with one dimension integral coding on 2n-Tree)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM