Bug Number | NIM100236 |
Submitted | Mar 26, 2014 |
Modified | Jun 11, 2020 |
Severity | High |
Applies To | ArcGIS for Desktop |
Version Found | 10.2.1 |
Prog Language | All |
Server Platform | |
Client Platform | |
Database | N/A |
Locale | N/A |
Status | Not in Current Product Plan |
Version Fixed | |
SP Fixed |
Bug NIM100236
Synopsis
The IGeographicCoordinateSystemEdit.Define method fails on defined spatial references, and is making the geographic system object with empty properties.
Additional Information
Projecting a point from one GCS to another normalizes coordinates to +-180 range (left longitude + 360)
Alternate Solution
Use the Define method on a new geographic coordinate system object. This does not make the properties blank.
Sample Code:
Public Sub CustomGCS()
'create a new spatial regernce factory
Dim pSRF As ISpatialReferenceFactory2
Set pSRF = New SpatialReferenceEnvironment
'create a new WGS 1984 coordinate system for providing inputs
Dim pInPutGC As IGeographicCoordinateSystem2
Set pInPutGC = pSRF.CreateGeographicCoordinateSystem(esriSRGeoCS_WGS1984)
'create a new geographic coridnate system
Dim pOutputGC As IGeographicCoordinateSystem2
Dim pGCS As IGeographicCoordinateSystemEdit
Set pOutputGC = New GeographicCoordinateSystem
'set the new coordinate system to IGeographicCoordinateSystemEdit to define custom projections
Set pGCS = pOutputGC
'Define custom projection by providing inputs
pGCS.Define <a href="http://pInPutGC.Name" target="_blank">pInPutGC.Name</a>, pInPutGC.Alias, pInPutGC.Abbreviation, pInPutGC.Remarks, pInPutGC.Usage, pSRF.CreateDatum(esriSRDatumType.esriSRDatum_Abidjan1987), pInPutGC.PrimeMeridian, pInPutGC.CoordinateUnit
Debug.Print "START"
Debug.Print <a href="http://pOutputGC.Name" target="_blank">pOutputGC.Name</a>
Debug.Print pOutputGC.Abbreviation
Debug.Print pOutputGC.Alias
Debug.Print pOutputGC.CoordinateUnit.FactoryCode
Debug.Print pOutputGC.Datum.FactoryCode
Debug.Print pOutputGC.FactoryCode
Debug.Print pOutputGC.LeftLongitude(True)
Debug.Print pOutputGC.PrimeMeridian.FactoryCode
Debug.Print pOutputGC.RightLongitude(True)
Debug.Print "END"
End Sub