[[ml-geo-functions]] === Geographic Functions The geographic functions detect anomalies in the geographic location of the input data. The {xpackml} features include the following geographic function: `lat_long`. NOTE: You cannot create forecasts for jobs that contain geographic functions. [float] [[ml-lat-long]] ==== Lat_long The `lat_long` function detects anomalies in the geographic location of the input data. This function supports the following properties: * `field_name` (required) * `by_field_name` (optional) * `over_field_name` (optional) * `partition_field_name` (optional) For more information about those properties, see {ref}/ml-job-resource.html#ml-detectorconfig[Detector Configuration Objects]. .Example 1: Analyzing transactions with the lat_long function [source,js] -------------------------------------------------- { "function" : "lat_long", "field_name" : "transactionCoordinates", "by_field_name" : "creditCardNumber" } -------------------------------------------------- If you use this `lat_long` function in a detector in your job, it detects anomalies where the geographic location of a credit card transaction is unusual for a particular customer’s credit card. An anomaly might indicate fraud. IMPORTANT: The `field_name` that you supply must be a single string that contains two comma-separated numbers of the form `latitude,longitude`. The `latitude` and `longitude` must be in the range -180 to 180 and represent a point on the surface of the Earth. For example, JSON data might contain the following transaction coordinates: [source,js] -------------------------------------------------- { "time": 1460464275, "transactionCoordinates": "40.7,-74.0", "creditCardNumber": "1234123412341234" } -------------------------------------------------- In {es}, location data is likely to be stored in `geo_point` fields. For more information, see {ref}/geo-point.html[Geo-point datatype]. This data type is not supported natively in {xpackml} features. You can, however, use Painless scripts in `script_fields` in your {dfeed} to transform the data into an appropriate format. For example, the following Painless script transforms `"coords": {"lat" : 41.44, "lon":90.5}` into `"lat-lon": "41.44,90.5"`: [source,js] -------------------------------------------------- { "script_fields": { "lat-lon": { "script": { "source": "doc['coords'].lat + ',' + doc['coords'].lon", "lang": "painless" } } } } -------------------------------------------------- For more information, see <>.