// // ogc-spatial.idl // // Spatial reference definitions from the OpenGIS Simple Features // Specification for CORBA. // // // Taken from the PDF document _OpenGIS(R) Simple Features // Specification For CORBA_, Revision 1.1, dated June 2, 1999. // // Separated major sections into separate files in order to support // greater flexibility in the use of the module. // // Minor modifications made to restore readability after extraction // from the PDF document and to satisfy the TAO 1.4.6 IDL compiler. // // The aforementioned specification contains the following copyright // claims: // // Copyright 1997, 1998, 1999 Bentley Systems, Inc. // Copyright 1997, 1998, 1999 Environmental Systems Research Institute // Copyright 1997, 1998, 1999 Genasys II, Inc. // Copyright 1997, 1998, 1999 Oracle Corporation // Copyright 1997, 1998, 1999 University of California, Los Angeles. // Copyright 1997, 1998, 1999 Sun Microsystems, Inc. // // See the aforementioned specification for disclaimers and more // information. // // // Chuck Taylor, September 20, 2005. // // #ifndef _OGIS_SPATIAL_IDL_ #define _OGIS_SPATIAL_IDL_ #include "ogis-struct.idl" module OGIS { //---------------------------------------------------------------------- // Spatial Reference Systems //---------------------------------------------------------------------- //---------------------------------------------------------------------- // SpatialReferenceInfo //---------------------------------------------------------------------- interface SpatialReferenceInfo { attribute string name; attribute string authority; attribute long code; attribute string alias; attribute string abbreviation; attribute string remarks; readonly attribute string well_known_text; }; //---------------------------------------------------------------------- // Unit interface //---------------------------------------------------------------------- interface Unit : SpatialReferenceInfo { }; //---------------------------------------------------------------------- // AngularUnit interface //---------------------------------------------------------------------- interface AngularUnit : Unit { attribute double radians_per_unit; }; //---------------------------------------------------------------------- // LinearUnit interface //---------------------------------------------------------------------- interface LinearUnit : Unit { attribute double metres_per_unit; }; //---------------------------------------------------------------------- // Ellipsoid interface //---------------------------------------------------------------------- interface Ellipsoid : SpatialReferenceInfo { attribute double semi_major_axis; attribute double semi_minor_axis; attribute double inverse_flattening; attribute LinearUnit axis_unit; }; //---------------------------------------------------------------------- // HorizontalDatum interface //---------------------------------------------------------------------- interface HorizontalDatum : SpatialReferenceInfo { attribute Ellipsoid base_ellipsoid; }; //---------------------------------------------------------------------- // PrimeMeridian interface //---------------------------------------------------------------------- interface PrimeMeridian : SpatialReferenceInfo { attribute double longitude; attribute AngularUnit angular_units; }; //---------------------------------------------------------------------- // SpatialReferenceSystem interface //---------------------------------------------------------------------- interface SpatialReferenceSystem : SpatialReferenceInfo { }; //---------------------------------------------------------------------- // GeodeticSpatialReferenceSystem interface //---------------------------------------------------------------------- interface GeodeticSpatialReferenceSystem : SpatialReferenceSystem { }; //---------------------------------------------------------------------- // GeographicCoordinateSystem interface //---------------------------------------------------------------------- interface GeographicCoordinateSystem : GeodeticSpatialReferenceSystem { attribute string usage; // description? attribute HorizontalDatum horizontal_datum; attribute AngularUnit angular_unit; attribute PrimeMeridian prime_meridian; }; //---------------------------------------------------------------------- // Parameter interface //---------------------------------------------------------------------- interface Parameter : SpatialReferenceInfo { attribute Unit units; attribute double value; }; typedef sequence ParameterSeq; //---------------------------------------------------------------------- // ParameterList interface //---------------------------------------------------------------------- interface ParameterList { readonly attribute long number_parameters; ParameterSeq get_default_parameters(); void set_parameters (in ParameterSeq parameters); ParameterSeq get_parameters (); }; //---------------------------------------------------------------------- // GeographicTransform interface //---------------------------------------------------------------------- interface GeographicTransform : SpatialReferenceInfo { attribute GeographicCoordinateSystem source_gcs; attribute GeographicCoordinateSystem target_gcs; WKSGeometry forward (in WKSGeometry source_geometry); WKSGeometry inverse (in WKSGeometry source_geometry); }; //---------------------------------------------------------------------- // Projection interface //---------------------------------------------------------------------- interface Projection : SpatialReferenceInfo { readonly attribute string usage; readonly attribute string classification; WKSGeometry forward (in WKSGeometry source_geometry); WKSGeometry inverse (in WKSGeometry source_geometry); readonly attribute ParameterList parameters; attribute AngularUnit angular_units; attribute LinearUnit linear_units; attribute Ellipsoid base_ellipsoid; }; //---------------------------------------------------------------------- // ProjectedCoordinateSystem interface //---------------------------------------------------------------------- interface ProjectedCoordinateSystem : GeodeticSpatialReferenceSystem { attribute string usage; attribute GeographicCoordinateSystem geographic_coordinate_system; attribute LinearUnit linear_units; attribute Projection base_projection; readonly attribute ParameterList parameters; WKSGeometry forward (in WKSGeometry source_geometry); WKSGeometry inverse (in WKSGeometry source_geometry); }; //---------------------------------------------------------------------- // SpatialReferenceSystemFactory interface //---------------------------------------------------------------------- interface SpatialReferenceSystemFactory { SpatialReferenceSystem create_from_WKT (in string srs_wkt); }; //---------------------------------------------------------------------- // SpatialReferenceComponentFactory interface //---------------------------------------------------------------------- interface SpatialReferenceComponentFactory { readonly attribute string authority; ProjectedCoordinateSystem create_projected_coordinate_system ( in long code); GeographicCoordinateSystem create_geographic_coordinate_system ( in long code); Projection create_projection (in long code); GeographicTransform create_geographic_transform (in long code); HorizontalDatum create_horizontal_datum (in long code); Ellipsoid create_ellipsoid (in long code); PrimeMeridian create_prime_meridian (in long code); LinearUnit create_linear_unit (in long code); AngularUnit create_angular_unit (in long code); }; }; // End OGIS Module #endif // _OGIS_SPATIAL_IDL_