Having to format some GeoJSON data like so

{
	"type": "FeatureCollection",
	"name": "My Places",
	"crs": {
		"type": "name",
		"properties": {
			"name": "urn:ogc:def:crs:OGC:1.3:CRS84"
		}
	},
	"features": [{
			"type": "Feature",
			"properties": {
				"Name": "Hana Sub",
				"description": null
			},
			"geometry": {
				"type": "Point",
				"coordinates": [-155.995857273402208, 20.765941277181849]
			}
		}, ...
    ]
}

I need the point location as lat/lng and the name so from the above

Name and geometry coordinates

Using jq I can extract the data from the file in a CSVish format with the following bash command.  I have added the tr command to remove some unnecessary text from the results

jq '.features | .[] | .properties.Name + ", " + (.geometry.coordinates[1]|tostring) + ", " + (.geometry.coordinates[0]|tostring)' doc.geojson | tr -d '"' | tr -d ' Sub'

Example results

Hana,20.76594127718185,-155.9958572734022

I could also extract the relevant data as a intermediate JSON format like so

  • name
  • latitude
  • longitude
jq '.features | .[] | {name: .properties.Name, latitude: (.geometry.coordinates[1]|tostring), longitude: (.geometry.coordinates[0]|tostring)}' doc.geojson

Example results

{
  "name": "Mahinahina Sub",
  "latitude": "20.95812321590161",
  "longitude": "-156.6657055616665"
}