MarkLogic Server 11.0 Product Documentation
geo:region-affine-transformgeo:region-affine-transform(
$region as cts:region,
$transform as map:map*,
[$options as xs:string*]
) as cts:region
Summary
Perform an affine transformation on a geospatial region. The transformation
is always applied in the raw coordinate system (Cartesian).
Parameters |
region |
|
transform |
A sequence of maps that specify the transformation to apply. Each map
should contain at least one of the following transform specifications:
translation
- Translate the points of the region by the given amount in the x and y
coordinates. The value is a map with the following keys:
tx - Amount to shift the points in the x direction. (Required.)
ty - Amount to shift the points in the y direction. (Required.)
scaling
- Scale the points of the region by the given amount of the x and y
coordinates. The value is a map with the following keys:
sx - Amount to scale the points in the x direction. (Required.)
sy - Amount to scale the points in the y direction. (Required.)
psc - Point to scale relative to. (Optional. Default is the origin.)
rotation
- Rotate the points of the region by the given angle.
The value is a map with the following keys:
angle - Amount to rotate the points (radians). (Required.)
prot - Point to rotate relative to. (Optional. Default is the origin.)
shearing
- Shear the points of the region by the given amounts.
The value is a map with the following keys:
shxy - Amount of shearing due to x in y direction. (Required.)
shyx - Amount of shearing due to y in x direction. (Required.)
reflection
- Reflect the points of the region around a line or a point.
The value is a map with the following keys:
lineR - Line of reflection.
pref - Point to reflect points around. The value
is a map with the following keys:
start - The starting point of the line.
end - The ending point of the line.
Exactly of lineR or pref must be specified.
If no transform specifications are provided, the points are transformed by the identity transform. That is, they remain unchanged.
|
options |
Geospatial options that affect the transformation. Currently there are no
relevant options.
|
Usage Notes
The ordering of transformations applied makes a difference. For example,
scaling the point (1,1) by x=2 and y=3 and then translating it by x=1 and y=1
gives us the point (4,4). But translating it by x=1 and y=1 and then scaling
it by x=2 and y=3 gives us (4,5). When multiple transformation are mentioned
in a single map, the ordering is: translation, scaling, rotation, shearing,
and then reflection. In general it is better to put separate transformations
in separate maps in the sequence so there is no confusion. Transforms in the
sequence are applied in order.
See Also
Example
(: Reflection about the line from point (2.5,0) to point (2.5,2.0) :)
geo:region-affine-transform(
cts:polygon((
cts:point(1.5,0),cts:point(2.5,1),cts:point(1.5,2),
cts:point(0.5,2),cts:point(0.5,0),cts:point(1.5,0))),
xdmp:from-json-string('
{reflection: { lineR: {start: [2.5,0], end:[2.5,2.0]} }
}'))
=> 3.5,0 2.5,1 3.5,2 4.5,2 4.5,0 3.5,0
Stack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.