%20JSON%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EB%85%B8%EB%93%9C%EB%8B%B9%20%EB%91%90%20%EA%B0%9C%EC%9D%98%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%ED%95%84%EB%93%9C(%EC%8A%A4%EC%B9%BC%EB%9D%BC%201%EA%B0%9C%EC%99%80%20%EB%B0%B0%EC%97%B4%201%EA%B0%9C)%EB%A5%BC%20%EC%B6%94%EC%B6%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
기본적으로 다음과 같은 구조를 가진 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")
필요하지 않을 수도 있습니다. 다른 유형을 사용할 수 있는지 확실하지 않습니다.