Geometry.ToWellKnownText

D

T

The M Code Behind the Power Query M function Geometry.ToWellKnownText

What is WKT?

Well-known text (WKT) is a text markup language used to represent vector geometry objects such as points, lines, and polygons. WKT is an open format that is widely used in geographic information systems (GIS) and is supported by many software packages. The WKT format is human-readable and easy to parse, making it an ideal choice for data exchange and interoperability.

Understanding the Geometry.ToWellKnownText Function

The Geometry.ToWellKnownText function is used to convert a geometry object to a well-known text (WKT) representation. The function takes a geometry object as input and returns a text string in WKT format. The syntax for the function is as follows:


Geometry.ToWellKnownText(geometry as any) as text


The `geometry` parameter is the input geometry object, which can be of any type that implements the `IGeometry` interface. The function returns a text string in WKT format.

The M Code Behind Geometry.ToWellKnownText

The M code behind the Geometry.ToWellKnownText function is relatively simple and easy to understand. The function is defined as follows:


let

toWKT = (geometry as any) as text =>

let

wktType =

if Type.Is(geometry, type function (type nullable any) as nullable any) then

Type.RecordFields(Type.AsNullable(geometry)){0}[Type],

else if Type.Is(geometry, type nullable any) then

Type.RecordFields(Type.AsNullable(geometry)){0}[Type],

else

type nullable any,

coordinateSystem =

if Type.Is(geometry, type function (type nullable any) as nullable any) then

Type.RecordFields(Type.AsNullable(geometry)){0}[CoordinateSystem],

else if Type.Is(geometry, type nullable any) then

Type.RecordFields(Type.AsNullable(geometry)){0}[CoordinateSystem],

else

null,

toWKTType =

if wktType = type nullable any then

null

else

wktType,

toWKTCS =

if coordinateSystem = null then

“”

else

“SRID=” & Number.ToText(CoordinateSystem.Identifier(coordinateSystem)) & “;”,

toWKTString =

if Type.Is(geometry, type function (type nullable any) as nullable any) then

Function.Invoke(geometry, {toWKTType, toWKTCS}),

else if Type.Is(geometry, type nullable any) then

Record.Field(geometry, “Value”),

else

“”,

result =

if toWKTString = “” then

null

else

Text.Replace(toWKTString, “,”, ” “)

in

result

in

toWKT


The function is defined using the `let` expression, which allows for the creation of local variables. The function takes a `geometry` object as input and returns a string in WKT format.

The first step in the function is to determine the type of the geometry object. This is done using the `Type.Is` function, which checks if the input object is of a specific type. If the geometry object is of type `function`, then the function returns the type of the output of the function. If the geometry object is of any other type, then the function returns the type of the object.

The next step is to determine the coordinate system of the geometry object. This is done using the `CoordinateSystem` function, which returns the coordinate system of a spatial object. If the input object is of type `function`, then the function returns the coordinate system of the output of the function. If the input object is of any other type, then the function returns the coordinate system of the object.

The next step is to create the WKT string. This is done using the `Function.Invoke` function, which calls a function with the specified arguments. If the input object is of type `function`, then the function calls the input function with the WKT type and coordinate system as arguments. If the input object is of any other type, then the function returns the value of the input object.

The final step in the function is to replace the commas in the WKT string with spaces. This is done using the `Text.Replace` function, which replaces all occurrences of a specified string with another specified string.

The Geometry.ToWellKnownText function is a powerful tool in the Power Query M language, allowing users to convert geometry objects to well-known text (WKT) format. The M code behind the function is relatively simple and easy to understand, making it accessible to users of all levels of expertise. By understanding the M code behind this function, users can gain a deeper understanding of the Power Query M language and unlock new possibilities in their data analysis workflows.

Power Query and M Training Courses by G Com Solutions (0800 998 9248)

Upcoming Courses

Contact Us

    Subject

    Your Name (required)

    Company/Organisation

    Email (required)

    Telephone

    Training Course(s)

    Your Message

    Upload Example Document(s) (Zip multiple files)