/// <summary>
        /// create a crazy coordinate system
        /// </summary>
        /// <returns></returns>
        private ISpatialReference CreateGeographicSpatialReference()
        {
            ISpatialReferenceFactory    spatialRefFatcory = new SpatialReferenceEnvironmentClass();
            IGeographicCoordinateSystem geoCoordSys;

            geoCoordSys = spatialRefFatcory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);

            //assign a user defined datum to the SR (just for the test)
            IDatum     datum     = new DatumClass();
            IDatumEdit datumEdit = (IDatumEdit)datum;
            ISpheroid  spheroid  = spatialRefFatcory.CreateSpheroid((int)esriSRSpheroidType.esriSRSpheroid_Clarke1880);

            datumEdit.DefineEx("MyDatum", "My Datum", "MDTM", "", spheroid);

            IPrimeMeridian primeMeridian = spatialRefFatcory.CreatePrimeMeridian((int)esriSRPrimeMType.esriSRPrimeM_Greenwich);
            IAngularUnit   angularUnits  = spatialRefFatcory.CreateUnit((int)esriSRUnitType.esriSRUnit_Degree) as IAngularUnit;
            IGeographicCoordinateSystemEdit geoCoordSysEdit = (IGeographicCoordinateSystemEdit)geoCoordSys;

            geoCoordSysEdit.DefineEx("MyGeoCoordSys", "MyGeoCoordSys", "MGCS", "", "", datum, primeMeridian, angularUnits);

            geoCoordSys.SetFalseOriginAndUnits(-180.0, -180.0, 5000000.0);
            geoCoordSys.SetZFalseOriginAndUnits(0.0, 100000.0);
            geoCoordSys.SetMFalseOriginAndUnits(0.0, 100000.0);

            return(geoCoordSys as ISpatialReference);
        }
Exemplo n.º 2
0
        private void  CreateGeographicCoordinateSystem()
        {
            ISpatialReferenceFactory3 spatialReferenceFactory = new SpatialReferenceEnvironmentClass();
            IDatum         datum         = spatialReferenceFactory.CreateDatum((int)esriSRDatumType.esriSRDatum_OSGB1936);
            IPrimeMeridian primeMeridian = spatialReferenceFactory.CreatePrimeMeridian((int)esriSRPrimeMType.esriSRPrimeM_Greenwich);
            IUnit          unit          = spatialReferenceFactory.CreateUnit((int)esriSRUnitType.esriSRUnit_Degree);
            IGeographicCoordinateSystemEdit geographicCoordinateSystemEdit = new GeographicCoordinateSystemClass();
            object name                = "UserDefined Geographic Coordinate System";
            object alias               = "UserDefined GCS";
            object abbreviation        = "UserDefined";
            object remarks             = "User Defined Geographic Coordinate System based on OSGB1936";
            object usage               = "Suitable for the UK";
            object datumObject         = datum as object;
            object primeMeridianObject = primeMeridian as object;
            object unitObject          = unit as object;

            geographicCoordinateSystemEdit.Define(ref name, ref alias, ref abbreviation, ref remarks, ref usage, ref datumObject, ref primeMeridianObject, ref unitObject);
            IGeographicCoordinateSystem userDefinedGeographicCoordinateSystem = geographicCoordinateSystemEdit as IGeographicCoordinateSystem;


            m_map.SpatialReference = userDefinedGeographicCoordinateSystem;
            m_activeView.Refresh();
            MessageBox.Show("已将当前坐标系统转换为自定义GeographicCoordinateSystem!");
        }
    /// <summary>
    /// create a crazy coordinate system
    /// </summary>
    /// <returns></returns>
    private ISpatialReference CreateGeographicSpatialReference()
    {
      ISpatialReferenceFactory spatialRefFatcory = new SpatialReferenceEnvironmentClass();
      IGeographicCoordinateSystem geoCoordSys;
      geoCoordSys = spatialRefFatcory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);

      //assign a user defined datum to the SR (just for the test)
      IDatum datum = new DatumClass();
      IDatumEdit datumEdit = (IDatumEdit)datum;
      ISpheroid spheroid = spatialRefFatcory.CreateSpheroid((int)esriSRSpheroidType.esriSRSpheroid_Clarke1880);
      datumEdit.DefineEx("MyDatum", "My Datum", "MDTM", "", spheroid);

      IPrimeMeridian primeMeridian = spatialRefFatcory.CreatePrimeMeridian((int)esriSRPrimeMType.esriSRPrimeM_Greenwich);
      IAngularUnit angularUnits = spatialRefFatcory.CreateUnit((int)esriSRUnitType.esriSRUnit_Degree) as IAngularUnit;
      IGeographicCoordinateSystemEdit geoCoordSysEdit = (IGeographicCoordinateSystemEdit)geoCoordSys;
      geoCoordSysEdit.DefineEx("MyGeoCoordSys", "MyGeoCoordSys", "MGCS", "", "", datum, primeMeridian, angularUnits);

      geoCoordSys.SetFalseOriginAndUnits(-180.0, -180.0, 5000000.0);
      geoCoordSys.SetZFalseOriginAndUnits(0.0, 100000.0);
      geoCoordSys.SetMFalseOriginAndUnits(0.0, 100000.0);

      return geoCoordSys as ISpatialReference;
    }