private void CustomGT() { // Initialize a new spatial reference environment. // SpatialReferenceEnvironment is a singleton object and needs to use the Activator class. Type factoryType = Type.GetTypeFromProgID("esriGeometry.SpatialReferenceEnvironment"); System.Object obj = Activator.CreateInstance(factoryType); ISpatialReferenceFactory2 pSRF = obj as ISpatialReferenceFactory2; // Initialize and create the input and output coordinate systems. IProjectedCoordinateSystem2 pPCSin = new ESRI.ArcGIS.Geometry.ProjectedCoordinateSystemClass(); IProjectedCoordinateSystem2 pPCSout = new ESRI.ArcGIS.Geometry.ProjectedCoordinateSystemClass(); pPCSin = (IProjectedCoordinateSystem2)pSRF.CreateProjectedCoordinateSystem((int)esriSRProjCSType.esriSRProjCS_Abidjan1987UTM_30N); pPCSout = (IProjectedCoordinateSystem2)pSRF.CreateProjectedCoordinateSystem((int)esriSRProjCSType.esriSRProjCS_WGS1984UTM_30N); // Retrieve the geographic coordinate systems from the two projected // coordinate systems. IGeographicCoordinateSystem2 pGCSto = (IGeographicCoordinateSystem2)pPCSout.GeographicCoordinateSystem; IGeographicCoordinateSystem2 pGCSfrom = (IGeographicCoordinateSystem2)pPCSin.GeographicCoordinateSystem; // Initialize and create an appropriate geographic transformation. ICoordinateFrameTransformation pCFT = new CoordinateFrameTransformationClass(); pCFT.PutParameters(1.234, -2.345, 658.3, 4.3829, -2.48591, 2.18943, 2.48585); pCFT.PutSpatialReferences(pGCSfrom, pGCSto); pCFT.Name = "Custom GeoTran"; // The SpatialReferenceEnvironment has a GeoTransformationOperationSet that you // can use to maintain a list of active geographic transformations. // Once you add a geographic transformation to the operation set, many operations // can access the transformations. // Add the transformation to the operation set. IGeoTransformationOperationSet pGTSet = pSRF.GeoTransformationDefaults; // Always add a geographic transformation in both directions. pGTSet.Set(esriTransformDirection.esriTransformForward, pCFT); pGTSet.Set(esriTransformDirection.esriTransformReverse, pCFT); }
//默认的参考 private ISpatialReference spatialReference() { ISpatialReferenceFactory pSpatialReferenceEnvironemnt = new SpatialReferenceEnvironment(); ISpatialReferenceFactory2 pSpatialReferenceFactory2 = pSpatialReferenceEnvironemnt as ISpatialReferenceFactory2; ISpatialReference pSpatialReference = pSpatialReferenceFactory2.CreateSpatialReference(4326); //esriSRProjCS4Type //esriSRGeoCS3Type //esriSRDatum3Type return(pSpatialReference); }
//功能描述: 从PRJ文件获取投影坐标系统 //参数列表: prj (string) public static ISpatialReference LoadPRJ(string sPrj) { ISpatialReferenceFactory2 pSpatRefFact = default(ISpatialReferenceFactory2); //pSpatRefFact = new SpatialReferenceEnvironment(); pSpatRefFact = new SpatialReferenceEnvironmentClass(); ISpatialReference pSpatRef = default(ISpatialReference); pSpatRef = pSpatRefFact.CreateESRISpatialReferenceFromPRJFile(sPrj); return(pSpatRef); }
public FeatureHelper() { Type factoryType = Type.GetTypeFromProgID("esriGeometry.SpatialReferenceEnvironment"); System.Object obj = Activator.CreateInstance(factoryType); ISpatialReferenceFactory2 srf = obj as ISpatialReferenceFactory2; m_PCSout = new ESRI.ArcGIS.Geometry.ProjectedCoordinateSystemClass(); m_PCSout = (IProjectedCoordinateSystem2)srf.CreateProjectedCoordinateSystem((int)esriSRProjCS3Type.esriSRProjCS_WGS1984WebMercatorMajorAuxSphere); // 102100 is equivalent to esriSRProjCS_WGS1984WebMercatorMajorAuxSphere m_sr = new com.esri.ags.SpatialReference(102100); }
/// <summary> /// sets spatial reference for the map using SRS value in wmc /// </summary> /// <param name="ipMxDoc"></param> /// <param name="sSRS"></param> private void SetSpatialReference(IMxDocument ipMxDoc, string sSRS) { try { string sSpatRefID; // Spatial Reference ID // get spatial reference factory code from SRS (for example EPSG:NNNN - NNNN is the factory code) int iPos; sSRS = sSRS.Trim(); iPos = sSRS.IndexOf(":"); if (iPos > 0) { sSpatRefID = sSRS.Substring(iPos + 1); } else { sSpatRefID = sSRS; } int wkid = int.Parse(sSpatRefID); if (wkid != 0) { ISpatialReferenceFactory2 pSpatRefFactory = (ISpatialReferenceFactory2) new SpatialReferenceEnvironment(); ISpatialReference pSpatRef = pSpatRefFactory.CreateSpatialReference(wkid); if (pSpatRef != null) { // set spatial reference for the map ipMxDoc.FocusMap.SpatialReference = pSpatRef; } else { MessageBox.Show(StringResources.FailedSpatRef); } } } catch (Exception e) { logger.writeLog(e.StackTrace); } }