測繪中各種座標系:
將某點投影到橢球面上的位置用大地經緯度l和大地緯度表示b,(b,l,h)
2.空間直角座標系:以橢球體中心為原點,起始子午面與赤道面為x軸,在赤道面上與x軸正交的方向為y軸,橢球體的旋轉軸為z軸
某點位置用(x,y,z)表示
3.平面直角座標系:通過高斯投影到平面上,以x軸為縱軸,y軸為橫軸的平面直角座標系表示(x,y)
大地座標系---->空間直角座標系:
/// /// 大地座標轉空間直角座標空間直角座標----->大地座標系:///
/// 大地座標(度)
/// 空間直角座標(公尺)
public spacepoint blh_xyz(geodeticpoint geodeticpoint)
/// /// 空間直角座標轉大地座標大地座標--->平面直角座標(高斯正算):///
/// 空間直角座標(公尺)
/// 大地座標(度)
public geodeticpoint xyz_blh(spacepoint spacepoint)
while (math.abs(b[j - 1] - b[j - 2]) > 0.0000000001);
double blh = new double[3];
blh[0] = b[j - 1];
blh[1] = math.atan(y / x);
if (x < 0)
blh[2] = r / math.cos(blh[0]) - n;
blh[0] = blh[0] * 180 / math.pi;
blh[1] = blh[1] * 180 / math.pi;
geodeticpoint.b = blh[0];
geodeticpoint.l = blh[1];
geodeticpoint.h = blh[2];
geodeticpoint.name = spacepoint.name;
geodeticpoint.property = spacepoint.property;
return geodeticpoint;
}
1view code///2
///大地座標blh轉平面座標xyh
3///
4///
**子午線(度)
5///
大地座標(度)
6///
平面座標(公尺 y=y+500000)
7public planepoint blh_xyh(double
_l0, geodeticpoint geodeticpoint)
8
平面直角座標---->大地座標(高斯反算)
//////平面座標xyh(公尺 y=y+500000)轉大地座標blh(度)----同一基準
/// ///
**子午線(度)
///平面座標點(公尺 y=y+500000)
///大地座標(度)
public geodeticpoint xyh_blh(double
_l0, planepoint planepoint)
double
k1, k2, k3;
k1 = 2.0 * b11[5] + 4.0 * r11[5] + 6.0 * d11[5
]; k2 = -8.0 * r11[5] - 32.0 * d11[5
]; k3 = 32.0 * d11[5
];
double y = planepoint.y - 500000.0
;
double x =planepoint.x;
double
bf, tf, y2, vf2, nf, m1, mb;
bf = x /a1;
bf = bf + math.cos(bf) * math.sin(bf) * (k1 + math.sin(bf) * math.sin(bf) * (k2 + math.sin(bf) * math.sin(bf) *k3));
tf =math.tan(bf);
y2 = x2 / (1 - x2) * math.cos(bf) *math.cos(bf);
vf2 = 1.0 + x2 / (1.0 - x2) * math.cos(bf) *math.cos(bf);
nf = c /math.sqrt(vf2);
m1 = y /nf;
mb = (y / nf) * (y /nf);
double
b, l;
b = bf - mb * vf2 * tf / 2.0 + mb * mb * vf2 * tf / 24.0 * (5.0 + 3.0 * tf * tf + y2 - 9.0 * y2 * tf * tf) - mb * mb * mb * vf2 * tf / 720.0 * (61.0 + (90.0 + 45.0 * tf * tf) * tf *tf);
l = m1 / math.cos(bf) - m1 * m1 * m1 / 6.0 / math.cos(bf) * (1.0 + y2 + 2.0 * tf * tf) + m1 * mb * mb / 120.0 / math.cos(bf) * (5.0 + (6.0 + 8.0 * tf * tf) * y2 + (28.0 + 24.0 * tf * tf) * tf *tf);
l = l + _l0 * pi / 180.0
; elloipsoidpoint.b = b * 180.0 /pi;
elloipsoidpoint.l = l * 180.0 /pi;
elloipsoidpoint.h =planepoint.h;
elloipsoidpoint.name =planepoint.name;
elloipsoidpoint.property =planepoint.property;
return
elloipsoidpoint;
}
一些關於座標的轉換
世界空間中的點座標轉換到螢幕座標 screenpos recttransformutility.worldtoscreenpoint cam,worldpos.transform.position ugui物體的座標轉換到螢幕座標 screenpos recttransformutility.wor...
唯一座標轉換問題
現在有乙個二維座標組成的陣列,例如 0,7 8,10 12,19 13,15 2,9 19,22 25,27 30,33 這些座標可以按照以下規則進行轉換,例如 1.座標之間可以組成連續的座標,則這些座標可以轉化為乙個座標,0,7 8,10 0,10 2.座標之間存在包含關係,則這些座標可以轉換為乙...
行列轉換的另一種形式
在實際做專案的時候遇到這樣乙個問題 資料庫表裡儲存了每個火車站每種型別的火車票銷售數量,但是有的火車站可能不銷售動車票或者高鐵票,最終的結果要如圖2所示,不銷售型別的火車票就空出來。本文採用master.dbo.spt values動態生成最大數目的列頭,然後採用case when實現每種型別的火車...