I had some data with weird co-ordinates in it:
{
"Agency": "F",
"Address": "S WAYSIDE DR",
"CrossStreet": "BLK GULF FWY IB",
"KeyMap": "534C",
"XCoord": "-95314927",
"YCoord": "29716075",
"CombinedResponse": "F",
"CallTimeOpened": "02/20/2021 22:29",
"IncidentType": "Ems Event",
"AlarmLevel": "0",
"NumberOfUnits": "1",
"Units": "A023;"
}
Note the "XCoord": "-95314927"
and "YCoord": "29716075"
in there.
I know that this data refers to somewhere in Houston, and a few people on Twitter pointed out that it's actually really simple: it's just missing the decimal point!
Here's the jq
recipe I came up with to transform this:
{
latitude: (.YCoord | tonumber / 1000000.0),
longitude: (.XCoord | tonumber / 1000000.0),
date: (.CallTimeOpened | strptime("%m/%d/%Y %H:%M") | todate),
key: (.CallTimeOpened + " " + .XCoord + " " + .YCoord )
} + .
The + .
at the end adds back on the original object.
Running this example on https://www.jqkungfu.com/ gives the following output:
{
"Address": "S WAYSIDE DR",
"Agency": "F",
"AlarmLevel": "0",
"CallTimeOpened": "02/20/2021 22:29",
"CombinedResponse": "F",
"CrossStreet": "BLK GULF FWY IB",
"IncidentType": "Ems Event",
"KeyMap": "534C",
"NumberOfUnits": "1",
"Units": "A023;",
"XCoord": "-95314927",
"YCoord": "29716075",
"date": "2021-02-20T22:29:00Z",
"key": "02/20/2021 22:29 -95314927 29716075",
"latitude": 29.716075,
"longitude": -95.314927
}
Bonus is this example: I concatenated together a unique primary key for each record in key
, and I figured out how to use the strptime()
function to parse a date.
Created 2021-03-11T08:04:06-08:00 · Edit