Beispiel #1
0
        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);
        }
Beispiel #2
0
        //默认的参考
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        /// <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);
            }
        }