Welcome to the world of MicroStation Python! Understanding the Geographic Coordinate System (GCS) associated with your MicroStation model is crucial for accurate data analysis and processing. This wiki will guide you through extracting and exploring GCS details using Python scripting.
Let us dive into creating and extracting GCS data attached to a Model. Refer to the Python Manager wiki to create and load a python project. Name your project as “GCSInfo.py” and save it to your preferred directory. Open the project in the editor for writing your Python script.
The script begins by importing several modules offering functions and classes to interact with MicroStation and to create geometric elements.
from MSPyBentley import * from MSPyBentleyGeom import * from MSPyECObjects import * from MSPyDgnPlatform import * from MSPyDgnView import * from MSPyMstnPlatform import *
The main function of this script is GetGCSInformation().
def GetGCSInformation():
...
Let us break down its steps:
A MicroStation session may access many models. The following script gets the Active Model Reference from a session.
ACTIVEMODEL = ISessionMgr.ActiveDgnModelRef if ACTIVEMODEL is None: return False
Next, it attempts to obtain the DgnGCS object, associated with the active model. If successful, it prints various GCS properties like name, description, projection, EPSG code, datum information, and EPSG datum code.
DgnGCS object can be written to and read from a model. Internally, whenever a request is made for DgnGCS corresponding to a particular model, the GCS is retrieved from the file and associated with that model, so subsequent requests for that GCS are very efficient. For a comprehensive list of available DgnGCS parameters and their extraction methods, refer to the documentation, MicroStation Python API | DgnGCS.
dgn_gcs = DgnGCS.FromModel (ACTIVEMODEL, True) if (dgn_gcs is None): return False
The main function simply calls the GetGCSInformation() function and checks its return value.
Here is the complete script.
from MSPyBentley import * from MSPyBentleyGeom import * from MSPyECObjects import * from MSPyDgnPlatform import * from MSPyDgnView import * from MSPyMstnPlatform import * # GetGCSInformation function def GetGCSInformation(): # Get GCS attached to model ACTIVEMODEL = ISessionMgr.ActiveDgnModelRef if ACTIVEMODEL is None: return False # Get GCS attached to model dgn_gcs = DgnGCS.FromModel (ACTIVEMODEL, True) if (dgn_gcs is None): return False else: print ("Name: " + dgn_gcs.GetName()) print ("Description: " + dgn_gcs.GetDescription()) print ("Projection: " + dgn_gcs.GetProjection()) print ("EPSG Code: " + str(dgn_gcs.GetEPSGCode())) print ("Datum Name:: " + dgn_gcs.GetDatumName()) print ("Datum Description: " + dgn_gcs.GetDatumDescription()) print ("Datum Code: " + str(dgn_gcs.GetDatumCode())) print ("EPSG Datum Code: " + str(dgn_gcs.GetEPSGDatumCode())) return True # Main function def main(): print ("GCS Information") print ("---------------") if True != GetGCSInformation(): print("No GCS attached...") # main if __name__ == "__main__": main()
Select project “GCSInfo.py” from the Python Manager dialog and Run/Execute the python script.
If GCS, is attached to the model, “MicroStation - Text Window” displays GCS properties like name, description, projection, EPSG code, datum information, and EPSG datum code.
Extend the above code to create a custom GCS and attach it to the Model. Refer to the delivered examples and documentation.
Happy coding!
Python: Documentation | API Presentations | FAQs | GitHub | Samples | Wikis | Blogs