在用GDAL创建SHP文件时,用SpatialReference类创建的坐标系统,在升成时会有一个PRJ文件,但是该文件在用ARCGIS不会被识别,原因为ARCGIS版本不一样所识别的文件也不一样)采用另外一种方法,直接升成PRJ文件,该文件必须要按照ASCII码升成,否则ARCGIS不识别
思路,用坐标取带号,该方法只对带上带号的2000高期吕克坐标系有用。
int dh = Convert.ToInt16(zb[0].X.ToString().Substring(0, 2));
string wkt =
"PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone"+dh.ToString() +"\"," +
"GEOGCS[\"China Geodetic Coordinate System 2000\"," +
"DATUM[\"China_2000\"," +
"SPHEROID[\"CGCS2000\",6378137.0,298.257222101]]," +
"PRIMEM[\"Greenwich\",0.0]," +
"UNIT[\"Degree\",0.0174532925199433]]," +
"PROJECTION[\"Gauss_Kruger\"]," +
"PARAMETER[\"False_Easting\","+dh.ToString()+"500000.0]," +
"PARAMETER[\"False_Northing\",0.0]," +
"PARAMETER[\"Central_Meridian\","+(dh*3).ToString("F1")+"]," +
"PARAMETER[\"Scale_Factor\",1.0]," +
"PARAMETER[\"Latitude_of_Origin\",0.0]," +
"UNIT[\"Metre\",1.0]]";
string prjPath = zdPath + @"\ZD.prj";
using (StreamWriter write = new StreamWriter(prjPath, false, Encoding.ASCII))
{
write.WriteLine(wkt);
}
最重要是升成PRJ该文件必须是ASCII码升成,否则ARCGIS不会识别,以上代码在ARCGIS10.6中实测通过。