Google Takeout이 내뿜는 'JSON이라는 기분 나쁜 확장자'에 대해 알아 보았습니다.
우선 데이터를 얻는다
이것은 매우 간단합니다.
h tps // 타케오 t. 오, ぇ. 코 m / 세팅 gs / 타케오 t
※이번은 위치 이력만 선택합니다.
모두 선택하면 상당한 시간이 걸리는 경우가 있으므로 임의로 부탁드립니다.
특히 문제가 없으면 기본적으로 괜찮습니다.
대상은 Google 드라이브 및 기타 클라우드 스토리지를 선택할 수 있습니다.
위치 기록만 있으면 즉시 완료됩니다.
커피도 마시고 기다리자.
다운로드를 클릭하기만 하면 됩니다.
다운로드한 데이터의 구조
아카이브를 확장하면 다음과 유사한 파일을 볼 수 있습니다.
index.html: 아카이브 내용의 설명. 풍부한 readme.
위치 기록: 원하는 "위치 기록.json"이 들어 있는 폴더입니다.
"기분이 나쁜 로케이션 이력.json"의 정체
다음과 같은 느낌. (위치와 시간은 가면입니다)
{
"locations" : [ {
"timestampMs" : "xxxxxxxxxxxxx",
"latitudeE7" : xxxxxxxxx,
"longitudeE7" : xxxxxxxxxx,
"accuracy" : 2893
}, {
"timestampMs" : "xxxxxxxxxxxxx",
"latitudeE7" : xxxxxxxxx,
"longitudeE7" : xxxxxxxxxx,
"accuracy" : 2803,
"activity" : [ {
"timestampMs" : "xxxxxxxxxxxxx",
"activity" : [ {
"type" : "STILL",
"confidence" : 100
} ]
} ]
}, {
"timestampMs" : "xxxxxxxxxxxxx",
"latitudeE7" : xxxxxxxxx,
"longitudeE7" : xxxxxxxxxx,
"accuracy" : 186,
"activity" : [ {
"timestampMs" : "xxxxxxxxxxxxx",
"activity" : [ {
"type" : "UNKNOWN",
"confidence" : 48
}, {
"type" : "IN_VEHICLE",
"confidence" : 34
}, {
"type" : "STILL",
"confidence" : 17
}, {
"type" : "ON_BICYCLE",
"confidence" : 2
} ]
} ]
}, {
"timestampMs" : "xxxxxxxxxxxxx",
"latitudeE7" : xxxxxxxxx,
"longitudeE7" : xxxxxxxxxx,
"accuracy" : 37,
"velocity" : 0,
"heading" : 327,
"altitude" : 65,
"activity" : [ {
"timestampMs" : "1421017596205",
"activity" : [ {
"type" : "STILL",
"confidence" : 100
} ]
} ]
},
...
{
"timestampMs" : "xxxxxxxxxxxxx",
"latitudeE7" : xxxxxxxxx,
"longitudeE7" : xxxxxxxxx,
"accuracy" : 1414,
"velocity" : -1,
"heading" : -1,
"altitude" : 0
} ]
}
구조
첫 번째 계층은 locations 전용입니다.
locations 의 value 로서 배열로 실제의 계측 데이터가 저장되고 있습니다.
측정 데이터의 키는 다음과 같습니다.
다음과 같은 느낌. (위치와 시간은 가면입니다)
{
"locations" : [ {
"timestampMs" : "xxxxxxxxxxxxx",
"latitudeE7" : xxxxxxxxx,
"longitudeE7" : xxxxxxxxxx,
"accuracy" : 2893
}, {
"timestampMs" : "xxxxxxxxxxxxx",
"latitudeE7" : xxxxxxxxx,
"longitudeE7" : xxxxxxxxxx,
"accuracy" : 2803,
"activity" : [ {
"timestampMs" : "xxxxxxxxxxxxx",
"activity" : [ {
"type" : "STILL",
"confidence" : 100
} ]
} ]
}, {
"timestampMs" : "xxxxxxxxxxxxx",
"latitudeE7" : xxxxxxxxx,
"longitudeE7" : xxxxxxxxxx,
"accuracy" : 186,
"activity" : [ {
"timestampMs" : "xxxxxxxxxxxxx",
"activity" : [ {
"type" : "UNKNOWN",
"confidence" : 48
}, {
"type" : "IN_VEHICLE",
"confidence" : 34
}, {
"type" : "STILL",
"confidence" : 17
}, {
"type" : "ON_BICYCLE",
"confidence" : 2
} ]
} ]
}, {
"timestampMs" : "xxxxxxxxxxxxx",
"latitudeE7" : xxxxxxxxx,
"longitudeE7" : xxxxxxxxxx,
"accuracy" : 37,
"velocity" : 0,
"heading" : 327,
"altitude" : 65,
"activity" : [ {
"timestampMs" : "1421017596205",
"activity" : [ {
"type" : "STILL",
"confidence" : 100
} ]
} ]
},
...
{
"timestampMs" : "xxxxxxxxxxxxx",
"latitudeE7" : xxxxxxxxx,
"longitudeE7" : xxxxxxxxx,
"accuracy" : 1414,
"velocity" : -1,
"heading" : -1,
"altitude" : 0
} ]
}
구조
첫 번째 계층은 locations 전용입니다.
locations 의 value 로서 배열로 실제의 계측 데이터가 저장되고 있습니다.
측정 데이터의 키는 다음과 같습니다.
accuracy
측정값의 정확도를 나타내는 값.
이 값은 Google Maps Geolocation API와 같으면
「미터 단위의 추정 위치의 정밀도」의 「추정 위치로부터의 반경」의 것.
활동
「무엇을 하고 있는가」를 추측한 것.
내부에서 더 배열 구조를 가지고,
각 배열내의 「type」은 추측되는 행동을,
"confidence"는 확증의 정도를 100분율로 저장하고 있다.
「type」에는 다음과 같은 것이 있다.
다만 「UNKNOWN」이 복수회 출현하기 때문에 내부에서는 좀 더 세밀할지도 모른다.
고도.
방향.
위도.
E7의 7은 소수점 이하의 자리수. (e의 마이너스 7승)
즉 오른쪽에서 7자리는 쉼표 이하.
위도.
E7의 의미는 동일하다.
UNIX 시간.
다만 초가 아니라 밀리 세컨드인 점에 주의.
속도.
결론
역시 Google 대단하다.
json 1개 매우 데이터로서 정연하게 하고, 수치가 Float가 되지 않는 궁리도 하고 있다.
보기 쉽도록 json이 들여 쓰기된 것도 조금 깜짝 놀랐네요. (데이터 사이즈 늘리는 분을 선택한 점)
엔지니어 시점이라면, 이상하게 커녕 각 부처에 견습해 주었으면 하는 데이터 설계가 아닐까라고 생각합니다.
덧붙여서 「유저 자신이 이해하기 쉬운 포맷으로 하는 것도 중요하지 않은 것인가」
라고 쓰여진 것 같습니다만, Google에는 위치 기록 라고 하는 서비스가 있군요.
아마도 이것이 비 엔지니어에게 가장 알기 쉬운 "포맷"이라고 생각합니다.
켜거나 하지 않아도 정보가 수집되므로,
신경이 쓰이면 과감히 서비스를 켜 버리는 것도 좋지 않을까요! ?
Reference
이 문제에 관하여(Google Takeout이 내뿜는 'JSON이라는 기분 나쁜 확장자'에 대해 알아 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/MysteriousMonkey/items/d9ea75aa9a3cdf70395c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)