Dealul Piscului 1970转WGS84坐标异常问题求助
罗马尼亚Dealul Piscului 1970坐标系转WGS-84的问题
需要将罗马尼亚过时的Dealul Piscului 1970坐标系下的多边形转换为WGS-84坐标系,使用.NET的projnet类库转换时,几何形状正确但位置完全错误。
现有转换代码
string wkt25831 = "PROJCS[\"Dealul Piscului 1970/ Stereo 70\",GEOGCS[\"Dealul Piscului 1970\",DATUM[\"Dealul_Piscului_1970\",SPHEROID[\"Krassowsky 1940\",6378245,298.3],TOWGS84[28,-121,-77,0,0,0,0]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4317\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER[\"latitude_of_origin\",46],PARAMETER[\"central_meridian\",25],PARAMETER[\"scale_factor\",0.99975],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"31700\"]]"; var gcsWgs84 = GeographicCoordinateSystem.WGS84; var cf = new CoordinateSystemFactory(); var f = new ProjNet.CoordinateSystems.Transformations.CoordinateTransformationFactory(); var sys32639 = cf.CreateFromWkt(wkt25831); var transformTo3857 = f.CreateFromCoordinateSystems(sys32639, gcsWgs84); double[] fromPoint = { latitude, longitude }; double[]? xy = transformTo3857.MathTransform.Transform(fromPoint); return new CoordinatePoint(xy[0], xy[1]);
注:忽略部分字段名称的编号错误,本人对该领域较陌生
错误现象
测试坐标:longitude: 605057.24196916714,latitude: 361091.237746394
- 代码转换结果:
long: 46.930562111606726,lat: 23.173950579639786 - 正确结果:
long: 26.325139519105466,lat: 44.741816543663873
偏差极大,转换后的多边形不在罗马尼亚,反而位于卢森堡附近。
其他尝试
- 使用epsg.io的1970坐标系XML创建坐标系时,抛出未实现异常
- 在线转换工具可得到正确结果
咨询问题
- 是否可通过projnet解决该问题?
- 若projnet无法解决,是否有手动计算的方法实现坐标转换得到WGS84坐标?
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

