/// <summary> /// 根据srid创建Projection /// </summary> /// <param name="srid"></param> /// <returns></returns> public static Crs CreateBySrid(int srid) { var coordSys = SridReader.GetCSbyID(srid); if (coordSys != null) { return(new Crs(coordSys)); } return(null); }
/// <summary> /// Gets a coordinate system from the SRID.csv file /// </summary> /// <param name="id">EPSG ID</param> /// <returns>Coordinate system, or null if SRID was not found.</returns> public static ICoordinateSystem GetCSbyID(int id) { //TODO: Enhance this with an index so we don't have to loop all the lines ICoordinateSystemFactory fac = new CoordinateSystemFactory(); foreach (SridReader.WKTstring wkt in SridReader.GetSRIDs()) { if (wkt.WKID == id) { return(ProjNet.Converters.WellKnownText.CoordinateSystemWktReader.Parse(wkt.WKT) as ICoordinateSystem); } } return(null); }
public void SetUp() { // These files (path 1 and 2 below) do not have to exist regarding the tests they are used. readerForFilePath1 = new SridReader(@"C:\temp\file1.csv"); readerForFilePath2 = new SridReader(@"C:\temp\file2.csv"); readerForEmbeddedResource1 = new SridReader(new List <EmbeddedResourceFileWithCRSdefinitions> { EmbeddedResourceFileWithCRSdefinitions.STANDARD_FILE_SHIPPED_WITH_ProjNet }); readerForEmbeddedResource2 = new SridReader(new List <EmbeddedResourceFileWithCRSdefinitions> { EmbeddedResourceFileWithCRSdefinitions.SIX_SWEDISH_RT90_CRS_DEFINITIONS_COPIED_FROM_SharpMap_SpatialRefSys_xml }); readerForEmbeddedResource3 = new SridReader(new List <EmbeddedResourceFileWithCRSdefinitions> { EmbeddedResourceFileWithCRSdefinitions.STANDARD_FILE_SHIPPED_WITH_ProjNet, EmbeddedResourceFileWithCRSdefinitions.SIX_SWEDISH_RT90_CRS_DEFINITIONS_COPIED_FROM_SharpMap_SpatialRefSys_xml }); }
private void TestSridReaderForEpsgNumber( int epsgNumber, string expectedInitialPartOfWellKnownTextString ) { var listWithOnlyTheStandardFile = new List <EmbeddedResourceFileWithCRSdefinitions> { EmbeddedResourceFileWithCRSdefinitions.STANDARD_FILE_SHIPPED_WITH_ProjNet }; var sridReader = new SridReader(listWithOnlyTheStandardFile); //sridReader = new SridReader(@"PATH_TO_FILE\crsTransformations-dotnet\Programmerare.CrsTransformations.Adapter.ProjNet\SRID_ShippedWithProjNet_2_0_0.csv"); CoordinateSystem crs = sridReader.GetCSbyID(epsgNumber); Assert.IsNotNull(crs); Assert.AreEqual( epsgNumber, crs.AuthorityCode ); Assert.That( crs.WKT, Does.StartWith(expectedInitialPartOfWellKnownTextString) ); }
protected void Button1_Click(object sender, EventArgs e) { lbOutput.Text = ""; int inSRID = 0; int outSRID = 0; if (!int.TryParse(tbSRIDin.Text, out inSRID)) { WriteError("Invalid SRID input number."); return; } if (!int.TryParse(tbSRIDout.Text, out outSRID)) { WriteError("Invalid SRID output number."); return; } //Get input coordinate system by ID from CSV dataset ICoordinateSystem csIn = SridReader.GetCSbyID(inSRID); if (csIn == null) { WriteError("Unknown input SRID."); return; } //Get output coordinate system by ID from CSV dataset ICoordinateSystem csOut = SridReader.GetCSbyID(outSRID); if (csOut == null) { WriteError("Unknown output SRID."); return; } //Create coordinate transformation instance ICoordinateTransformation trans = null; try { trans = new CoordinateTransformationFactory().CreateFromCoordinateSystems(csIn, csOut); } catch (System.Exception ex) { WriteError(ex.Message); return; } lbOutput.Text += "<b>Input CS:</b>"; WriteCoordSys(csIn); lbOutput.Text += "<b>Output CS:</b>"; WriteCoordSys(csOut); string points = tbPoints.Text; lbOutput.Text += "<b>Transformed points:</b><br/>"; foreach (string line in points.Split('\n')) { //Parse each line and transform the points. string[] vals = line.Split(','); if (vals.Length < 2) { continue; } double x = 0; double y = 0; if (!double.TryParse(vals[0], System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out x)) { WriteError("Error parsing X", true); continue; } if (!double.TryParse(vals[1], System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out y)) { WriteError("Error parsing Y", true); continue; } try { ///Perform transformation double[] result = trans.MathTransform.Transform(new double[] { x, y }); lbOutput.Text += String.Format(System.Globalization.CultureInfo.InvariantCulture, "{0} , {1}<br/>", result[0], result[1]); } catch (System.Exception ex) { WriteError(ex.Message, true); } } }