위도와 경도를 얼마나 정확하게 저장해야 합니까?
나는 여기서 이 질문을 읽고 있었다.
SQL 데이터베이스에 위도 및 경도 데이터를 저장할 때 사용할 데이터 유형은 무엇입니까?
그리고 십진법(9,6)을 사용하는 것이 좋다는 것이 일반적인 의견인 것 같습니다.제가 궁금한 건 이게 얼마나 정확하게 필요한가요?
예를 들어 Google API는 다음과 같은 결과를 반환합니다.
"lat": 37.4219720,
"lng": -122.0841430
-122.0841430 중 몇 자리 숫자가 필요합니까?가이드 몇 권을 읽었는데 이걸 이해할 수 있을 만큼 이해가 안 돼요.
좀 더 정확히 말하자면:정확한 위치에서 50피트 이내에 정확하게 하려면 소수점 몇 개를 저장해야 합니까?
아마도 더 좋은 질문은 실제로는 비프로그래밍 질문일 것이다.그러나 그것은: 각 소수점이 얼마나 더 정확한가 하는 것이다.
이렇게 간단한가요?
- 목록 항목
- x00 = 6000 마일
- xx0 = 600 마일
- xxx = 60마일
- xxx.x = 6 마일
- xxx.xx = 0.6 마일
- 어떻게 해야 할까요?
적도에서 정확도 대 소수점
decimal degrees distance
places
-------------------------------
0 1.0 111 km
1 0.1 11.1 km
2 0.01 1.11 km
3 0.001 111 m
4 0.0001 11.1 m
5 0.00001 1.11 m
6 0.000001 0.111 m
7 0.0000001 1.11 cm
8 0.00000001 1.11 mm
참조 : https://en.wikipedia.org/wiki/Decimal_degrees#Precision
+----------------+-------------+
| Decimals | Precision |
+----------------+-------------+
| 5 | 1m |
| 4 | 11m |
| 3 | 111m |
+----------------+-------------+
의 정밀도를 .50피트(15m)의 정밀도를 가지세요. ★★★★★★★★★★★★★★★★★.decimal(9,6)
저는 데이터베이스를 설계하고 있고 이 문제를 오랫동안 연구해 왔습니다.데이터 필드가 소수점 17자리까지 허용되도록 정의된 오라클 백엔드와 함께 기성 애플리케이션을 사용합니다.말도 안 돼!1000분의 1인치입니다.세상에 그렇게 정확한 GPS 기기는 없어요.그러니 소수점 17자리를 제쳐두고 실용적인 문제를 다루자.정부는 이들의 시스템이 95% 신뢰수준에서 7.8m의 "최악의 경우" 정확도가 양호하다는 것을 보장하지만, 실제 FAA는 (고품질 계측기를 사용하여) 보통 1m 이내의 GPS 판독치를 보여주었다고 계속 말한다.
그래서 당신은 스스로에게 두 가지 질문을 해야 합니다. 1) 당신의 가치의 원천은 무엇입니까?2) 데이터는 무엇에 사용됩니까?
휴대폰은 특별히 정확하지 않으며, 구글/맵퀘스트의 판독치는 아마도 소수점 4~5자리까지만 좋을 것이다.고품질 GPS 기기는 (미국 내에서) 6을 얻을 수 있습니다.그러나 그 이상을 캡처하는 것은 타이핑과 저장 공간을 낭비하는 것입니다.또, 그 값에 대해서 검색을 실시하는 경우는, 유저에게 있어서 6이 가장 필요한 것을 알 수 있는 것이 좋습니다(확실히, 입력된 검색치는, 우선 검색되는 데이터 값과 같은 정밀도로 반올림 할 필요가 있습니다).
또한 Google 지도에서 위치를 보거나 GPS에 입력하기만 하면 4~5개면 충분합니다.
난 여기 사람들이 그 숫자들을 입력하는 걸 보고 웃어야 해정확히 어디서 측정을 하는 걸까요?앞문 손잡이?우편함 앞?건물의 중심?기지국 꼭대기?그리고... 다들 같은 장소에서 계속 찍고 있는 거야?
우수한 데이터베이스 설계로서 사용자로부터 소수점 이하 5자리 이상의 값을 받은 다음, 일관성을 위해 반올림하여 캡처할 수 있는 값은 5개뿐입니다(악기가 좋고 최종 사용이 이를 보증하는 경우 6개).
각 위도 사이의 거리는 지구의 모양에 따라 다르며 각 경도 사이의 거리는 극에 가까워질수록 작아집니다.그래서 적도에 대해서 이야기해 봅시다. 각 도 사이의 거리는 위도가 110.574km, 경도가 111.320km입니다.
50ft는 0.01524km이므로:
- 0.01524 / 110.574 = 위도의 1/7255
- 0.01524 / 111.320 = 경도의 1/7304
4자리의 눈금이 필요합니다.1만분의 1도까지 내려갈 수 있습니다정밀도는 7자리입니다
DECIMAL(7,4)
충분할 겁니다.
구체의 다양한 부분과 대각선 거리를 고려하여 아래 표에 기재되어 있습니다.
Datatype Bytes resolution
------------------ ----- --------------------------------
Deg*100 (SMALLINT) 4 1570 m 1.0 mi Cities
DECIMAL(4,2)/(5,2) 5 1570 m 1.0 mi Cities
SMALLINT scaled 4 682 m 0.4 mi Cities
Deg*10000 (MEDIUMINT) 6 16 m 52 ft Houses/Businesses
DECIMAL(6,4)/(7,4) 7 16 m 52 ft Houses/Businesses
MEDIUMINT scaled 6 2.7 m 8.8 ft
FLOAT 8 1.7 m 5.6 ft
DECIMAL(8,6)/(9,6) 9 16cm 1/2 ft Friends in a mall
Deg*10000000 (INT) 8 16mm 5/8 in Marbles
DOUBLE 16 3.5nm ... Fleas on a dog
-- http://mysql.rjweb.org/doc.php/latlng#representation_choices
부동 소수점 값은 저장하지 마십시오.정확하다고 생각하실 수도 있지만 그렇지 않습니다.그것들은 근사치이다.언어마다 부동소수점 정보를 "파싱"하는 방법이 다른 것으로 나타났습니다.또한 데이터베이스마다 값 근사치를 구현하는 방법이 다릅니다.
대신 Geohash를 사용합니다.이 비디오는 지오해시를 5분 이내에 소개하고 시각적으로 설명합니다.지오해시는 경도/위도 정보를 일관된 방식으로 인코딩/디코딩하는 우수한 방법입니다.경도/위도의 대략적인 부동 소수점 값을 데이터베이스 열에 "직렬화"하지 않고 Geohash를 사용하면 String 값으로 얻을 수 있는 것과 동일한 바람직한 라운드 트립 일관성을 얻을 수 있습니다.Geohash를 가지고 노는 데 도움이 되는 웹 사이트입니다.
구글 지도에서 위치를 클릭하면 소수점 7자리로 위도와 경도가 표시됩니다.
언급URL : https://stackoverflow.com/questions/7167604/how-accurately-should-i-store-latitude-and-longitude
'programing' 카테고리의 다른 글
VueJS 동적 속성 이름이 값을 업데이트하지 않음 (0) | 2022.09.28 |
---|---|
어떻게 파이선 module/package 쓸? (0) | 2022.09.28 |
문자열 배열에 문자열 추가 (0) | 2022.09.27 |
하위 배열 값을 사용하여 PHP 배열을 알파벳 순으로 정렬합니다. (0) | 2022.09.27 |
instanceOf(클래스)와 같은 것이 있습니까?instanceOf(클래스)와 같은 것이 있습니까?c) 자바어?c) 자바어? (0) | 2022.09.27 |