Library for transformation and conversion of coordinates used in Equinor.
Project description
Geodetic Engine
A Python library using the Equinor Geodetic Engine API and pyproj to transform coordinates between different Coordinate Reference Systems (CRS).
Installation
-
You need access to Equinor Geodetic Engine API, given through AccessIT
-
A personal subscription key is required to authenticate through APIM. Sign in to api.equinor.com and subscribe to Enterprise
-
As usual it´s installed running pip install:
pip install -i https://test.pypi.org/simple/ geodeticengine
Authentication
There are two ways to authenticate:
- User access - MSAL Device code flow
- Application access - MSAL Client credential flow
User-based authentication using public client flows.
For user-based authentication, this API utilizes the PublicClientApplication Python class from the msal library to retrieve bearer tokens for user authentication. In cases where a device supports a Graphical User Interface (GUI), the acquire_token_interactive() method is used to obtain tokens interactively via the user's local browser. For devices that lack GUI support, such as GitHub Code Spaces, the initiate_device_flow() method is used If the device supports a Graphical User Interface (GUI), the acquire_token_interactive() method will be used. This method acquires token interactively i.e. via a local browser. If the device does not support GUI, like GitHub Code Spaces for instance, the method initiate_device_flow() which generates a code for the user to visit a specific URL. The webpage then guides the user through the standard authentication and login process. This allows for a flexible and secure user authentication process that works across multiple devices.
To use the package with user-based access, you will need to add the following environment variables to your system:
EGE_CLIENT_ENVS=prod;test
EGE_CLIENT_IDS=c25018ed-b371-4b37-ba4e-4d902aee2b6c;84c8d2ec-6294-47aa-8fd4-f69c870faa3a
EGE_TENANT_ID=3aa4a235-b6e2-48d5-9195-7fcf05b459b0
EGE_RESOURCE_IDS=c25018ed-b371-4b37-ba4e-4d902aee2b6c;84c8d2ec-6294-47aa-8fd4-f69c870faa3a
EGE_SUBS_KEYS=<your-subscription-key-for-geodeticengine-prod;your-subscription-key-for-geodeticengine-test>
EGE_CLIENT_ENVS sets the order of environment variables. If you only have access to "prod", simply add "prod" to this variable.
EGE_CLIENT_IDS sets the client IDs for each environment. For user access, this is the same as EGE_RESOURCE_IDS.
EGE_TENANT_ID is the tenant ID (Equinor).
EGE_SUBS_KEYS is your APIM subscription keys for each environment (prod and test). This will allow the package to access the resources you have permission to use.
EGE_RESOURCE_IDS is the resource ID of the geodetic engine for the specified environments.
Application access - MSAL Client credential flow
To use the package with application-based access, you will need to add the following environment variables to your system:
- EGE_CLIENT_IDS
- EGE_CLIENT_SECRETS
Add the following environment variables to your system:
EGE_TENANT_ID=3aa4a235-b6e2-48d5-9195-7fcf05b459b0
EGE_CLIENT_ENVS=prod;test
EGE_CLIENT_IDS=<your-app-id-prod;your-app-id-test>
EGE_RESOURCE_IDS=c25018ed-b371-4b37-ba4e-4d902aee2b6c;84c8d2ec-6294-47aa-8fd4-f69c870faa3a
EGE_SUBS_KEYS=<your-subscription-key-for-geodeticengine-prod;your-subscription-key-for-geodeticengine-test>
EGE_CLIENT_SECRETS=<your-app-secret-prod;your-app-secret-test>
When EGE_CLIENT_SECRETS is added, the authorization class will automatically use Application Access to authenticate.
Access test environment
To use the package to access Geodetic Engine Test environment, you need to set the EGE_API_ENV as an environment variable. If this environment variable is not set, the package will use the production environment.
EGE_API_ENV=test
Token cache
The token for each environment is cached and stored in the user's home directory, eliminating the need to authenticate before every session. Although an access token expires after one hour, the presence of a cached Refresh Token allows a new Access Token to be obtained without requiring re-authentication. The Refresh Token lasts for 90 days, then you have to log in again.
Code example
from geodeticengine import CoordTrans
point_in_4230 = [[10,60]]
point_in_4326 = [[9.99860677505385, 59.999554562447024]]
crs_from = "EPSG:4230"
crs_to = "EPSG:4326"
trans = "EPSG:1612"
ct = CoordTrans(crs_from=crs_from, crs_to=crs_to, trans=trans, points=point_in_4230)
print(ct.transform_pointlist_forward())
# Get pipleline
ct = CoordTrans(crs_from=crs_from, crs_to=crs_to, trans=trans)
print(ct.get_pipeline_forward())
# Inverse transformation
ct = CoordTrans(crs_from=crs_from, crs_to=crs_to, trans=trans, points=point_in_4326)
print(ct.transform_pointlist_inverse())
# Transform coordinates using pipeline
ct = CoordTrans(crs_from=crs_from, crs_to=crs_to, trans=trans)
pipeline_forward = ct.get_pipeline_forward()
print(ct.transform_from_pipeline(point_in_4230, pipeline_forward))
pipeline_inverse = ct.get_pipeline_inverse()
print(ct.transform_from_pipeline(point_in_4326, pipeline_inverse))
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file geodeticengine-1.0.0.tar.gz
.
File metadata
- Download URL: geodeticengine-1.0.0.tar.gz
- Upload date:
- Size: 14.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef931470c3c2cf9d5927f60a1474438dc3dae38714d6aa9554a5651f72ec1d24 |
|
MD5 | 1695dd03809cc2800d07207b049641a8 |
|
BLAKE2b-256 | cf0843dea04462063b1fd524f320647b0ea2e007b8cba7019794ecc1d6781b5e |
File details
Details for the file geodeticengine-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: geodeticengine-1.0.0-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3267806543be404d984a0f131911e737cd10f7818e8de038d0555917e2b67ec6 |
|
MD5 | 7eee8e05f64d598cfe3930b19b988a15 |
|
BLAKE2b-256 | 300d68886b87fc82746eb5d4f7f51132d88ec1d95c7be2941cd0c20967fd0a95 |