Address Geocoding

Address Geocoding

Auto-geocode addresses using OpenStreetMap Nominatim (free, no API key required)

function geocodeAddress(addressString) { var result = { "success": false, "error": "" }; if (len(trim(addressString)) EQ 0) { result.error = "Empty address"; return result; } try { var httpService = new http(); httpService.setMethod("GET"); httpService.setUrl("https://nominatim.openstreetmap.org/search?q=" & urlEncodedFormat(addressString) & "&format=json&limit=1"); httpService.addParam(type="header", name="User-Agent", value="Payfrit/1.0"); httpService.setTimeout(10); var httpResult = httpService.send().getPrefix(); if (httpResult.statusCode CONTAINS "200") { var data = deserializeJSON(httpResult.fileContent); if (arrayLen(data) GT 0) { result.success = true; result.lat = data[1].lat; result.lng = data[1].lon; return result; } result.error = "No results found"; return result; } result.error = "HTTP " & httpResult.statusCode; return result; } catch (any e) { result.error = e.message; return result; } } function buildAddressString(line1, line2, city, zipCode) { var parts = []; if (len(trim(line1))) arrayAppend(parts, trim(line1)); if (len(trim(line2))) arrayAppend(parts, trim(line2)); if (len(trim(city))) arrayAppend(parts, trim(city)); if (len(trim(zipCode))) arrayAppend(parts, trim(zipCode)); return arrayToList(parts, ", "); } SELECT Line1, Line2, City, ZIPCode FROM Addresses WHERE ID = UPDATE Addresses SET Latitude = , Longitude = WHERE ID =
Geocoded Address ID #addressId#: #geo.lat#, #geo.lng#
Failed: #geo.error#
SELECT ID, Line1, Line2, City, ZIPCode FROM Addresses WHERE (Latitude IS NULL OR Latitude = 0) AND Line1 IS NOT NULL AND Line1 != '' UPDATE Addresses SET Latitude = , Longitude = WHERE ID =
Geocoded #successCount# addresses. #failCount# failed.
SELECT b.ID, b.Name, a.ID, a.Line1, a.Line2, a.City, a.ZIPCode, a.Latitude, a.Longitude FROM Businesses b LEFT JOIN Addresses a ON b.AddressID = a.ID ORDER BY b.Name

#missingCount# addresses missing coordinates. (~#missingCount# seconds due to rate limiting)

Business Address Coordinates Action
#addresses.Name# #chr(10003)# #chr(9679)# #addresses.Line1#, #addresses.Line2#
#addresses.City# #addresses.ZIPCode# No address
#numberFormat(addresses.Latitude, "_.______")#
#numberFormat(addresses.Longitude, "_.______")# -