; Polygon coordinates: requires 3 or more coordinate pairs, each separated by a space.
; Example: "45.7606,4.8351 40.7128,-74.0060 -34.9293,-58.3754"
polygon-coordinates = coordinate-pair 2*(" " coordinate-pair)

; Circle coordinates: requires one coordinate pair, a space, then a radius value.
;    Radius is in either kilometers (default), indicated by optional 'km' suffix, or miles indicated by required 'm' suffix
; Examples: "45.7606,4.8351 10.5m", "17.856556,-77.047607 25km", "56.368,53.306 17.5”
circle-coordinates = coordinate-pair " " radius

radius  = radius-miles 
        / radius-km

radius-miles = 1*DIGIT ["." fraction] "m" ; miles and fraction (positive value)
radius-km = 1*DIGIT ["." fraction] ["km"] ; km and fraction (positive value) (default)

; Latitude and Longitude in decimal degrees format, separated by a comma
; Examples: 37.7749,-122.4194   or   +37.7749,-122.4194
coordinate-pair = latitude "," longitude

; -90 through +90
latitude        = [ "-" / "+"] [DIGIT08] DIGIT ["." fraction] ; 0.fraction to 89.fraction
                / [ "-" / "+"] DIGIT9 DIGIT0 ; 90 exactly only


; -180 through +180
longitude       = [ "-" / "+"] [DIGIT0] 1*2DIGIT ["." fraction]     ; 0.fraction to 99.fraction
                / [ "-" / "+"] DIGIT1 DIGIT07 DIGIT ["." fraction]  ; 100.fraction to 179.fraction
                / [ "-" / "+"] DIGIT1 DIGIT8 DIGIT0                 ; 180 exactly


fraction        = 1*DIGIT

DIGIT0          = %x30            ; 0
DIGIT1          = %x31            ; 1
DIGIT           = %x30-39         ; 0-9
DIGIT07         = %x30-37         ; 0-7
DIGIT08         = %x30-38         ; 0-8
DIGIT8          = %x38            ; 8
DIGIT9          = %x39            ; 9
