デフォルトでは、次の構造を持つ139,000行のJSONファイルがあります(OpenStreetMapから取得)。
{
"type": "FeatureCollection",
"generator": "overpass-ide",
"features": [
{
"type": "Feature",
"properties": {
"@id": "relation/7859",
"TMC:cid_58:tabcd_1:Class": "Area",
"TMC:cid_58:tabcd_1:LCLversion": "9.00",
"TMC:cid_58:tabcd_1:LocationCode": "4934",
"leisure": "park",
"name": "Platnersberg",
"type": "multipolygon",
"@geometry": "center"
},
"geometry": {
"type": "Point",
"coordinates": [
11.128184,
49.4706035
]
},
"id": "relation/7859"
},
{
"type": "Feature",
"properties": {
"@id": "relation/62370",
"TMC:cid_58:tabcd_1:Class": "Area",
"TMC:cid_58:tabcd_1:LCLversion": "8.00",
"TMC:cid_58:tabcd_1:LocationCode": "1157",
"admin_level": "6",
"boundary": "administrative",
"de:place": "city",
"name": "Eisenach",
"type": "boundary",
"@geometry": "center"
},
"geometry": {
"type": "Point",
"coordinates": [
10.2836229,
50.9916015
]
},
"id": "relation/62370"
}
]
}
代わりに、このファイル内の各機能の名前、TMC位置コード、および座標を取得したいと思います。可能であれば、CSVファイルを使用してください。
location_code,name,latitude,longitude
すべての追加ノードを削除する正規表現を作成できることを知っていますが、これはかなり複雑なプロセスになります。jq
OpenSuSE Leap 15.1システムにもこのツールをインストールしましたが、このツールはまだ慣れていません。
この抽出タスクを実行する方法についてのアイデアはありますか?
答え1
私も初心者ですが、私の考えでは
$ jq -r '.features[] | select(.type == "Feature") | [.properties."TMC:cid_58:tabcd_1:LocationCode",.properties.name,.geometry.coordinates[]] | @csv' file.json
"4934","Platnersberg",11.128184,49.4706035
"1157","Eisenach",10.2836229,50.9916015
それは行わなければなりません。フィルタはselect(.type == "Feature")
不要な場合があります。他のタイプが利用可能かどうかはわかりません。