Coo*_*der 5 javascript c# standards
我有一些javascript代码,我想将其转换为C#.我不知道构造它的最佳方法,或者是否有一种简单的方法来转换代码.
此代码的示例如下所示.
// ellipse parameters
var e = { WGS84: { a: 6378137, b: 6356752.3142, f: 1/298.257223563 },
Airy1830: { a: 6377563.396, b: 6356256.910, f: 1/299.3249646 },
Airy1849: { a: 6377340.189, b: 6356034.447, f: 1/299.3249646 } };
// helmert transform parameters
var h = { WGS84toOSGB36: { tx: -446.448, ty: 125.157, tz: -542.060, // m
rx: -0.1502, ry: -0.2470, rz: -0.8421, // sec
s: 20.4894 }, // ppm
OSGB36toWGS84: { tx: 446.448, ty: -125.157, tz: 542.060,
rx: 0.1502, ry: 0.2470, rz: 0.8421,
s: -20.4894 } };
function convertOSGB36toWGS84(p1) {
var p2 = convert(p1, e.Airy1830, h.OSGB36toWGS84, e.WGS84);
return p2;
}
Run Code Online (Sandbox Code Playgroud)
完整代码可以从以下网址下载: Javascript网格代码
编辑:谢谢大家的帮助; 我想第二个要求是可以转换链接中代码的提醒.该片段的重点是匿名类型.
您的JavaScript代码段正在创建匿名类型.您可以在C#中执行相同的操作:
var e = new
{
WGS84 = new { a = 6378137, b = 6356752.3142, f = 1 / 298.257223563 },
Airy1830 = new { a = 6377563.396, b = 6356256.910, f = 1 / 299.3249646 },
Airy1849 = new { a = 6377340.189, b = 6356034.447, f = 1 / 299.3249646 }
};
var h = new
{
WGS84toOSGB36 = new
{
tx = -446.448, ty = 125.157, tz = -542.060, // m
rx = -0.1502, ry = -0.2470, rz = -0.8421, // sec
s = 20.4894 // ppm
},
OSGB36toWGS84 = new
{
tx = 446.448,
ty = -125.157,
tz = 542.060,
rx = 0.1502,
ry = 0.2470,
rz = 0.8421,
s = -20.4894
}
};
Run Code Online (Sandbox Code Playgroud)
JavaScript使用匿名类型.您可以在C#中执行相同操作,但使用命名类型会更清楚.
例如,像这样的JavaScript:
// ellipse parameters
var e = { WGS84: { a: 6378137, b: 6356752.3142, f: 1/298.257223563 },
Airy1830: { a: 6377563.396, b: 6356256.910, f: 1/299.3249646 },
Airy1849: { a: 6377340.189, b: 6356034.447, f: 1/299.3249646 } };
Run Code Online (Sandbox Code Playgroud)
..代表省略号.您可以在C#中执行此操作,如下所示:
// ellipse class
public class EllipseParameters {
public double a {get; set;}
public double b {get; set;}
public double f {get; set;}
}
public Ellipses {
public EllipseParameters WGS84 {get;set;}
public EllipseParameters Airy1830 {get;set;}
public EllipseParameters Airy1849 {get;set;}
}
Ellipses e = new Ellipses {
WGS84 = new EllipseParameters { a = 6378137, b= 6356752.3142, f = 1/298.257223563 },
Airy1830 = new EllipseParameters { a= 6377563.396, b= 6356256.910, f= 1/299.3249646 },
Airy1849 = new EllipseParameters { a= 6377340.189, b= 6356034.447, f= 1/299.3249646 }
};
Run Code Online (Sandbox Code Playgroud)
但是代替Ellipses类,您可能需要一个字典方法,如下所示:
var e = new Dictionary<String,EllipseParameters>();
e.Add("WGS84", new EllipseParameters { a = 6378137, b= 6356752.3142, f = 1/298.257223563 });
e.Add("Airy1830", new EllipseParameters { a= 6377563.396, b= 6356256.910, f= 1/299.3249646 });
e.Add("Airy1849", new EllipseParameters { a= 6377340.189, b= 6356034.447, f= 1/299.3249646 });
Run Code Online (Sandbox Code Playgroud)
您将使用与helmert转换类相同的方法.
我工作的公司刚刚开源了一个库来做到这一点: http: //code.google.com/p/geocoordconversion/
| 归档时间: |
|
| 查看次数: |
15650 次 |
| 最近记录: |