我在互联网上搜索,但只找到一些关于如何转换纬度和频率的信息。经度莫顿码(z阶曲线)。 从the link我知道如何将两个int赋予Morton Code。 但是,如果我有浮动值,如纬度或经度,我应该如何将浮点值转换为int?然后我可以将int转换为Morton代码。 例如,c#代码:
float value a=43.2345f;
int aint1=43.2345*10000;
int aint2=(int)BitConverter.DoubleToInt64Bits(43.2345);
在这里,我不知道应该选择哪一个。请你帮助我好吗? 我找不到像'BitConverter.FloatToInt32Bits'这样的方法。截至目前,我不知道原因。
Upate 1: 我找到了答案here,但我不太明白答案。
答案 0 :(得分:1)
我花了一些时间寻找这个问题的答案。似乎空间曲线(z-顺序曲线,希尔伯特曲线等)需要建立在正整数上,这是一个问题,因为lat / lon可以是负浮点数。
找到了几个解决方案转换为正整数的项目,例如:
// lat: -90 .. +90
var iLat = Math.round((lat + 90.0) * 100000); // 5 digits
// lng: -180 .. +180
var iLng = Math.round((lng + 180.0) * 100000); // 6 digits
转换为int后,将一些转换整数转换为位数组并在这些值上构建曲线,而其他只是使用整数表示来构建曲线。我想曲线的大空间长度可能太大而不适合整数,这就是使用数组的原因。但是,我仍在调查。