Expressions.expr-primary-region
Region attribute: Region clauses are flagged with a Region attribute.
REGION <geometry definition>
Format
The Geometry definition format is defined as follows:
For a circular region:
REGION { 'Location string' | ? | ( LocationExpr ) } RADIUS { RadiusMeters | ? | ( RadiusExpr ) }
For a rectangular region:
REGION { 'Top left Location string' | ? | ( TopLeftLocationExpr ) } TO { 'Bottom right Location string' | ? | ( BottomRightLocationExpr ) }
The Location string format is defined as follows:
Latitude, Longitude
The geometry definition for a region does not support any additional components within the location string.
Type | Format |
---|---|
Latitude, Longitude |
Degrees as a decimal number, for example: 10.14563, 51.2368 |
RadiusMeters | Meters, the radius of the region defines the size of the circle. |
The latitude, longitude and radius all use the English decimal point (a dot).
Remarks
Regions are defined using the REGION keyword followed by a geometry definition of the region.
The geometry definition can be either a position and a radius (circular) or two positions (rectangular).
Each position part can be one of the following:
- A string literal
- A parameter marker
- A string expression
enclosed in parentheses that evaluates to a string containing the standard region format
For example:
WHERE LOCATION '12.34, 56.78' WITHIN REGION (Obj.GEOPosition) TO '10,50'
The radius part can be one of the following:
- A real literal
- An integer literal
- A parameter marker
- A numeric expression enclosed in parentheses.
The following example locates points within a circular region:
SELECT * FROM CDBPOINT WHERE GEOPOSITION WITHIN REGION '0,0' RADIUS 2000000
The following example locates points within a rectangular region:
SELECT * FROM CDBPOINT WHERE GEOPOSITION WITHIN REGION '0,0' TO '90,90'
The following example lists objects and their distance (in kilometers) from the center of a circular Region.
SELECT
NAME, GEOPOSITION, DISTANCE( LOCATION '51,0' TO GEOPOSITION ) / 1000.0 AS "Distance In Km"
FROM
CDBOBJECT
WHERE
GEOPOSITION WITHIN REGION '51,0' RADIUS 10000000
This produces a list similar to that shown below:
Row | Name | GEOPOSITION | Distance In Km |
---|---|---|---|
0 | Direct Outstation Set | 25, 0 | 2891.0680927 |
1 | Analog Input Point 01 | 30, 0 | 2335.0934595 |
2 | Analog Input Point 02 | 32, 0 | 2112.7036062 |
3 | Analog Input Point 03 | 35, 0 | 1779.1188263 |