Geo point type
Geo point type documentation.
Overview
This type can store geo localization data. It consist of a couple of values:
latitude
: Valid latitude values are between -90 and 90, both inclusive.longitude
: Valid longitude values are between -180 and 180, both inclusive.
Powerful and useful queries can be done on this data type.
Available features
Name | Supported |
---|---|
Many multiplicity | yes |
Default values | yes |
Unique flag | no |
Required flag | yes |
Indexable flag | yes |
Sensitive flag | no |
Calculated value | yes |
Automatic initialization | yes |
Calculated initial value | yes |
Aggregation | yes |
Default type rules | no |
Default display options | no |
REST API
Read format
"location": '{latitude: 10.5, longitude: 12}'
Write format
To specify the geo point, you need to provide a js object with the latitude and longitude attributes.
"location": '{latitude: 10.5, longitude: 12}'
JavaScript API
Read format
When utilizing the val()
method within the wrapper, it will yield a GeoPoint
object.
// this will print something like "localization: {longitude:10,latitude:20}"
log('localization: '+record.field('localization').val());
Write format
record.field('startDate').val({latitude: 10.5, longitude: 12});
Export/Import
Export format
The export format is (lat,long)
, regardless of the display options configured for that field.
"location","(22,30)"
Import format
The import format is (lat,long)
, regardless of the display options configured for that field.
"location","(22,30)"
Queries
For more information, please refer to the Query Language Documentation.
Available operators
Operator | Supported |
---|---|
equals | no |
notEquals | no |
empty | no |
notEmpty | no |
like | no |
greater | no |
greaterOrEquals | no |
less | no |
lessOrEquals | no |
between | no |
currentUserField | no |
near | yes |
Query samples
// sorts companies by proximity to [ lat: 10, long: 22 ] that are at a min distance of 5000 m and at a maximum of 10000 m
var records_sample = sys.data.find('companies', {'location':'near(5,10,5000,10000)'});
log('total: '+records_sample.count());
while (records_sample.hasNext()) {
log(records_sample.next().label());
}
// sorts companies by proximity to [ lat: 10, long: 22 ] that are at a min distance of 5000 m and at a maximum of 10000 m
var query_sample = sys.data.createQuery('companies')
.field('location').near(5,10,5000,10000)
var records_sample = sys.data.find(query_sample);
log('total: '+records_sample.count());
while (records_sample.hasNext()) {
log(records_sample.next().label());
}
// sorts companies by proximity to [ lat: 10, long: 22 ] that are at a min distance of 5000 m and at a maximum of 10000 m
GET /data/contacts?near(5,10,5000,10000)
Aggregate queries
Please refer to the Aggregate Queries Documentation for more detailed information.
Available operators
Operator | Supported |
---|---|
sum | no |
avg | no |
first | no |
last | no |
min | no |
max | no |
geoNear | yes |
Aggregated queries samples
// Sorts records by proximity and filters them by min and max distance. Provides the calculated distance value in a custom field
var resultSet = sys.data.aggregate('companies', [
[{geoNear: {coordinates: {longitude:10,latitude:5},distanceField:'distance',minDistance:5566,maxDistance:9460000}}]
]);
log('total: ' + resultSet.count());
while (resultSet.hasNext()) {
log(resultSet.next().label());
}
// Sorts records by proximity and filters them by min and max distance. Provides the calculated distance value in a custom field
var query = sys.data.createQuery('companies')
query_.geoNear().coordinates({longitude:10,latitude:05}).distanceField('distance').minDistance(5566).maxDistance(9460000);
var resultSet = sys.data.aggregate(query);
log('total: ' + resultSet.count());
while (resultSet.hasNext()) {
log(resultSet.next().label());
}
// Sorts records by proximity and filters them by min and max distance. Provides the calculated distance value in a custom field
PUT /data/companies/aggregate
[{"geoNear": {"coordinates": {"longitude":10, "latitude":5}}, "distanceField": "distance", "minDistance": 5566, "maxDistance":9460000}]